summaryrefslogtreecommitdiffstats
path: root/src/multimedia/qml/qmlmediabase.cpp
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den-exter@nokia.com>2010-02-05 01:16:31 (GMT)
committerAndrew den Exter <andrew.den-exter@nokia.com>2010-02-05 01:16:31 (GMT)
commit1b9b3fc62da13adc667890a84c61cc873fb941c0 (patch)
tree3034c455575fc51fe3ae4096ac954848beafbd0a /src/multimedia/qml/qmlmediabase.cpp
parent5fae580d87add7fab16a9bda20bcc5e42df02879 (diff)
downloadQt-1b9b3fc62da13adc667890a84c61cc873fb941c0.zip
Qt-1b9b3fc62da13adc667890a84c61cc873fb941c0.tar.gz
Qt-1b9b3fc62da13adc667890a84c61cc873fb941c0.tar.bz2
Make the paused property of the QML media elements indepent of playing.
Diffstat (limited to 'src/multimedia/qml/qmlmediabase.cpp')
-rw-r--r--src/multimedia/qml/qmlmediabase.cpp65
1 files changed, 41 insertions, 24 deletions
diff --git a/src/multimedia/qml/qmlmediabase.cpp b/src/multimedia/qml/qmlmediabase.cpp
index 17ec8a6..17be240 100644
--- a/src/multimedia/qml/qmlmediabase.cpp
+++ b/src/multimedia/qml/qmlmediabase.cpp
@@ -132,28 +132,33 @@ private:
void QmlMediaBase::_q_stateChanged(QMediaPlayer::State state)
{
if (state != m_state) {
- QMediaPlayer::State oldState = state;
+ QMediaPlayer::State oldState = m_state;
m_state = state;
- switch (state) {
- case QMediaPlayer::PlayingState:
- if (oldState == QMediaPlayer::StoppedState)
- emit started();
- else if (oldState == QMediaPlayer::PausedState)
- emit resumed();
- break;
- case QMediaPlayer::PausedState:
- emit paused();
- case QMediaPlayer::StoppedState:
+ if (state == QMediaPlayer::StoppedState) {
emit stopped();
- break;
- default:
- break;
+ emit playingChanged();
+ } else if (oldState == QMediaPlayer::StoppedState) {
+ emit started();
+ emit playingChanged();
+ } else if (oldState == QMediaPlayer::PausedState) {
+ m_paused = false;
+
+ emit resumed();
+ emit pausedChanged();
}
- emit playingChanged();
- emit pausedChanged();
+ if (state == m_state && state == QMediaPlayer::PausedState) {
+ bool wasPaused = m_paused;
+
+ m_paused = true;
+
+ emit paused();
+
+ if (!wasPaused)
+ emit pausedChanged();
+ }
if (m_state == QMediaPlayer::PlayingState
|| m_status == QMediaPlayer::BufferingMedia
@@ -218,6 +223,7 @@ QmlMediaBase::QmlMediaBase()
, m_state(QMediaPlayer::StoppedState)
, m_status(QMediaPlayer::NoMedia)
, m_error(QMediaPlayer::NoError)
+ , m_paused(false)
{
}
@@ -312,23 +318,34 @@ bool QmlMediaBase::isPlaying() const
void QmlMediaBase::setPlaying(bool playing)
{
- if (playing && m_state == QMediaPlayer::StoppedState)
- m_playerControl->play();
- else if (!playing)
+ if (playing && m_state == QMediaPlayer::StoppedState) {
+ if (m_paused)
+ m_playerControl->pause();
+ else
+ m_playerControl->play();
+ } else if (!playing) {
m_playerControl->stop();
+ }
}
bool QmlMediaBase::isPaused() const
{
- return m_state == QMediaPlayer::PausedState;
+ return m_paused;
}
void QmlMediaBase::setPaused(bool paused)
{
- if (paused && m_state == QMediaPlayer::PlayingState)
- m_playerControl->pause();
- if (!paused && m_state == QMediaPlayer::PausedState)
- m_playerControl->play();
+ if (m_paused != paused) {
+ if (paused && m_state == QMediaPlayer::PlayingState) {
+ m_playerControl->pause();
+ } else if (!paused && m_state == QMediaPlayer::PausedState) {
+ m_playerControl->play();
+ } else {
+ m_paused = paused;
+
+ emit pausedChanged();
+ }
+ }
}
int QmlMediaBase::duration() const