diff options
-rw-r--r-- | src/imports/multimedia/qdeclarativeaudio.cpp | 44 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativeaudio_p.h | 5 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativemediabase.cpp | 247 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativemediabase_p.h | 17 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativevideo.cpp | 64 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativevideo_p.h | 5 | ||||
-rw-r--r-- | tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp | 94 | ||||
-rw-r--r-- | tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp | 38 |
8 files changed, 364 insertions, 150 deletions
diff --git a/src/imports/multimedia/qdeclarativeaudio.cpp b/src/imports/multimedia/qdeclarativeaudio.cpp index 40133ee..dfe125f 100644 --- a/src/imports/multimedia/qdeclarativeaudio.cpp +++ b/src/imports/multimedia/qdeclarativeaudio.cpp @@ -77,7 +77,6 @@ void QDeclarativeAudio::_q_error(int errorCode, const QString &errorString) QDeclarativeAudio::QDeclarativeAudio(QObject *parent) : QObject(parent) { - setObject(this); } QDeclarativeAudio::~QDeclarativeAudio() @@ -94,13 +93,12 @@ QDeclarativeAudio::~QDeclarativeAudio() */ void QDeclarativeAudio::play() -{ - m_playerControl->play(); +{ + if (m_playerControl == 0) + return; - if (m_paused) { - m_paused = false; - emit pausedChanged(); - } + setPaused(false); + setPlaying(true); } /*! @@ -113,12 +111,11 @@ void QDeclarativeAudio::play() void QDeclarativeAudio::pause() { - m_playerControl->pause(); + if (m_playerControl == 0) + return; - if (!m_paused && m_state == QMediaPlayer::PausedState) { - m_paused = true; - emit pausedChanged(); - } + setPaused(true); + setPlaying(true); } /*! @@ -131,12 +128,11 @@ void QDeclarativeAudio::pause() void QDeclarativeAudio::stop() { - m_playerControl->stop(); + if (m_playerControl == 0) + return; - if (m_paused) { - m_paused = false; - emit pausedChanged(); - } + setPlaying(false); + setPaused(false); } /*! @@ -146,6 +142,14 @@ void QDeclarativeAudio::stop() */ /*! + \qmlproperty url Audio:autoLoad + + This property indicates if loading of media should begin immediately. + + Defaults to true, if false media will not be loaded until playback is started. +*/ + +/*! \qmlproperty bool Audio::playing This property holds whether the media is playing. @@ -307,6 +311,12 @@ QDeclarativeAudio::Error QDeclarativeAudio::error() const return Error(m_error); } +void QDeclarativeAudio::componentComplete() +{ + setObject(this); +} + + /*! \qmlproperty string Audio::errorString diff --git a/src/imports/multimedia/qdeclarativeaudio_p.h b/src/imports/multimedia/qdeclarativeaudio_p.h index 9881dbc..24276ea 100644 --- a/src/imports/multimedia/qdeclarativeaudio_p.h +++ b/src/imports/multimedia/qdeclarativeaudio_p.h @@ -69,6 +69,7 @@ class QDeclarativeAudio : public QObject, public QDeclarativeMediaBase, public Q { Q_OBJECT Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) + Q_PROPERTY(bool autoLoad READ isAutoLoad WRITE setAutoLoad NOTIFY autoLoadChanged) Q_PROPERTY(bool playing READ isPlaying WRITE setPlaying NOTIFY playingChanged) Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged) Q_PROPERTY(Status status READ status NOTIFY statusChanged) @@ -114,6 +115,8 @@ public: Status status() const; Error error() const; + void componentComplete(); + public Q_SLOTS: void play(); void pause(); @@ -121,7 +124,7 @@ public Q_SLOTS: Q_SIGNALS: void sourceChanged(); - + void autoLoadChanged(); void playingChanged(); void pausedChanged(); diff --git a/src/imports/multimedia/qdeclarativemediabase.cpp b/src/imports/multimedia/qdeclarativemediabase.cpp index 8e87e44..5bad969 100644 --- a/src/imports/multimedia/qdeclarativemediabase.cpp +++ b/src/imports/multimedia/qdeclarativemediabase.cpp @@ -131,43 +131,56 @@ private: void QDeclarativeMediaBase::_q_stateChanged(QMediaPlayer::State state) { - if (state != m_state) { - QMediaPlayer::State oldState = m_state; + if (m_state == state) + return; - m_state = state; - - if (state == QMediaPlayer::StoppedState) { + switch (state) { + case QMediaPlayer::StoppedState: { emit stopped(); - emit playingChanged(); - } else if (oldState == QMediaPlayer::StoppedState) { - emit started(); - emit playingChanged(); - } else if (oldState == QMediaPlayer::PausedState) { - m_paused = false; - - emit resumed(); - emit pausedChanged(); - } - - if (state == m_state && state == QMediaPlayer::PausedState) { - bool wasPaused = m_paused; - - m_paused = true; + if (m_playing) { + m_playing = false; + emit playingChanged(); + } + } + break; + case QMediaPlayer::PausedState: { emit paused(); - if (!wasPaused) + if (!m_paused) { + m_paused = true; emit pausedChanged(); - } + } - if (m_state == QMediaPlayer::PlayingState - || m_status == QMediaPlayer::BufferingMedia - || m_status == QMediaPlayer::StalledMedia) { - m_animation->start(); - } else { - m_animation->stop(); + if (m_state == QMediaPlayer::StoppedState) + emit started(); + } + break; + case QMediaPlayer::PlayingState: { + if (m_state == QMediaPlayer::PausedState) + emit resumed(); + else + emit started(); + + if (m_paused) { + m_paused = false; + emit pausedChanged(); + } } + break; } + + // Check + if (state == QMediaPlayer::PlayingState + || m_status == QMediaPlayer::BufferingMedia + || m_status == QMediaPlayer::StalledMedia) { + m_animation->start(); + } + else { + m_animation->stop(); + } + + m_state = state; } void QDeclarativeMediaBase::_q_mediaStatusChanged(QMediaPlayer::MediaStatus status) @@ -213,7 +226,15 @@ void QDeclarativeMediaBase::_q_metaDataChanged() } QDeclarativeMediaBase::QDeclarativeMediaBase() - : m_mediaService(0) + : m_paused(false) + , m_playing(false) + , m_autoLoad(true) + , m_loaded(false) + , m_muted(false) + , m_position(0) + , m_volume(1.0) + , m_playbackRate(1.0) + , m_mediaService(0) , m_playerControl(0) , m_mediaObject(0) , m_mediaProvider(0) @@ -222,8 +243,7 @@ QDeclarativeMediaBase::QDeclarativeMediaBase() , m_animation(0) , m_state(QMediaPlayer::StoppedState) , m_status(QMediaPlayer::NoMedia) - , m_error(QMediaPlayer::NoError) - , m_paused(false) + , m_error(QMediaPlayer::ServiceMissingError) { } @@ -280,9 +300,8 @@ void QDeclarativeMediaBase::setObject(QObject *object) object, SLOT(_q_error(int,QString))); m_animation = new QDeclarativeMediaBaseAnimation(this); + m_error = QMediaPlayer::NoError; } else { - m_error = QMediaPlayer::ServiceMissingError; - m_playerControl = new QDeclarativeMediaBasePlayerControl(object); } @@ -292,40 +311,97 @@ void QDeclarativeMediaBase::setObject(QObject *object) QObject::connect(m_metaDataControl, SIGNAL(metaDataChanged()), object, SLOT(_q_metaDataChanged())); } + + // Init + m_playerControl->setVolume(m_volume * 100); + m_playerControl->setMuted(m_muted); + m_playerControl->setPlaybackRate(m_playbackRate); + + if (!m_source.isEmpty() && (m_autoLoad || m_playing)) // Override autoLoad if playing set + m_playerControl->setMedia(m_source, 0); + + if (m_paused) + m_playerControl->pause(); + else if (m_playing) + m_playerControl->play(); + + if ((m_playing || m_paused) && m_position > 0) + m_playerControl->setPosition(m_position); } + +// Properties + QUrl QDeclarativeMediaBase::source() const { - return m_playerControl->media().canonicalUrl(); + return m_source; } void QDeclarativeMediaBase::setSource(const QUrl &url) { - if (m_error != QMediaPlayer::ServiceMissingError && m_error != QMediaPlayer::NoError) { - m_error = QMediaPlayer::NoError; - m_errorString = QString(); + if (url == m_source) + return; - emit errorChanged(); + m_source = url; + m_loaded = false; + if (m_playerControl != 0 && m_autoLoad) { + if (m_error != QMediaPlayer::ServiceMissingError && m_error != QMediaPlayer::NoError) { + m_error = QMediaPlayer::NoError; + m_errorString = QString(); + + emit errorChanged(); + } + + m_playerControl->setMedia(m_source, 0); + m_loaded = true; } + else + emit sourceChanged(); +} - m_playerControl->setMedia(QMediaContent(url), 0); +bool QDeclarativeMediaBase::isAutoLoad() const +{ + return m_autoLoad; +} + +void QDeclarativeMediaBase::setAutoLoad(bool autoLoad) +{ + if (m_autoLoad == autoLoad) + return; + + m_autoLoad = autoLoad; + emit autoLoadChanged(); } bool QDeclarativeMediaBase::isPlaying() const { - return m_state != QMediaPlayer::StoppedState; + return m_playing; } void QDeclarativeMediaBase::setPlaying(bool playing) { - if (playing && m_state == QMediaPlayer::StoppedState) { - if (m_paused) - m_playerControl->pause(); - else - m_playerControl->play(); - } else if (!playing) { - m_playerControl->stop(); + if (playing == m_playing) + return; + + m_playing = playing; + if (m_playerControl != 0) { + if (m_playing) { + if (!m_autoLoad && !m_loaded) { + m_playerControl->setMedia(m_source, 0); + m_playerControl->setPosition(m_position); + m_loaded = true; + } + + if (!m_paused) + m_playerControl->play(); + else + m_playerControl->pause(); + } + else if (m_state != QMediaPlayer::StoppedState) + m_playerControl->stop(); } + + emit playingChanged(); } bool QDeclarativeMediaBase::isPaused() const @@ -335,73 +411,112 @@ bool QDeclarativeMediaBase::isPaused() const void QDeclarativeMediaBase::setPaused(bool paused) { - if (m_paused != paused) { - if (paused && m_state == QMediaPlayer::PlayingState) { + if (m_paused == paused) + return; + + m_paused = paused; + if (m_playerControl != 0) { + if (!m_autoLoad && !m_loaded) { + m_playerControl->setMedia(m_source, 0); + m_playerControl->setPosition(m_position); + m_loaded = true; + } + + if (m_paused && m_state == QMediaPlayer::PlayingState) { m_playerControl->pause(); - } else if (!paused && m_state == QMediaPlayer::PausedState) { + } + else if (!m_paused && m_playing) { m_playerControl->play(); - } else { - m_paused = paused; - - emit pausedChanged(); } } + + emit pausedChanged(); } int QDeclarativeMediaBase::duration() const { - return m_playerControl->duration(); + return m_playerControl == 0 ? 0 : m_playerControl->duration(); } int QDeclarativeMediaBase::position() const { - return m_playerControl->position(); - + return m_playerControl == 0 ? m_position : m_playerControl->position(); } void QDeclarativeMediaBase::setPosition(int position) { - m_playerControl->setPosition(position); + if (m_position == position) + return; + + m_position = position; + if (m_playerControl != 0) + m_playerControl->setPosition(m_position); + else + emit positionChanged(); } qreal QDeclarativeMediaBase::volume() const { - return qreal(m_playerControl->volume()) / 100; + return m_playerControl == 0 ? m_volume : qreal(m_playerControl->volume()) / 100; } void QDeclarativeMediaBase::setVolume(qreal volume) { - m_playerControl->setVolume(qRound(volume * 100)); + if (m_volume == volume) + return; + + m_volume = volume; + + if (m_playerControl != 0) + m_playerControl->setVolume(qRound(volume * 100)); + else + emit volumeChanged(); } bool QDeclarativeMediaBase::isMuted() const { - return m_playerControl->isMuted(); + return m_playerControl == 0 ? m_muted : m_playerControl->isMuted(); } void QDeclarativeMediaBase::setMuted(bool muted) { - m_playerControl->setMuted(muted); + if (m_muted == muted) + return; + + m_muted = muted; + + if (m_playerControl != 0) + m_playerControl->setMuted(muted); + else + emit mutedChanged(); } qreal QDeclarativeMediaBase::bufferProgress() const { - return qreal(m_playerControl->bufferStatus()) / 100; + return m_playerControl == 0 ? 0 : qreal(m_playerControl->bufferStatus()) / 100; } bool QDeclarativeMediaBase::isSeekable() const { - return m_playerControl->isSeekable(); + return m_playerControl == 0 ? false : m_playerControl->isSeekable(); } qreal QDeclarativeMediaBase::playbackRate() const { - return m_playerControl->playbackRate(); + return m_playbackRate; } void QDeclarativeMediaBase::setPlaybackRate(qreal rate) { - m_playerControl->setPlaybackRate(rate); + if (m_playbackRate == rate) + return; + + m_playbackRate = rate; + + if (m_playerControl != 0) + m_playerControl->setPlaybackRate(m_playbackRate); + else + emit playbackRateChanged(); } QString QDeclarativeMediaBase::errorString() const diff --git a/src/imports/multimedia/qdeclarativemediabase_p.h b/src/imports/multimedia/qdeclarativemediabase_p.h index b40e84e..43df54d 100644 --- a/src/imports/multimedia/qdeclarativemediabase_p.h +++ b/src/imports/multimedia/qdeclarativemediabase_p.h @@ -76,6 +76,9 @@ public: QUrl source() const; void setSource(const QUrl &url); + bool isAutoLoad() const; + void setAutoLoad(bool autoLoad); + bool isPlaying() const; void setPlaying(bool playing); @@ -107,13 +110,15 @@ public: void _q_metaDataChanged(); + void componentComplete(); + protected: void shutdown(); void setObject(QObject *object); virtual void sourceChanged() = 0; - + virtual void autoLoadChanged() = 0; virtual void playingChanged() = 0; virtual void pausedChanged() = 0; @@ -143,6 +148,14 @@ protected: virtual void errorChanged() = 0; + bool m_paused; + bool m_playing; + bool m_autoLoad; + bool m_loaded; + bool m_muted; + int m_position; + qreal m_volume; + qreal m_playbackRate; QMediaService *m_mediaService; QMediaPlayerControl *m_playerControl; @@ -155,8 +168,8 @@ protected: QMediaPlayer::State m_state; QMediaPlayer::MediaStatus m_status; QMediaPlayer::Error m_error; - bool m_paused; QString m_errorString; + QUrl m_source; friend class QDeclarativeMediaBaseAnimation; }; diff --git a/src/imports/multimedia/qdeclarativevideo.cpp b/src/imports/multimedia/qdeclarativevideo.cpp index 80c0ba4..6aff9bd 100644 --- a/src/imports/multimedia/qdeclarativevideo.cpp +++ b/src/imports/multimedia/qdeclarativevideo.cpp @@ -100,17 +100,6 @@ QDeclarativeVideo::QDeclarativeVideo(QDeclarativeItem *parent) m_graphicsItem = new QGraphicsVideoItem(this); connect(m_graphicsItem, SIGNAL(nativeSizeChanged(QSizeF)), this, SLOT(_q_nativeSizeChanged(QSizeF))); - - setObject(this); - - if (m_mediaService) { - connect(m_playerControl, SIGNAL(audioAvailableChanged(bool)), - this, SIGNAL(hasAudioChanged())); - connect(m_playerControl, SIGNAL(videoAvailableChanged(bool)), - this, SIGNAL(hasVideoChanged())); - - m_graphicsItem->setMediaObject(m_mediaObject); - } } QDeclarativeVideo::~QDeclarativeVideo() @@ -127,6 +116,14 @@ QDeclarativeVideo::~QDeclarativeVideo() */ /*! + \qmlproperty url Audio:autoLoad + + This property indicates if loading of media should begin immediately. + + Defaults to true, if false media will not be loaded until playback is started. +*/ + +/*! \qmlproperty bool Video::playing This property holds whether the media is playing. @@ -253,7 +250,7 @@ QDeclarativeVideo::Status QDeclarativeVideo::status() const bool QDeclarativeVideo::hasAudio() const { - return m_playerControl->isAudioAvailable(); + return m_playerControl == 0 ? false : m_playerControl->isAudioAvailable(); } /*! @@ -264,7 +261,7 @@ bool QDeclarativeVideo::hasAudio() const bool QDeclarativeVideo::hasVideo() const { - return m_playerControl->isVideoAvailable(); + return m_playerControl == 0 ? false : m_playerControl->isVideoAvailable(); } /*! @@ -356,12 +353,11 @@ void QDeclarativeVideo::setFillMode(FillMode mode) void QDeclarativeVideo::play() { - m_playerControl->play(); + if (m_playerControl == 0) + return; - if (m_paused) { - m_paused = false; - emit pausedChanged(); - } + setPaused(false); + setPlaying(true); } /*! @@ -374,12 +370,11 @@ void QDeclarativeVideo::play() void QDeclarativeVideo::pause() { - m_playerControl->pause(); + if (m_playerControl == 0) + return; - if (!m_paused && m_state == QMediaPlayer::PausedState) { - m_paused = true; - emit pausedChanged(); - } + setPaused(true); + setPlaying(true); } /*! @@ -392,12 +387,11 @@ void QDeclarativeVideo::pause() void QDeclarativeVideo::stop() { - m_playerControl->stop(); + if (m_playerControl == 0) + return; - if (m_paused) { - m_paused = false; - emit pausedChanged(); - } + setPlaying(false); + setPaused(false); } void QDeclarativeVideo::paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) @@ -411,6 +405,20 @@ void QDeclarativeVideo::geometryChanged(const QRectF &newGeometry, const QRectF QDeclarativeItem::geometryChanged(newGeometry, oldGeometry); } +void QDeclarativeVideo::componentComplete() +{ + setObject(this); + + if (m_mediaService) { + connect(m_playerControl, SIGNAL(audioAvailableChanged(bool)), + this, SIGNAL(hasAudioChanged())); + connect(m_playerControl, SIGNAL(videoAvailableChanged(bool)), + this, SIGNAL(hasVideoChanged())); + + m_graphicsItem->setMediaObject(m_mediaObject); + } +} + QT_END_NAMESPACE // *************************************** diff --git a/src/imports/multimedia/qdeclarativevideo_p.h b/src/imports/multimedia/qdeclarativevideo_p.h index fb13519..29e1090 100644 --- a/src/imports/multimedia/qdeclarativevideo_p.h +++ b/src/imports/multimedia/qdeclarativevideo_p.h @@ -73,6 +73,7 @@ class QDeclarativeVideo : public QDeclarativeItem, public QDeclarativeMediaBase { Q_OBJECT Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) + Q_PROPERTY(bool autoLoad READ isAutoLoad WRITE setAutoLoad NOTIFY autoLoadChanged) Q_PROPERTY(bool playing READ isPlaying WRITE setPlaying NOTIFY playingChanged) Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged) Q_PROPERTY(Status status READ status NOTIFY statusChanged) @@ -136,6 +137,8 @@ public: void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); + void componentComplete(); + public Q_SLOTS: void play(); void pause(); @@ -143,7 +146,7 @@ public Q_SLOTS: Q_SIGNALS: void sourceChanged(); - + void autoLoadChanged(); void playingChanged(); void pausedChanged(); diff --git a/tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp b/tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp index d750c69..a215bd5 100644 --- a/tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp +++ b/tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp @@ -61,6 +61,7 @@ private slots: void nullService(); void source(); + void autoLoad(); void playing(); void paused(); void duration(); @@ -298,11 +299,12 @@ void tst_QmlAudio::nullPlayerControl() QCOMPARE(audio.source(), QUrl()); audio.setSource(QUrl("http://example.com")); - QCOMPARE(audio.source(), QUrl()); + QCOMPARE(audio.source(), QUrl("http://example.com")); QCOMPARE(audio.isPlaying(), false); audio.setPlaying(true); - QCOMPARE(audio.isPlaying(), false); + QCOMPARE(audio.isPlaying(), true); + audio.setPlaying(false); audio.play(); QCOMPARE(audio.isPlaying(), false); @@ -316,15 +318,15 @@ void tst_QmlAudio::nullPlayerControl() QCOMPARE(audio.position(), 0); audio.setPosition(10000); - QCOMPARE(audio.position(), 0); + QCOMPARE(audio.position(), 10000); - QCOMPARE(audio.volume(), qreal(0)); - audio.setVolume(50); - QCOMPARE(audio.volume(), qreal(0)); + QCOMPARE(audio.volume(), qreal(1.0)); + audio.setVolume(0.5); + QCOMPARE(audio.volume(), qreal(0.5)); QCOMPARE(audio.isMuted(), false); audio.setMuted(true); - QCOMPARE(audio.isMuted(), false); + QCOMPARE(audio.isMuted(), true); QCOMPARE(audio.bufferProgress(), qreal(0)); @@ -357,11 +359,12 @@ void tst_QmlAudio::nullService() QCOMPARE(audio.source(), QUrl()); audio.setSource(QUrl("http://example.com")); - QCOMPARE(audio.source(), QUrl()); + QCOMPARE(audio.source(), QUrl("http://example.com")); QCOMPARE(audio.isPlaying(), false); audio.setPlaying(true); - QCOMPARE(audio.isPlaying(), false); + QCOMPARE(audio.isPlaying(), true); + audio.setPlaying(false); audio.play(); QCOMPARE(audio.isPlaying(), false); @@ -375,15 +378,15 @@ void tst_QmlAudio::nullService() QCOMPARE(audio.position(), 0); audio.setPosition(10000); - QCOMPARE(audio.position(), 0); + QCOMPARE(audio.position(), 10000); - QCOMPARE(audio.volume(), qreal(0)); - audio.setVolume(50); - QCOMPARE(audio.volume(), qreal(0)); + QCOMPARE(audio.volume(), qreal(1.0)); + audio.setVolume(0.5); + QCOMPARE(audio.volume(), qreal(0.5)); QCOMPARE(audio.isMuted(), false); audio.setMuted(true); - QCOMPARE(audio.isMuted(), false); + QCOMPARE(audio.isMuted(), true); QCOMPARE(audio.bufferProgress(), qreal(0)); @@ -408,6 +411,7 @@ void tst_QmlAudio::source() QtTestMediaServiceProvider provider; QDeclarativeAudio audio; + audio.componentComplete(); QSignalSpy spy(&audio, SIGNAL(sourceChanged())); @@ -427,6 +431,33 @@ void tst_QmlAudio::source() QCOMPARE(spy.count(), 3); } +void tst_QmlAudio::autoLoad() +{ + QtTestMediaServiceProvider provider; + QDeclarativeAudio audio; + audio.componentComplete(); + + QSignalSpy spy(&audio, SIGNAL(autoLoadChanged())); + + QCOMPARE(audio.isAutoLoad(), true); + + audio.setAutoLoad(false); + QCOMPARE(audio.isAutoLoad(), false); + QCOMPARE(spy.count(), 1); + + audio.setSource(QUrl("http://example.com")); + QCOMPARE(audio.source(), QUrl("http://example.com")); + audio.play(); + QCOMPARE(audio.isPlaying(), true); + audio.stop(); + + audio.setAutoLoad(true); + audio.setSource(QUrl("http://example.com")); + audio.setPaused(true); + QCOMPARE(spy.count(), 2); + QCOMPARE(audio.isPaused(), true); +} + void tst_QmlAudio::playing() { QtTestMediaServiceProvider provider; @@ -440,6 +471,8 @@ void tst_QmlAudio::playing() int started = 0; int stopped = 0; + audio.componentComplete(); + QCOMPARE(audio.isPlaying(), false); // setPlaying(true) when stopped. @@ -533,6 +566,8 @@ void tst_QmlAudio::paused() int resumed = 0; int stopped = 0; + audio.componentComplete(); + QCOMPARE(audio.isPlaying(), false); QCOMPARE(audio.isPaused(), false); @@ -806,6 +841,8 @@ void tst_QmlAudio::duration() QtTestMediaServiceProvider provider; QDeclarativeAudio audio; + audio.componentComplete(); + QSignalSpy spy(&audio, SIGNAL(durationChanged())); QCOMPARE(audio.duration(), 0); @@ -832,6 +869,7 @@ void tst_QmlAudio::position() { QtTestMediaServiceProvider provider; QDeclarativeAudio audio; + audio.componentComplete(); QSignalSpy spy(&audio, SIGNAL(positionChanged())); @@ -853,32 +891,33 @@ void tst_QmlAudio::position() audio.setPosition(-5403); QCOMPARE(audio.position(), -5403); QCOMPARE(provider.playerControl()->position(), qint64(-5403)); - QCOMPARE(spy.count(), 3); + QCOMPARE(spy.count(), 2); // Check the signal change signal is emitted if the change originates from the media service. provider.playerControl()->setPosition(0); QCOMPARE(audio.position(), 0); - QCOMPARE(spy.count(), 4); + QCOMPARE(spy.count(), 3); connect(&audio, SIGNAL(positionChanged()), &QTestEventLoop::instance(), SLOT(exitLoop())); provider.playerControl()->updateState(QMediaPlayer::PlayingState); QTestEventLoop::instance().enterLoop(1); - QVERIFY(spy.count() > 4 && spy.count() < 7); // 5 or 6 + QVERIFY(spy.count() > 3 && spy.count() < 6); // 4 or 5 provider.playerControl()->updateState(QMediaPlayer::PausedState); QTestEventLoop::instance().enterLoop(1); - QVERIFY(spy.count() < 7); + QVERIFY(spy.count() < 6); } void tst_QmlAudio::volume() { QtTestMediaServiceProvider provider; QDeclarativeAudio audio; + audio.componentComplete(); QSignalSpy spy(&audio, SIGNAL(volumeChanged())); - QCOMPARE(audio.volume(), qreal(0.5)); + QCOMPARE(audio.volume(), qreal(1.0)); audio.setVolume(0.7); QCOMPARE(audio.volume(), qreal(0.7)); @@ -888,17 +927,18 @@ void tst_QmlAudio::volume() audio.setVolume(0.7); QCOMPARE(audio.volume(), qreal(0.7)); QCOMPARE(provider.playerControl()->volume(), 70); - QCOMPARE(spy.count(), 2); + QCOMPARE(spy.count(), 1); provider.playerControl()->setVolume(30); QCOMPARE(audio.volume(), qreal(0.3)); - QCOMPARE(spy.count(), 3); + QCOMPARE(spy.count(), 2); } void tst_QmlAudio::muted() { QtTestMediaServiceProvider provider; QDeclarativeAudio audio; + audio.componentComplete(); QSignalSpy spy(&audio, SIGNAL(mutedChanged())); @@ -924,6 +964,8 @@ void tst_QmlAudio::bufferProgress() QtTestMediaServiceProvider provider; QDeclarativeAudio audio; + audio.componentComplete(); + QSignalSpy spy(&audio, SIGNAL(bufferProgressChanged())); QCOMPARE(audio.bufferProgress(), qreal(0.0)); @@ -957,6 +999,8 @@ void tst_QmlAudio::seekable() QtTestMediaServiceProvider provider; QDeclarativeAudio audio; + audio.componentComplete(); + QSignalSpy spy(&audio, SIGNAL(seekableChanged())); QCOMPARE(audio.isSeekable(), false); @@ -979,6 +1023,8 @@ void tst_QmlAudio::playbackRate() QtTestMediaServiceProvider provider; QDeclarativeAudio audio; + audio.componentComplete(); + QSignalSpy spy(&audio, SIGNAL(playbackRateChanged())); QCOMPARE(audio.playbackRate(), qreal(1.0)); @@ -1003,6 +1049,8 @@ void tst_QmlAudio::status() QtTestMediaServiceProvider provider; QDeclarativeAudio audio; + audio.componentComplete(); + QSignalSpy statusChangedSpy(&audio, SIGNAL(statusChanged())); QSignalSpy loadedSpy(&audio, SIGNAL(loaded())); QSignalSpy bufferingSpy(&audio, SIGNAL(buffering())); @@ -1141,6 +1189,8 @@ void tst_QmlAudio::metaData() QtTestMediaServiceProvider provider; QDeclarativeAudio audio; + audio.componentComplete(); + QSignalSpy spy(&audio, SIGNAL(__metaDataChanged())); const int index = audio.metaObject()->indexOfProperty(propertyName.constData()); @@ -1166,6 +1216,8 @@ void tst_QmlAudio::error() QtTestMediaServiceProvider provider; QDeclarativeAudio audio; + audio.componentComplete(); + QSignalSpy errorSpy(&audio, SIGNAL(error(QDeclarativeAudio::Error,QString))); QSignalSpy errorChangedSpy(&audio, SIGNAL(errorChanged())); diff --git a/tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp b/tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp index 5fd3675..56dce28 100644 --- a/tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp +++ b/tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp @@ -304,11 +304,12 @@ void tst_QmlGraphicsVideo::nullPlayerControl() QCOMPARE(video.source(), QUrl()); video.setSource(QUrl("http://example.com")); - QCOMPARE(video.source(), QUrl()); + QCOMPARE(video.source(), QUrl("http://example.com")); QCOMPARE(video.isPlaying(), false); video.setPlaying(true); - QCOMPARE(video.isPlaying(), false); + QCOMPARE(video.isPlaying(), true); + video.setPlaying(false); video.play(); QCOMPARE(video.isPlaying(), false); @@ -322,15 +323,15 @@ void tst_QmlGraphicsVideo::nullPlayerControl() QCOMPARE(video.position(), 0); video.setPosition(10000); - QCOMPARE(video.position(), 0); + QCOMPARE(video.position(), 10000); - QCOMPARE(video.volume(), qreal(0)); - video.setVolume(50); - QCOMPARE(video.volume(), qreal(0)); + QCOMPARE(video.volume(), qreal(1.0)); + video.setVolume(0.5); + QCOMPARE(video.volume(), qreal(0.5)); QCOMPARE(video.isMuted(), false); video.setMuted(true); - QCOMPARE(video.isMuted(), false); + QCOMPARE(video.isMuted(), true); QCOMPARE(video.bufferProgress(), qreal(0)); @@ -354,11 +355,12 @@ void tst_QmlGraphicsVideo::nullService() QCOMPARE(video.source(), QUrl()); video.setSource(QUrl("http://example.com")); - QCOMPARE(video.source(), QUrl()); + QCOMPARE(video.source(), QUrl("http://example.com")); QCOMPARE(video.isPlaying(), false); video.setPlaying(true); - QCOMPARE(video.isPlaying(), false); + QCOMPARE(video.isPlaying(), true); + video.setPlaying(false); video.play(); QCOMPARE(video.isPlaying(), false); @@ -372,15 +374,15 @@ void tst_QmlGraphicsVideo::nullService() QCOMPARE(video.position(), 0); video.setPosition(10000); - QCOMPARE(video.position(), 0); + QCOMPARE(video.position(), 10000); - QCOMPARE(video.volume(), qreal(0)); - video.setVolume(50); - QCOMPARE(video.volume(), qreal(0)); + QCOMPARE(video.volume(), qreal(1.0)); + video.setVolume(0.5); + QCOMPARE(video.volume(), qreal(0.5)); QCOMPARE(video.isMuted(), false); video.setMuted(true); - QCOMPARE(video.isMuted(), false); + QCOMPARE(video.isMuted(), true); QCOMPARE(video.bufferProgress(), qreal(0)); @@ -404,6 +406,7 @@ void tst_QmlGraphicsVideo::playing() { QtTestMediaServiceProvider provider; QDeclarativeVideo video; + video.componentComplete(); QSignalSpy playingChangedSpy(&video, SIGNAL(playingChanged())); QSignalSpy startedSpy(&video, SIGNAL(started())); @@ -491,6 +494,7 @@ void tst_QmlGraphicsVideo::paused() { QtTestMediaServiceProvider provider; QDeclarativeVideo video; + video.componentComplete(); QSignalSpy playingChangedSpy(&video, SIGNAL(playingChanged())); QSignalSpy pausedChangedSpy(&video, SIGNAL(pausedChanged())); @@ -780,6 +784,7 @@ void tst_QmlGraphicsVideo::error() QtTestMediaServiceProvider provider; QDeclarativeVideo video; + video.componentComplete(); QSignalSpy errorSpy(&video, SIGNAL(error(QDeclarativeVideo::Error,QString))); QSignalSpy errorChangedSpy(&video, SIGNAL(errorChanged())); @@ -814,6 +819,7 @@ void tst_QmlGraphicsVideo::hasAudio() { QtTestMediaServiceProvider provider; QDeclarativeVideo video; + video.componentComplete(); QSignalSpy spy(&video, SIGNAL(hasAudioChanged())); @@ -837,6 +843,8 @@ void tst_QmlGraphicsVideo::hasVideo() QtTestMediaServiceProvider provider; QDeclarativeVideo video; + video.componentComplete(); + QSignalSpy spy(&video, SIGNAL(hasVideoChanged())); QCOMPARE(video.hasVideo(), false); @@ -858,6 +866,7 @@ void tst_QmlGraphicsVideo::fillMode() { QtTestMediaServiceProvider provider; QDeclarativeVideo video; + video.componentComplete(); QList<QGraphicsItem *> children = video.childItems(); QCOMPARE(children.count(), 1); @@ -883,6 +892,7 @@ void tst_QmlGraphicsVideo::geometry() { QtTestMediaServiceProvider provider; QDeclarativeVideo video; + video.componentComplete(); QAbstractVideoSurface *surface = provider.rendererControl()->surface(); QVERIFY(surface != 0); |