From 72fe784abcc97e13a87bccc0016a1c5f92e93d74 Mon Sep 17 00:00:00 2001 From: rouille Date: Mon, 7 Oct 2019 19:36:49 -0400 Subject: [PATCH] Video player view now call the media file dialog instead of the model --- c_plus_plus/src/steno/model/i_video_player.h | 3 +-- c_plus_plus/src/steno/model/video_player.cpp | 26 +------------------ c_plus_plus/src/steno/model/video_player.h | 3 +-- .../src/steno/view/views/playback_view.cpp | 22 +++++++++++----- .../src/steno/view/views/playback_view.h | 2 +- 5 files changed, 20 insertions(+), 36 deletions(-) diff --git a/c_plus_plus/src/steno/model/i_video_player.h b/c_plus_plus/src/steno/model/i_video_player.h index ec66a270..02baebe9 100644 --- a/c_plus_plus/src/steno/model/i_video_player.h +++ b/c_plus_plus/src/steno/model/i_video_player.h @@ -16,7 +16,7 @@ class IVideoPlayer : public QWidget public: IVideoPlayer(QWidget *parent = nullptr) : QWidget(parent) {} virtual ~IVideoPlayer() {} - virtual void openFile() = 0; + virtual void setMedia(const QUrl &url) = 0; virtual void play() = 0; virtual void setPosition(int position) = 0; virtual void setVideoOutput(QVideoWidget *videoOutput) = 0; @@ -29,7 +29,6 @@ class IVideoPlayer : public QWidget void durationChanged(qint64 duration); void volumeChanged(int volume); void errorOccured(QString error); - void setUrlCompleted(); }; } // Model diff --git a/c_plus_plus/src/steno/model/video_player.cpp b/c_plus_plus/src/steno/model/video_player.cpp index c6b86990..4e7acc8e 100644 --- a/c_plus_plus/src/steno/model/video_player.cpp +++ b/c_plus_plus/src/steno/model/video_player.cpp @@ -1,6 +1,5 @@ #include "video_player.h" -#include #include namespace Model @@ -38,32 +37,9 @@ int VideoPlayer::volume() const return m_mediaPlayer->volume(); } -void VideoPlayer::openFile() +void VideoPlayer::setMedia(const QUrl &url) { - QFileDialog fileDialog(this); - fileDialog.setAcceptMode(QFileDialog::AcceptOpen); - fileDialog.setWindowTitle(tr("Open Media File")); - - QStringList supportedMimeTypes = m_mediaPlayer->supportedMimeTypes(); - if (!supportedMimeTypes.isEmpty()) - { - fileDialog.setMimeTypeFilters(supportedMimeTypes); - } - - fileDialog.setDirectory(QStandardPaths::standardLocations(QStandardPaths::MoviesLocation).value(0, QDir::homePath())); - if (fileDialog.exec() == QDialog::Accepted) - { - setUrl(fileDialog.selectedUrls().constFirst()); - } -} - -void VideoPlayer::setUrl(const QUrl &url) -{ - setWindowFilePath(url.isLocalFile() ? url.toLocalFile() : QString()); m_mediaPlayer->setMedia(url); - - emit setUrlCompleted(); - } void VideoPlayer::play() diff --git a/c_plus_plus/src/steno/model/video_player.h b/c_plus_plus/src/steno/model/video_player.h index 3ebc6d63..1fcbe6a5 100644 --- a/c_plus_plus/src/steno/model/video_player.h +++ b/c_plus_plus/src/steno/model/video_player.h @@ -16,7 +16,7 @@ class VideoPlayer : public IVideoPlayer public: explicit VideoPlayer(QWidget *parent = nullptr); virtual ~VideoPlayer() override; - virtual void openFile() override; + virtual void setMedia(const QUrl &url) override; virtual void play() override; virtual void setPosition(int position) override; virtual void setVideoOutput(QVideoWidget *videoOutput) override; @@ -25,7 +25,6 @@ class VideoPlayer : public IVideoPlayer private: void onErrorOccured(); - void setUrl(const QUrl &url); QMediaPlayer* m_mediaPlayer; }; diff --git a/c_plus_plus/src/steno/view/views/playback_view.cpp b/c_plus_plus/src/steno/view/views/playback_view.cpp index a3e25475..ae66b2af 100644 --- a/c_plus_plus/src/steno/view/views/playback_view.cpp +++ b/c_plus_plus/src/steno/view/views/playback_view.cpp @@ -3,7 +3,9 @@ #include "model/i_video_player.h" -#include +#include +#include +#include namespace View { @@ -20,7 +22,7 @@ PlaybackView::PlaybackView(Model::IVideoPlayer &videoPlayer, QWidget *parent) m_videoPlayer.setVideoOutput(m_ui->videoWidget); - connect(m_ui->openButton, &QAbstractButton::clicked, [=]{ m_videoPlayer.openFile(); }); + connect(m_ui->openButton, &QAbstractButton::clicked, [=]{ openFile(); }); connect(m_ui->playButton, &QAbstractButton::clicked, [=]{ m_videoPlayer.play(); }); connect(m_ui->positionSlider, &QAbstractSlider::sliderMoved, [=](int position){ m_videoPlayer.setPosition(position); }); connect(m_ui->volumeSlider, &QSlider::valueChanged, [=]{ m_videoPlayer.setVolume(volume()); }); @@ -30,7 +32,6 @@ PlaybackView::PlaybackView(Model::IVideoPlayer &videoPlayer, QWidget *parent) connect(&m_videoPlayer, &Model::IVideoPlayer::durationChanged, [=](qint64 duration){ onDurationChanged(duration); }); connect(&m_videoPlayer, &Model::IVideoPlayer::volumeChanged, [=](int volume){ setVolume(volume); }); connect(&m_videoPlayer, &Model::IVideoPlayer::errorOccured, [=](QString error){ onErrorOccured(error); }); - connect(&m_videoPlayer, &Model::IVideoPlayer::setUrlCompleted, [=]{ onOpenFileAccepted(); }); } PlaybackView::~PlaybackView() @@ -67,10 +68,19 @@ void PlaybackView::onErrorOccured(QString error) m_ui->errorLabel->setText(error); } -void PlaybackView::onOpenFileAccepted() +void PlaybackView::openFile() { - m_ui->errorLabel->setText(QString()); - m_ui->playButton->setEnabled(true); + QFileDialog fileDialog(this); + fileDialog.setAcceptMode(QFileDialog::AcceptOpen); + fileDialog.setWindowTitle(tr("Open Media File")); + + fileDialog.setDirectory(QStandardPaths::standardLocations(QStandardPaths::MoviesLocation).value(0, QDir::homePath())); + if (fileDialog.exec() == QDialog::Accepted) + { + m_videoPlayer.setMedia(fileDialog.selectedUrls().constFirst()); + m_ui->errorLabel->setText(QString()); + m_ui->playButton->setEnabled(true); + } } int PlaybackView::volume() const diff --git a/c_plus_plus/src/steno/view/views/playback_view.h b/c_plus_plus/src/steno/view/views/playback_view.h index a8aaf353..ae05fc9a 100644 --- a/c_plus_plus/src/steno/view/views/playback_view.h +++ b/c_plus_plus/src/steno/view/views/playback_view.h @@ -22,9 +22,9 @@ class PlaybackView : public AbstractView void onPositionChanged(qint64 position); void onDurationChanged(qint64 duration); void onErrorOccured(QString error); - void onOpenFileAccepted(); private: + void openFile(); int volume() const; void setVolume(int);