From 516fcd10d203fb02eb067b3911fcbf507693059b Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Tue, 13 Apr 2021 12:52:28 +0200 Subject: API cleanups in QMediaPlayer Rename some methods with better names and adjust the API so that it also can be used for QML. Change-Id: Ica19675966680416fbe870808336d8fc82065bc1 Reviewed-by: Lars Knoll Reviewed-by: Doris Verria --- examples/multimediawidgets/player/player.cpp | 22 ++++++++++++---------- examples/multimediawidgets/player/player.h | 2 +- .../multimediawidgets/player/playercontrols.cpp | 4 ++-- examples/multimediawidgets/player/playercontrols.h | 6 +++--- .../videographicsitem/videoplayer.cpp | 8 ++++---- .../videographicsitem/videoplayer.h | 2 +- .../multimediawidgets/videowidget/videoplayer.cpp | 13 ++++++++----- .../multimediawidgets/videowidget/videoplayer.h | 2 +- 8 files changed, 32 insertions(+), 27 deletions(-) (limited to 'examples') diff --git a/examples/multimediawidgets/player/player.cpp b/examples/multimediawidgets/player/player.cpp index f0c48cd18..0afa721a1 100644 --- a/examples/multimediawidgets/player/player.cpp +++ b/examples/multimediawidgets/player/player.cpp @@ -87,10 +87,10 @@ Player::Player(QWidget *parent) connect(m_player, QOverload<>::of(&QMediaPlayer::metaDataChanged), this, &Player::metaDataChanged); connect(m_playlist, &QMediaPlaylist::currentIndexChanged, this, &Player::playlistPositionChanged); connect(m_player, &QMediaPlayer::mediaStatusChanged, this, &Player::statusChanged); - connect(m_player, &QMediaPlayer::bufferStatusChanged, this, &Player::bufferingProgress); - connect(m_player, &QMediaPlayer::videoAvailableChanged, this, &Player::videoAvailableChanged); - connect(m_player, QOverload::of(&QMediaPlayer::error), this, &Player::displayErrorMessage); - connect(m_player, &QMediaPlayer::stateChanged, this, &Player::stateChanged); + connect(m_player, &QMediaPlayer::bufferProgressChanged, this, &Player::bufferingProgress); + connect(m_player, &QMediaPlayer::hasVideoChanged, this, &Player::videoAvailableChanged); + connect(m_player, &QMediaPlayer::errorChanged, this, &Player::displayErrorMessage); + connect(m_player, &QMediaPlayer::playbackStateChanged, this, &Player::stateChanged); connect(m_player, &QMediaPlayer::tracksChanged, this, &Player::tracksChanged); m_playlistView = new QListView(this); @@ -164,7 +164,7 @@ Player::Player(QWidget *parent) connect(openButton, &QPushButton::clicked, this, &Player::open); PlayerControls *controls = new PlayerControls(this); - controls->setState(m_player->state()); + controls->setState(m_player->playbackState()); controls->setVolume(m_player->volume()); controls->setMuted(controls->isMuted()); @@ -178,7 +178,7 @@ Player::Player(QWidget *parent) connect(controls, &PlayerControls::changeRate, m_player, &QMediaPlayer::setPlaybackRate); connect(controls, &PlayerControls::stop, m_videoWidget, QOverload<>::of(&QVideoWidget::update)); - connect(m_player, &QMediaPlayer::stateChanged, controls, &PlayerControls::setState); + connect(m_player, &QMediaPlayer::playbackStateChanged, controls, &PlayerControls::setState); connect(m_player, &QMediaPlayer::volumeChanged, controls, &PlayerControls::setVolume); connect(m_player, &QMediaPlayer::mutedChanged, controls, &PlayerControls::setMuted); @@ -381,7 +381,7 @@ void Player::playlistPositionChanged(int currentItem) { clearHistogram(); m_playlistView->setCurrentIndex(m_playlistModel->index(currentItem, 0)); - m_player->setMedia(m_playlist->currentMedia()); + m_player->setSource(m_playlist->currentMedia()); } void Player::seek(int seconds) @@ -405,10 +405,10 @@ void Player::statusChanged(QMediaPlayer::MediaStatus status) break; case QMediaPlayer::BufferingMedia: case QMediaPlayer::BufferedMedia: - setStatusInfo(tr("Buffering %1%").arg(m_player->bufferStatus())); + setStatusInfo(tr("Buffering %1%").arg(m_player->bufferProgress())); break; case QMediaPlayer::StalledMedia: - setStatusInfo(tr("Stalled %1%").arg(m_player->bufferStatus())); + setStatusInfo(tr("Stalled %1%").arg(m_player->bufferProgress())); break; case QMediaPlayer::EndOfMedia: QApplication::alert(this); @@ -420,7 +420,7 @@ void Player::statusChanged(QMediaPlayer::MediaStatus status) } } -void Player::stateChanged(QMediaPlayer::State state) +void Player::stateChanged(QMediaPlayer::PlaybackState state) { if (state == QMediaPlayer::StoppedState) clearHistogram(); @@ -512,6 +512,8 @@ void Player::setStatusInfo(const QString &info) void Player::displayErrorMessage() { + if (m_player->error() == QMediaPlayer::NoError) + return; setStatusInfo(m_player->errorString()); } diff --git a/examples/multimediawidgets/player/player.h b/examples/multimediawidgets/player/player.h index 9ccecb891..4294e909a 100644 --- a/examples/multimediawidgets/player/player.h +++ b/examples/multimediawidgets/player/player.h @@ -100,7 +100,7 @@ private slots: void playlistPositionChanged(int); void statusChanged(QMediaPlayer::MediaStatus status); - void stateChanged(QMediaPlayer::State state); + void stateChanged(QMediaPlayer::PlaybackState state); void bufferingProgress(int progress); void videoAvailableChanged(bool available); diff --git a/examples/multimediawidgets/player/playercontrols.cpp b/examples/multimediawidgets/player/playercontrols.cpp index 3c06c01c6..671c7eaf1 100644 --- a/examples/multimediawidgets/player/playercontrols.cpp +++ b/examples/multimediawidgets/player/playercontrols.cpp @@ -111,12 +111,12 @@ PlayerControls::PlayerControls(QWidget *parent) setLayout(layout); } -QMediaPlayer::State PlayerControls::state() const +QMediaPlayer::PlaybackState PlayerControls::state() const { return m_playerState; } -void PlayerControls::setState(QMediaPlayer::State state) +void PlayerControls::setState(QMediaPlayer::PlaybackState state) { if (state != m_playerState) { m_playerState = state; diff --git a/examples/multimediawidgets/player/playercontrols.h b/examples/multimediawidgets/player/playercontrols.h index bf1f676c1..3021e4859 100644 --- a/examples/multimediawidgets/player/playercontrols.h +++ b/examples/multimediawidgets/player/playercontrols.h @@ -67,13 +67,13 @@ class PlayerControls : public QWidget public: explicit PlayerControls(QWidget *parent = nullptr); - QMediaPlayer::State state() const; + QMediaPlayer::PlaybackState state() const; int volume() const; bool isMuted() const; qreal playbackRate() const; public slots: - void setState(QMediaPlayer::State state); + void setState(QMediaPlayer::PlaybackState state); void setVolume(int volume); void setMuted(bool muted); void setPlaybackRate(float rate); @@ -95,7 +95,7 @@ private slots: void onVolumeSliderValueChanged(); private: - QMediaPlayer::State m_playerState = QMediaPlayer::StoppedState; + QMediaPlayer::PlaybackState m_playerState = QMediaPlayer::StoppedState; bool m_playerMuted = false; QAbstractButton *m_playButton = nullptr; QAbstractButton *m_stopButton = nullptr; diff --git a/examples/multimediawidgets/videographicsitem/videoplayer.cpp b/examples/multimediawidgets/videographicsitem/videoplayer.cpp index d0f5129c9..2f76f2be3 100644 --- a/examples/multimediawidgets/videographicsitem/videoplayer.cpp +++ b/examples/multimediawidgets/videographicsitem/videoplayer.cpp @@ -101,7 +101,7 @@ VideoPlayer::VideoPlayer(QWidget *parent) layout->addLayout(controlLayout); m_mediaPlayer->setVideoOutput(m_videoItem); - connect(m_mediaPlayer, &QMediaPlayer::stateChanged, + connect(m_mediaPlayer, &QMediaPlayer::playbackStateChanged, this, &VideoPlayer::mediaStateChanged); connect(m_mediaPlayer, &QMediaPlayer::positionChanged, this, &VideoPlayer::positionChanged); connect(m_mediaPlayer, &QMediaPlayer::durationChanged, this, &VideoPlayer::durationChanged); @@ -133,13 +133,13 @@ void VideoPlayer::openFile() void VideoPlayer::load(const QUrl &url) { - m_mediaPlayer->setMedia(url); + m_mediaPlayer->setSource(url); m_playButton->setEnabled(true); } void VideoPlayer::play() { - switch (m_mediaPlayer->state()) { + switch (m_mediaPlayer->playbackState()) { case QMediaPlayer::PlayingState: m_mediaPlayer->pause(); break; @@ -149,7 +149,7 @@ void VideoPlayer::play() } } -void VideoPlayer::mediaStateChanged(QMediaPlayer::State state) +void VideoPlayer::mediaStateChanged(QMediaPlayer::PlaybackState state) { switch(state) { case QMediaPlayer::PlayingState: diff --git a/examples/multimediawidgets/videographicsitem/videoplayer.h b/examples/multimediawidgets/videographicsitem/videoplayer.h index 87c20c804..9f01e8790 100644 --- a/examples/multimediawidgets/videographicsitem/videoplayer.h +++ b/examples/multimediawidgets/videographicsitem/videoplayer.h @@ -78,7 +78,7 @@ public slots: void play(); private slots: - void mediaStateChanged(QMediaPlayer::State state); + void mediaStateChanged(QMediaPlayer::PlaybackState state); void positionChanged(qint64 position); void durationChanged(qint64 duration); void setPosition(int position); diff --git a/examples/multimediawidgets/videowidget/videoplayer.cpp b/examples/multimediawidgets/videowidget/videoplayer.cpp index 4ac868730..ded52499c 100644 --- a/examples/multimediawidgets/videowidget/videoplayer.cpp +++ b/examples/multimediawidgets/videowidget/videoplayer.cpp @@ -92,11 +92,11 @@ VideoPlayer::VideoPlayer(QWidget *parent) setLayout(layout); m_mediaPlayer->setVideoOutput(videoWidget); - connect(m_mediaPlayer, &QMediaPlayer::stateChanged, + connect(m_mediaPlayer, &QMediaPlayer::playbackStateChanged, this, &VideoPlayer::mediaStateChanged); connect(m_mediaPlayer, &QMediaPlayer::positionChanged, this, &VideoPlayer::positionChanged); connect(m_mediaPlayer, &QMediaPlayer::durationChanged, this, &VideoPlayer::durationChanged); - connect(m_mediaPlayer, QOverload::of(&QMediaPlayer::error), + connect(m_mediaPlayer, &QMediaPlayer::errorChanged, this, &VideoPlayer::handleError); } @@ -118,13 +118,13 @@ void VideoPlayer::setUrl(const QUrl &url) { m_errorLabel->setText(QString()); setWindowFilePath(url.isLocalFile() ? url.toLocalFile() : QString()); - m_mediaPlayer->setMedia(url); + m_mediaPlayer->setSource(url); m_playButton->setEnabled(true); } void VideoPlayer::play() { - switch (m_mediaPlayer->state()) { + switch (m_mediaPlayer->playbackState()) { case QMediaPlayer::PlayingState: m_mediaPlayer->pause(); break; @@ -134,7 +134,7 @@ void VideoPlayer::play() } } -void VideoPlayer::mediaStateChanged(QMediaPlayer::State state) +void VideoPlayer::mediaStateChanged(QMediaPlayer::PlaybackState state) { switch(state) { case QMediaPlayer::PlayingState: @@ -163,6 +163,9 @@ void VideoPlayer::setPosition(int position) void VideoPlayer::handleError() { + if (m_mediaPlayer->error() == QMediaPlayer::NoError) + return; + m_playButton->setEnabled(false); const QString errorString = m_mediaPlayer->errorString(); QString message = "Error: "; diff --git a/examples/multimediawidgets/videowidget/videoplayer.h b/examples/multimediawidgets/videowidget/videoplayer.h index 62260d167..723df0b6c 100644 --- a/examples/multimediawidgets/videowidget/videoplayer.h +++ b/examples/multimediawidgets/videowidget/videoplayer.h @@ -75,7 +75,7 @@ public slots: void play(); private slots: - void mediaStateChanged(QMediaPlayer::State state); + void mediaStateChanged(QMediaPlayer::PlaybackState state); void positionChanged(qint64 position); void durationChanged(qint64 duration); void setPosition(int position); -- cgit v1.2.3