From 515a5fd5c89ca99d8ed4ecdc8a93917fe3f40054 Mon Sep 17 00:00:00 2001 From: Frans Englich Date: Wed, 11 Nov 2009 15:39:27 +0100 Subject: [PATCH] Pause playback on small screens when popping up dialogs. Task-number: QTBUG-5307 Reviewed-by: Gareth Stockwell (pending) --- demos/qmediaplayer/mediaplayer.cpp | 25 +++++++++++++++++++++++++ demos/qmediaplayer/mediaplayer.h | 2 ++ 2 files changed, 27 insertions(+), 0 deletions(-) diff --git a/demos/qmediaplayer/mediaplayer.cpp b/demos/qmediaplayer/mediaplayer.cpp index 8a5420f..86bf013 100644 --- a/demos/qmediaplayer/mediaplayer.cpp +++ b/demos/qmediaplayer/mediaplayer.cpp @@ -471,6 +471,11 @@ void MediaPlayer::effectChanged() void MediaPlayer::showSettingsDialog() { + const bool pausePlayback = shouldPausePlayback(); + + if (pausePlayback) + playPause(); + if (!settingsDialog) initSettingsDialog(); @@ -516,6 +521,9 @@ void MediaPlayer::showSettingsDialog() m_videoWidget->setScaleMode(oldScale); ui->audioEffectsCombo->setCurrentIndex(currentEffect); } + + if (pausePlayback) + playPause(); } void MediaPlayer::initVideoWindow() @@ -652,10 +660,27 @@ void MediaPlayer::setFile(const QString &fileName) m_MediaObject.play(); } +bool MediaPlayer::shouldPausePlayback() const +{ + // If we're running on a small screen, we want to pause the video + // when popping up dialogs. + return m_hasSmallScreen && + Phonon::PlayingState == m_MediaObject.state(); +} + void MediaPlayer::openFile() { + const bool pausePlayback = shouldPausePlayback(); + + if (pausePlayback) + playPause(); + QStringList fileNames = QFileDialog::getOpenFileNames(this, QString(), QDesktopServices::storageLocation(QDesktopServices::MusicLocation)); + + if (pausePlayback) + playPause(); + m_MediaObject.clearQueue(); if (fileNames.size() > 0) { QString fileName = fileNames[0]; diff --git a/demos/qmediaplayer/mediaplayer.h b/demos/qmediaplayer/mediaplayer.h index 08db0e5..80682c7 100644 --- a/demos/qmediaplayer/mediaplayer.h +++ b/demos/qmediaplayer/mediaplayer.h @@ -111,6 +111,8 @@ private slots: void hasVideoChanged(bool); private: + inline bool shouldPausePlayback() const; + QIcon playIcon; QIcon pauseIcon; QMenu *fileMenu; -- 1.6.4.msysgit.0