diff options
Diffstat (limited to 'tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h')
-rw-r--r-- | tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h | 46 |
1 files changed, 41 insertions, 5 deletions
diff --git a/tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h b/tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h index 6620aa763..9f4eabf38 100644 --- a/tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h +++ b/tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h @@ -36,24 +36,52 @@ #include <private/qmediaplaylistcontrol_p.h> #include <private/qmediaplaylistnavigator_p.h> +#include <private/qmedianetworkplaylistprovider_p.h> #include "mockreadonlyplaylistprovider.h" -// Hmm, read only. class MockMediaPlaylistControl : public QMediaPlaylistControl { - Q_OBJECT public: - MockMediaPlaylistControl(QObject *parent) : QMediaPlaylistControl(parent) + MockMediaPlaylistControl(bool readonly = false, QObject *parent = 0) + : QMediaPlaylistControl(parent) + , m_navigator(0) + , m_playlist(0) + , m_ownsProvider(false) + , m_readOnly(readonly) { - m_navigator = new QMediaPlaylistNavigator(new MockReadOnlyPlaylistProvider(this), this); + reset(); } ~MockMediaPlaylistControl() { } - QMediaPlaylistProvider* playlistProvider() const { return m_navigator->playlist(); } + void reset() + { + delete m_navigator; + if (m_ownsProvider) + delete m_playlist; + + if (m_readOnly) + m_playlist = new MockReadOnlyPlaylistProvider(this); + else + m_playlist = new QMediaNetworkPlaylistProvider(this); + + m_ownsProvider = true; + m_navigator = new QMediaPlaylistNavigator(m_playlist, this); + } + + void setReadOnly(bool ro) + { + if (m_readOnly == ro) + return; + + m_readOnly = ro; + reset(); + } + + QMediaPlaylistProvider* playlistProvider() const { return m_playlist; } bool setPlaylistProvider(QMediaPlaylistProvider *newProvider) { bool bMediaContentChanged = false; @@ -70,6 +98,11 @@ public: emit currentMediaChanged(newProvider->media(i)); } + if (m_ownsProvider) + delete m_playlist; + m_playlist = newProvider; + m_ownsProvider = false; + m_navigator->setPlaylist(newProvider); return true; } @@ -99,6 +132,9 @@ public: private: QMediaPlaylistNavigator *m_navigator; + QMediaPlaylistProvider *m_playlist; + bool m_ownsProvider; + bool m_readOnly; }; #endif // MOCKMEDIAPLAYLISTCONTROL_H |