diff --git a/autotests/managemediaplayercontroltest.h b/autotests/managemediaplayercontroltest.h --- a/autotests/managemediaplayercontroltest.h +++ b/autotests/managemediaplayercontroltest.h @@ -46,20 +46,9 @@ void simpleInitialCase(); - void addItemInModelCase(); - - void addItemInModelCaseV2(); - - void nextAndPreviousButtonAndRandomPlay(); - - void moveCurrentTrack(); - - void moveAnotherTrack(); - - void setCurrentTrackTest(); - - void setPlayListModelTest(); + void testPlayingCase(); + void testTracksCase(); }; #endif // MANAGEMEDIAPLAYERCONTROLTEST_H diff --git a/autotests/managemediaplayercontroltest.cpp b/autotests/managemediaplayercontroltest.cpp --- a/autotests/managemediaplayercontroltest.cpp +++ b/autotests/managemediaplayercontroltest.cpp @@ -50,704 +50,123 @@ { ManageMediaPlayerControl myControl; - QCOMPARE(myControl.playControlEnabled(), false); - QCOMPARE(myControl.skipBackwardControlEnabled(), false); - QCOMPARE(myControl.skipForwardControlEnabled(), false); - QCOMPARE(myControl.musicPlaying(), false); - QCOMPARE(myControl.playListModel(), static_cast(nullptr)); - QCOMPARE(myControl.currentTrack().isValid(), false); + QVERIFY(!myControl.playControlEnabled()); + QVERIFY(!myControl.skipBackwardControlEnabled()); + QVERIFY(!myControl.skipForwardControlEnabled()); + QVERIFY(!myControl.musicPlaying()); + QVERIFY(!myControl.currentTrack().isValid()); } -void ManageMediaPlayerControlTest::addItemInModelCase() +void ManageMediaPlayerControlTest::testPlayingCase() { - QStringListModel myPlayList; - ManageMediaPlayerControl myControl; - QCOMPARE(myControl.playControlEnabled(), false); - QCOMPARE(myControl.skipBackwardControlEnabled(), false); - QCOMPARE(myControl.skipForwardControlEnabled(), false); - QCOMPARE(myControl.musicPlaying(), false); - QCOMPARE(myControl.playListModel(), static_cast(nullptr)); - QCOMPARE(myControl.currentTrack().isValid(), false); - - QSignalSpy playControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::playControlEnabledChanged); - QSignalSpy skipBackwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipBackwardControlEnabledChanged); - QSignalSpy skipForwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipForwardControlEnabledChanged); QSignalSpy musicPlayingChangedSpy(&myControl, &ManageMediaPlayerControl::musicPlayingChanged); - QSignalSpy playListModelChangedSpy(&myControl, &ManageMediaPlayerControl::playListModelChanged); - QSignalSpy currentTrackChangedSpy(&myControl, &ManageMediaPlayerControl::currentTrackChanged); - myControl.setPlayListModel(&myPlayList); + QVERIFY(!myControl.playControlEnabled()); + QVERIFY(!myControl.skipBackwardControlEnabled()); + QVERIFY(!myControl.skipForwardControlEnabled()); + QVERIFY(!myControl.musicPlaying()); + QVERIFY(!myControl.currentTrack().isValid()); - QCOMPARE(playControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 0); - - QCOMPARE(myControl.playListModel(), &myPlayList); - - myPlayList.setStringList({QStringLiteral("tutu")}); - - QCOMPARE(playControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 0); - - myControl.setCurrentTrack(myPlayList.index(0, 0)); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.playControlEnabled(), true); - QCOMPARE(myControl.currentTrack(), QPersistentModelIndex(myPlayList.index(0, 0))); myControl.playerPlaying(); - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.musicPlaying(), true); - - QCOMPARE(myPlayList.insertRows(1, 2, {}), true); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.skipForwardControlEnabled(), true); - - QCOMPARE(myPlayList.insertRows(0, 2, {}), true); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.skipBackwardControlEnabled(), true); - - QCOMPARE(myPlayList.removeRows(3, 2, {}), true); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 2); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.skipForwardControlEnabled(), false); - - QCOMPARE(myPlayList.removeRows(0, 2, {}), true); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 2); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 2); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.skipBackwardControlEnabled(), false); - - QCOMPARE(myPlayList.removeRows(0, 1, {}), true); - - QCOMPARE(playControlEnabledChangedSpy.count(), 2); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 2); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 2); QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 2); - QCOMPARE(myControl.playControlEnabled(), false); - QCOMPARE(myControl.currentTrack().isValid(), false); + QVERIFY(myControl.musicPlaying()); - myControl.playerStopped(); + myControl.playerPausedOrStopped(); - QCOMPARE(playControlEnabledChangedSpy.count(), 2); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 2); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 2); QCOMPARE(musicPlayingChangedSpy.count(), 2); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 2); - QCOMPARE(myControl.musicPlaying(), false); + QVERIFY(!myControl.musicPlaying()); } -void ManageMediaPlayerControlTest::addItemInModelCaseV2() +void ManageMediaPlayerControlTest::testTracksCase() { QStringListModel myPlayList; + myPlayList.setStringList({QStringLiteral("first"), QStringLiteral("second"), QStringLiteral("third")}); ManageMediaPlayerControl myControl; - QCOMPARE(myControl.playControlEnabled(), false); - QCOMPARE(myControl.skipBackwardControlEnabled(), false); - QCOMPARE(myControl.skipForwardControlEnabled(), false); - QCOMPARE(myControl.musicPlaying(), false); - QCOMPARE(myControl.playListModel(), static_cast(nullptr)); - QCOMPARE(myControl.currentTrack().isValid(), false); - QSignalSpy playControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::playControlEnabledChanged); QSignalSpy skipBackwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipBackwardControlEnabledChanged); QSignalSpy skipForwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipForwardControlEnabledChanged); - QSignalSpy musicPlayingChangedSpy(&myControl, &ManageMediaPlayerControl::musicPlayingChanged); - QSignalSpy playListModelChangedSpy(&myControl, &ManageMediaPlayerControl::playListModelChanged); + QSignalSpy previousTrackChangedSpy(&myControl, &ManageMediaPlayerControl::previousTrackChanged); QSignalSpy currentTrackChangedSpy(&myControl, &ManageMediaPlayerControl::currentTrackChanged); + QSignalSpy nextTrackChangedSpy(&myControl, &ManageMediaPlayerControl::nextTrackChanged); - myControl.setPlayListModel(&myPlayList); - - QCOMPARE(playControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 0); - - QCOMPARE(myControl.playListModel(), &myPlayList); - - myPlayList.setStringList({QStringLiteral("tutu")}); - - QCOMPARE(playControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 0); + QVERIFY(!myControl.playControlEnabled()); + QVERIFY(!myControl.skipBackwardControlEnabled()); + QVERIFY(!myControl.skipForwardControlEnabled()); + QVERIFY(!myControl.musicPlaying()); + QVERIFY(!myControl.currentTrack().isValid()); - myControl.setCurrentTrack(myPlayList.index(0, 0)); + myControl.setCurrentTrack(QPersistentModelIndex(myPlayList.index(1, 0))); - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); + QCOMPARE(previousTrackChangedSpy.count(), 0); QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.playControlEnabled(), true); - QCOMPARE(myControl.currentTrack(), QPersistentModelIndex(myPlayList.index(0, 0))); - - myControl.playerPlaying(); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); + QCOMPARE(nextTrackChangedSpy.count(), 0); QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.musicPlaying(), true); - - QCOMPARE(myPlayList.insertRows(1, 2, {}), true); - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.skipForwardControlEnabled(), true); - - QCOMPARE(myPlayList.insertRows(0, 2, {}), true); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.skipBackwardControlEnabled(), true); - - QCOMPARE(myPlayList.removeRows(2, 1, {}), true); - - QCOMPARE(playControlEnabledChangedSpy.count(), 2); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 2); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 2); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 2); - - QCOMPARE(myControl.playControlEnabled(), false); - QCOMPARE(myControl.currentTrack().isValid(), false); - QCOMPARE(myControl.skipBackwardControlEnabled(), false); - QCOMPARE(myControl.skipForwardControlEnabled(), false); - - myControl.playerStopped(); - - QCOMPARE(playControlEnabledChangedSpy.count(), 2); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 2); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 2); - QCOMPARE(musicPlayingChangedSpy.count(), 2); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 2); - - QCOMPARE(myControl.musicPlaying(), false); - - QCOMPARE(myPlayList.removeRows(0, 4, {}), true); - - QCOMPARE(playControlEnabledChangedSpy.count(), 2); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 2); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 2); - QCOMPARE(musicPlayingChangedSpy.count(), 2); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 2); -} -void ManageMediaPlayerControlTest::nextAndPreviousButtonAndRandomPlay() -{ - QStringListModel myPlayList; - - ManageMediaPlayerControl myControl; - - QCOMPARE(myControl.playControlEnabled(), false); - QCOMPARE(myControl.skipBackwardControlEnabled(), false); - QCOMPARE(myControl.skipForwardControlEnabled(), false); - QCOMPARE(myControl.musicPlaying(), false); - QCOMPARE(myControl.playListModel(), static_cast(nullptr)); - QCOMPARE(myControl.currentTrack().isValid(), false); - - QSignalSpy playControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::playControlEnabledChanged); - QSignalSpy skipBackwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipBackwardControlEnabledChanged); - QSignalSpy skipForwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipForwardControlEnabledChanged); - QSignalSpy musicPlayingChangedSpy(&myControl, &ManageMediaPlayerControl::musicPlayingChanged); - QSignalSpy playListModelChangedSpy(&myControl, &ManageMediaPlayerControl::playListModelChanged); - QSignalSpy currentTrackChangedSpy(&myControl, &ManageMediaPlayerControl::currentTrackChanged); - - myControl.setPlayListModel(&myPlayList); - - QCOMPARE(playControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 0); - - QCOMPARE(myControl.playListModel(), &myPlayList); - - myPlayList.setStringList({QStringLiteral("tutu")}); - - QCOMPARE(playControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 0); - - myControl.setCurrentTrack(myPlayList.index(0, 0)); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.playControlEnabled(), true); - QCOMPARE(myControl.currentTrack(), QPersistentModelIndex(myPlayList.index(0, 0))); - - myControl.setRandomOrContinuePlay(true); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - myControl.playerPlaying(); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.musicPlaying(), true); - QCOMPARE(myControl.skipForwardControlEnabled(), true); - QCOMPARE(myControl.skipBackwardControlEnabled(), true); + QVERIFY(myControl.playControlEnabled()); + QVERIFY(!myControl.skipBackwardControlEnabled()); + QVERIFY(!myControl.skipForwardControlEnabled()); - QCOMPARE(myPlayList.insertRows(1, 2, {}), true); + myControl.setPreviousTrack(QPersistentModelIndex(myPlayList.index(0, 0))); - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myPlayList.insertRows(0, 2, {}), true); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); + QCOMPARE(previousTrackChangedSpy.count(), 1); QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myPlayList.removeRows(3, 2, {}), true); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); -} - -void ManageMediaPlayerControlTest::moveCurrentTrack() -{ - MediaPlayList myPlayList; - DatabaseInterface myDatabaseContent; - TracksListener myListener(&myDatabaseContent); - - myDatabaseContent.init(QStringLiteral("testDbDirectContent")); - - connect(&myListener, &TracksListener::trackHasChanged, - &myPlayList, &MediaPlayList::trackChanged, - Qt::QueuedConnection); - connect(&myListener, &TracksListener::tracksListAdded, - &myPlayList, &MediaPlayList::tracksListAdded, - Qt::QueuedConnection); - connect(&myPlayList, &MediaPlayList::newEntryInList, - &myListener, &TracksListener::newEntryInList, - Qt::QueuedConnection); - connect(&myPlayList, &MediaPlayList::newTrackByNameInList, - &myListener, &TracksListener::trackByNameInList, - Qt::QueuedConnection); - connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, - &myListener, &TracksListener::tracksAdded); - - ManageMediaPlayerControl myControl; - - QCOMPARE(myControl.playControlEnabled(), false); - QCOMPARE(myControl.skipBackwardControlEnabled(), false); - QCOMPARE(myControl.skipForwardControlEnabled(), false); - QCOMPARE(myControl.musicPlaying(), false); - QCOMPARE(myControl.playListModel(), static_cast(nullptr)); - QCOMPARE(myControl.currentTrack().isValid(), false); - - QSignalSpy playControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::playControlEnabledChanged); - QSignalSpy skipBackwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipBackwardControlEnabledChanged); - QSignalSpy skipForwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipForwardControlEnabledChanged); - QSignalSpy musicPlayingChangedSpy(&myControl, &ManageMediaPlayerControl::musicPlayingChanged); - QSignalSpy playListModelChangedSpy(&myControl, &ManageMediaPlayerControl::playListModelChanged); - QSignalSpy currentTrackChangedSpy(&myControl, &ManageMediaPlayerControl::currentTrackChanged); - - myControl.setPlayListModel(&myPlayList); - - QCOMPARE(playControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 0); - - QCOMPARE(myControl.playListModel(), &myPlayList); - - myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); - - myPlayList.enqueue(ElisaUtils::EntryData{myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist2"), QStringLiteral("album2"), 1, 1), - QStringLiteral("track1")}, - ElisaUtils::Track); - myPlayList.enqueue(ElisaUtils::EntryData{myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track2"), QStringLiteral("artist1"), QStringLiteral("album1"), 2, 2), - QStringLiteral("track2")}, - ElisaUtils::Track); - - QCOMPARE(playControlEnabledChangedSpy.count(), 0); + QCOMPARE(nextTrackChangedSpy.count(), 0); QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 0); - - myControl.setCurrentTrack(myPlayList.index(0, 0)); - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.playControlEnabled(), true); - QCOMPARE(myControl.currentTrack(), QPersistentModelIndex(myPlayList.index(0, 0))); + QVERIFY(myControl.playControlEnabled()); + QVERIFY(!myControl.skipBackwardControlEnabled()); + QVERIFY(!myControl.skipForwardControlEnabled()); myControl.playerPlaying(); - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); + QCOMPARE(previousTrackChangedSpy.count(), 1); QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.musicPlaying(), true); - QCOMPARE(myControl.skipForwardControlEnabled(), true); - - QCOMPARE(myPlayList.moveRows({}, 0, 1, {}, 2), true); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); + QCOMPARE(nextTrackChangedSpy.count(), 0); QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 2); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.skipForwardControlEnabled(), false); - QCOMPARE(myControl.skipBackwardControlEnabled(), true); -} - -void ManageMediaPlayerControlTest::moveAnotherTrack() -{ - MediaPlayList myPlayList; - DatabaseInterface myDatabaseContent; - TracksListener myListener(&myDatabaseContent); - - myDatabaseContent.init(QStringLiteral("testDbDirectContent")); - - connect(&myListener, &TracksListener::trackHasChanged, - &myPlayList, &MediaPlayList::trackChanged, - Qt::QueuedConnection); - connect(&myListener, &TracksListener::tracksListAdded, - &myPlayList, &MediaPlayList::tracksListAdded, - Qt::QueuedConnection); - connect(&myPlayList, &MediaPlayList::newEntryInList, - &myListener, &TracksListener::newEntryInList, - Qt::QueuedConnection); - connect(&myPlayList, &MediaPlayList::newTrackByNameInList, - &myListener, &TracksListener::trackByNameInList, - Qt::QueuedConnection); - connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, - &myListener, &TracksListener::tracksAdded); - - ManageMediaPlayerControl myControl; - - QCOMPARE(myControl.playControlEnabled(), false); - QCOMPARE(myControl.skipBackwardControlEnabled(), false); - QCOMPARE(myControl.skipForwardControlEnabled(), false); - QCOMPARE(myControl.musicPlaying(), false); - QCOMPARE(myControl.playListModel(), static_cast(nullptr)); - QCOMPARE(myControl.currentTrack().isValid(), false); - - QSignalSpy playControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::playControlEnabledChanged); - QSignalSpy skipBackwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipBackwardControlEnabledChanged); - QSignalSpy skipForwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipForwardControlEnabledChanged); - QSignalSpy musicPlayingChangedSpy(&myControl, &ManageMediaPlayerControl::musicPlayingChanged); - QSignalSpy playListModelChangedSpy(&myControl, &ManageMediaPlayerControl::playListModelChanged); - QSignalSpy currentTrackChangedSpy(&myControl, &ManageMediaPlayerControl::currentTrackChanged); - - myControl.setPlayListModel(&myPlayList); - - QCOMPARE(playControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 0); - - QCOMPARE(myControl.playListModel(), &myPlayList); - - myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); - - myPlayList.enqueue(ElisaUtils::EntryData{myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist2"), QStringLiteral("album2"), 1, 1), - QStringLiteral("track1")}, - ElisaUtils::Track); - myPlayList.enqueue(ElisaUtils::EntryData{myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track2"), QStringLiteral("artist1"), QStringLiteral("album1"), 2, 2), - QStringLiteral("track2")}, - ElisaUtils::Track); - - QCOMPARE(playControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 0); - - myControl.setCurrentTrack(myPlayList.index(0, 0)); - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); + QVERIFY(myControl.playControlEnabled()); + QVERIFY(myControl.skipBackwardControlEnabled()); + QVERIFY(!myControl.skipForwardControlEnabled()); - QCOMPARE(myControl.playControlEnabled(), true); - QCOMPARE(myControl.currentTrack(), QPersistentModelIndex(myPlayList.index(0, 0))); + myControl.playerPausedOrStopped(); + myControl.setNextTrack(QPersistentModelIndex(myPlayList.index(2, 0))); - myControl.playerPlaying(); - - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); + QCOMPARE(previousTrackChangedSpy.count(), 1); QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.musicPlaying(), true); - QCOMPARE(myControl.skipForwardControlEnabled(), true); - - QCOMPARE(myPlayList.moveRows({}, 1, 1, {}, 0), true); - + QCOMPARE(nextTrackChangedSpy.count(), 1); + QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 2); QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 2); - QCOMPARE(musicPlayingChangedSpy.count(), 1); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.skipForwardControlEnabled(), false); - QCOMPARE(myControl.skipBackwardControlEnabled(), true); -} - -void ManageMediaPlayerControlTest::setCurrentTrackTest() -{ - MediaPlayList myPlayList; - DatabaseInterface myDatabaseContent; - TracksListener myListener(&myDatabaseContent); - - myDatabaseContent.init(QStringLiteral("testDbDirectContent")); - - connect(&myListener, &TracksListener::trackHasChanged, - &myPlayList, &MediaPlayList::trackChanged, - Qt::QueuedConnection); - connect(&myListener, &TracksListener::tracksListAdded, - &myPlayList, &MediaPlayList::tracksListAdded, - Qt::QueuedConnection); - connect(&myPlayList, &MediaPlayList::newEntryInList, - &myListener, &TracksListener::newEntryInList, - Qt::QueuedConnection); - connect(&myPlayList, &MediaPlayList::newTrackByNameInList, - &myListener, &TracksListener::trackByNameInList, - Qt::QueuedConnection); - connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, - &myListener, &TracksListener::tracksAdded); - - ManageMediaPlayerControl myControl; - - QCOMPARE(myControl.playControlEnabled(), false); - QCOMPARE(myControl.skipBackwardControlEnabled(), false); - QCOMPARE(myControl.skipForwardControlEnabled(), false); - QCOMPARE(myControl.musicPlaying(), false); - QCOMPARE(myControl.playListModel(), static_cast(nullptr)); - QCOMPARE(myControl.currentTrack().isValid(), false); - - QSignalSpy playControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::playControlEnabledChanged); - QSignalSpy skipBackwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipBackwardControlEnabledChanged); - QSignalSpy skipForwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipForwardControlEnabledChanged); - QSignalSpy musicPlayingChangedSpy(&myControl, &ManageMediaPlayerControl::musicPlayingChanged); - QSignalSpy playListModelChangedSpy(&myControl, &ManageMediaPlayerControl::playListModelChanged); - QSignalSpy currentTrackChangedSpy(&myControl, &ManageMediaPlayerControl::currentTrackChanged); - - myControl.setPlayListModel(&myPlayList); - - QCOMPARE(playControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 0); - - QCOMPARE(myControl.playListModel(), &myPlayList); + QVERIFY(myControl.playControlEnabled()); + QVERIFY(!myControl.skipBackwardControlEnabled()); + QVERIFY(!myControl.skipForwardControlEnabled()); - myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); - - myPlayList.enqueue(ElisaUtils::EntryData{myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist2"), QStringLiteral("album2"), 1, 1), - QStringLiteral("track1")}, - ElisaUtils::Track); - myPlayList.enqueue(ElisaUtils::EntryData{myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track2"), QStringLiteral("artist1"), QStringLiteral("album1"), 2, 2), - QStringLiteral("track2")}, - ElisaUtils::Track); - - QCOMPARE(playControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 0); - - myControl.setCurrentTrack(myPlayList.index(0, 0)); + myControl.playerPlaying(); - QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); + QCOMPARE(previousTrackChangedSpy.count(), 1); QCOMPARE(currentTrackChangedSpy.count(), 1); - - QCOMPARE(myControl.playControlEnabled(), true); - QCOMPARE(myControl.currentTrack(), QPersistentModelIndex(myPlayList.index(0, 0))); - - myControl.setCurrentTrack(myPlayList.index(0, 0)); - + QCOMPARE(nextTrackChangedSpy.count(), 1); + QCOMPARE(nextTrackChangedSpy.count(), 1); + QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 3); QCOMPARE(playControlEnabledChangedSpy.count(), 1); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 1); -} - -void ManageMediaPlayerControlTest::setPlayListModelTest() -{ - QStringListModel myPlayList; - - ManageMediaPlayerControl myControl; - - QCOMPARE(myControl.playControlEnabled(), false); - QCOMPARE(myControl.skipBackwardControlEnabled(), false); - QCOMPARE(myControl.skipForwardControlEnabled(), false); - QCOMPARE(myControl.musicPlaying(), false); - QCOMPARE(myControl.playListModel(), static_cast(nullptr)); - QCOMPARE(myControl.currentTrack().isValid(), false); - - QSignalSpy playControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::playControlEnabledChanged); - QSignalSpy skipBackwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipBackwardControlEnabledChanged); - QSignalSpy skipForwardControlEnabledChangedSpy(&myControl, &ManageMediaPlayerControl::skipForwardControlEnabledChanged); - QSignalSpy musicPlayingChangedSpy(&myControl, &ManageMediaPlayerControl::musicPlayingChanged); - QSignalSpy playListModelChangedSpy(&myControl, &ManageMediaPlayerControl::playListModelChanged); - QSignalSpy currentTrackChangedSpy(&myControl, &ManageMediaPlayerControl::currentTrackChanged); - - myControl.setPlayListModel(&myPlayList); - - QCOMPARE(playControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 1); - QCOMPARE(currentTrackChangedSpy.count(), 0); - - QCOMPARE(myControl.playListModel(), &myPlayList); - - myControl.setPlayListModel(nullptr); - - QCOMPARE(playControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipBackwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 0); - QCOMPARE(musicPlayingChangedSpy.count(), 0); - QCOMPARE(playListModelChangedSpy.count(), 2); - QCOMPARE(currentTrackChangedSpy.count(), 0); - - QCOMPARE(myControl.playListModel(), static_cast(nullptr)); + QCOMPARE(skipForwardControlEnabledChangedSpy.count(), 1); + QVERIFY(myControl.playControlEnabled()); + QVERIFY(myControl.skipBackwardControlEnabled()); + QVERIFY(myControl.skipForwardControlEnabled()); } - QTEST_GUILESS_MAIN(ManageMediaPlayerControlTest) diff --git a/src/elisaapplication.cpp b/src/elisaapplication.cpp --- a/src/elisaapplication.cpp +++ b/src/elisaapplication.cpp @@ -378,11 +378,13 @@ QObject::connect(d->mAudioWrapper.get(), &AudioWrapper::positionChanged, d->mAudioControl.get(), &ManageAudioPlayer::setPlayerPosition); QObject::connect(d->mAudioWrapper.get(), &AudioWrapper::currentPlayingForRadiosChanged, d->mAudioControl.get(), &ManageAudioPlayer::setCurrentPlayingForRadios); - d->mPlayerControl->setPlayListModel(d->mMediaPlayList.get()); QObject::connect(d->mMediaPlayList.get(), &MediaPlayList::currentTrackChanged, d->mPlayerControl.get(), &ManageMediaPlayerControl::setCurrentTrack); + QObject::connect(d->mMediaPlayList.get(), &MediaPlayList::previousTrackChanged, d->mPlayerControl.get(), &ManageMediaPlayerControl::setPreviousTrack); + QObject::connect(d->mMediaPlayList.get(), &MediaPlayList::nextTrackChanged, d->mPlayerControl.get(), &ManageMediaPlayerControl::setNextTrack); + QObject::connect(d->mAudioWrapper.get(), &AudioWrapper::playing, d->mPlayerControl.get(), &ManageMediaPlayerControl::playerPlaying); - QObject::connect(d->mAudioWrapper.get(), &AudioWrapper::paused, d->mPlayerControl.get(), &ManageMediaPlayerControl::playerPaused); - QObject::connect(d->mAudioWrapper.get(), &AudioWrapper::stopped, d->mPlayerControl.get(), &ManageMediaPlayerControl::playerStopped); + QObject::connect(d->mAudioWrapper.get(), &AudioWrapper::paused, d->mPlayerControl.get(), &ManageMediaPlayerControl::playerPausedOrStopped); + QObject::connect(d->mAudioWrapper.get(), &AudioWrapper::stopped, d->mPlayerControl.get(), &ManageMediaPlayerControl::playerPausedOrStopped); d->mManageHeaderBar->setTitleRole(MediaPlayList::TitleRole); d->mManageHeaderBar->setAlbumRole(MediaPlayList::AlbumRole); diff --git a/src/elisaqmlplugin.cpp b/src/elisaqmlplugin.cpp --- a/src/elisaqmlplugin.cpp +++ b/src/elisaqmlplugin.cpp @@ -175,8 +175,6 @@ qRegisterMetaType("ViewManager::ViewsType"); qRegisterMetaType("ViewManager::SortOrder"); - qRegisterMetaTypeStreamOperators("PlayListControler::PlayerState"); - qmlRegisterUncreatableType(uri, 1, 0, "ElisaApplication", QStringLiteral("only one and done in c++")); qmlRegisterUncreatableMetaObject(ElisaUtils::staticMetaObject, uri, 1, 0, "ElisaUtils", QStringLiteral("Namespace ElisaUtils")); } diff --git a/src/managemediaplayercontrol.h b/src/managemediaplayercontrol.h --- a/src/managemediaplayercontrol.h +++ b/src/managemediaplayercontrol.h @@ -46,32 +46,23 @@ READ musicPlaying NOTIFY musicPlayingChanged) - Q_PROPERTY(QAbstractItemModel* playListModel - READ playListModel - WRITE setPlayListModel - NOTIFY playListModelChanged) + Q_PROPERTY(QPersistentModelIndex previousTrack + READ previousTrack + WRITE setPreviousTrack + NOTIFY previousTrackChanged) Q_PROPERTY(QPersistentModelIndex currentTrack READ currentTrack WRITE setCurrentTrack NOTIFY currentTrackChanged) - Q_PROPERTY(bool randomOrContinuePlay - READ randomOrContinuePlay - WRITE setRandomOrContinuePlay - NOTIFY randomOrContinuePlayChanged) + Q_PROPERTY(QPersistentModelIndex nextTrack + READ nextTrack + WRITE setNextTrack + NOTIFY nextTrackChanged) public: - enum class PlayerState - { - Playing, - Paused, - Stopped, - }; - - Q_ENUM(PlayerState) - explicit ManageMediaPlayerControl(QObject *parent = nullptr); bool playControlEnabled() const; @@ -82,11 +73,11 @@ bool musicPlaying() const; - QAbstractItemModel* playListModel() const; + QPersistentModelIndex previousTrack() const; QPersistentModelIndex currentTrack() const; - bool randomOrContinuePlay() const; + QPersistentModelIndex nextTrack() const; Q_SIGNALS: @@ -98,63 +89,40 @@ void musicPlayingChanged(); - void playListModelChanged(); + void previousTrackChanged(); void currentTrackChanged(); - void randomOrContinuePlayChanged(); + void nextTrackChanged(); public Q_SLOTS: - void setPlayListModel(QAbstractItemModel* aPlayListModel); - - void playerPaused(); + void playerPausedOrStopped(); void playerPlaying(); - void playerStopped(); + void setPreviousTrack(const QPersistentModelIndex &previousTrack); void setCurrentTrack(const QPersistentModelIndex ¤tTrack); - void setRandomOrContinuePlay(bool randomOrContinuePlay); - -private Q_SLOTS: - - void playListTracksWillBeInserted(const QModelIndex &parent, int first, int last); - - void playListTracksInserted(const QModelIndex &parent, int first, int last); - - void playListTracksWillBeRemoved(const QModelIndex & parent, int first, int last); - - void playListTracksRemoved(const QModelIndex & parent, int first, int last); - - void playListReset(); - - void tracksAboutToBeMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row); - - void tracksMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row); + void setNextTrack(const QPersistentModelIndex &nextTrack); private: - QAbstractItemModel *mPlayListModel = nullptr; + QPersistentModelIndex mPreviousTrack; QPersistentModelIndex mCurrentTrack; + QPersistentModelIndex mNextTrack; + bool mCurrentTrackWillBeRemoved = false; bool mSkipBackwardControlWasEnabled = false; bool mSkipForwardControlWasEnabled = false; bool mIsInPlayingState = false; - PlayerState mPlayerState = ManageMediaPlayerControl::PlayerState::Stopped; - - bool mRandomOrContinuePlay = false; - }; -ELISALIB_EXPORT QDataStream &operator<<(QDataStream &out, const ManageMediaPlayerControl::PlayerState &state); -ELISALIB_EXPORT QDataStream &operator>>(QDataStream &in, ManageMediaPlayerControl::PlayerState &state); - #endif // MANAGEMEDIAPLAYERCONTROL_H diff --git a/src/managemediaplayercontrol.cpp b/src/managemediaplayercontrol.cpp --- a/src/managemediaplayercontrol.cpp +++ b/src/managemediaplayercontrol.cpp @@ -17,84 +17,54 @@ #include "managemediaplayercontrol.h" -#include +#include ManageMediaPlayerControl::ManageMediaPlayerControl(QObject *parent) : QObject(parent) { } bool ManageMediaPlayerControl::playControlEnabled() const { - if (!mPlayListModel) { - return false; - } - - if (!mCurrentTrack.isValid()) { - return false; - } - - return mPlayListModel->rowCount() > 0; + return mCurrentTrack.isValid(); } bool ManageMediaPlayerControl::skipBackwardControlEnabled() const { - if (!mPlayListModel) { - return false; - } - - if (!mCurrentTrack.isValid()) { - return false; - } - - return (mRandomOrContinuePlay || (mCurrentTrack.row() > 0)) && mIsInPlayingState; + return (mPreviousTrack.isValid() && mIsInPlayingState); } bool ManageMediaPlayerControl::skipForwardControlEnabled() const { - if (!mPlayListModel) { - return false; - } - - if (!mCurrentTrack.isValid()) { - return false; - } - - return (mRandomOrContinuePlay || (mCurrentTrack.row() < mPlayListModel->rowCount() - 1)) && mIsInPlayingState; + return (mNextTrack.isValid() && mIsInPlayingState); } bool ManageMediaPlayerControl::musicPlaying() const { - return mPlayerState == ManageMediaPlayerControl::PlayerState::Playing; + return mIsInPlayingState; } -void ManageMediaPlayerControl::playerPaused() +void ManageMediaPlayerControl::playerPausedOrStopped() { - //qDebug() << "ManageMediaPlayerControl::playerPaused"; - - if (!mIsInPlayingState) { + if (mIsInPlayingState) { auto oldPreviousTrackIsEnabled = skipBackwardControlEnabled(); auto oldNextTrackIsEnabled = skipForwardControlEnabled(); - mIsInPlayingState = true; + mIsInPlayingState = false; + Q_EMIT musicPlayingChanged(); if (!mCurrentTrack.isValid()) { return; } - auto newNextTrackIsEnabled = skipForwardControlEnabled(); - if (oldNextTrackIsEnabled != newNextTrackIsEnabled) { + if (oldNextTrackIsEnabled != skipForwardControlEnabled()) { Q_EMIT skipForwardControlEnabledChanged(); } - auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); - if (oldPreviousTrackIsEnabled != newPreviousTrackIsEnabled) { + if (oldPreviousTrackIsEnabled != skipBackwardControlEnabled()) { Q_EMIT skipBackwardControlEnabledChanged(); } } - - mPlayerState = ManageMediaPlayerControl::PlayerState::Paused; - Q_EMIT musicPlayingChanged(); } void ManageMediaPlayerControl::playerPlaying() @@ -104,51 +74,36 @@ auto oldNextTrackIsEnabled = skipForwardControlEnabled(); mIsInPlayingState = true; + Q_EMIT musicPlayingChanged(); if (!mCurrentTrack.isValid()) { return; } - auto newNextTrackIsEnabled = skipForwardControlEnabled(); - if (oldNextTrackIsEnabled != newNextTrackIsEnabled) { + if (oldNextTrackIsEnabled != skipForwardControlEnabled()) { Q_EMIT skipForwardControlEnabledChanged(); } - auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); - if (oldPreviousTrackIsEnabled != newPreviousTrackIsEnabled) { + if (oldPreviousTrackIsEnabled != skipBackwardControlEnabled()) { Q_EMIT skipBackwardControlEnabledChanged(); } } - - mPlayerState = ManageMediaPlayerControl::PlayerState::Playing; - Q_EMIT musicPlayingChanged(); } -void ManageMediaPlayerControl::playerStopped() +void ManageMediaPlayerControl::setPreviousTrack(const QPersistentModelIndex &previousTrack) { - //qDebug() << "ManageMediaPlayerControl::playerStopped"; - - if (mIsInPlayingState) { - auto oldPreviousTrackIsEnabled = skipBackwardControlEnabled(); - auto oldNextTrackIsEnabled = skipForwardControlEnabled(); + if (mPreviousTrack == previousTrack) { + return; + } - mIsInPlayingState = false; + bool oldValueSkipBackward = skipBackwardControlEnabled(); - if (mCurrentTrack.isValid()) { - auto newNextTrackIsEnabled = skipForwardControlEnabled(); - if (oldNextTrackIsEnabled != newNextTrackIsEnabled) { - Q_EMIT skipForwardControlEnabledChanged(); - } + mPreviousTrack = previousTrack; + Q_EMIT previousTrackChanged(); - auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); - if (oldPreviousTrackIsEnabled != newPreviousTrackIsEnabled) { - Q_EMIT skipBackwardControlEnabledChanged(); - } - } + if (oldValueSkipBackward != skipBackwardControlEnabled()) { + Q_EMIT skipBackwardControlEnabledChanged(); } - - mPlayerState = ManageMediaPlayerControl::PlayerState::Stopped; - Q_EMIT musicPlayingChanged(); } void ManageMediaPlayerControl::setCurrentTrack(const QPersistentModelIndex ¤tTrack) @@ -158,227 +113,44 @@ } bool oldPlayControlEnabled = playControlEnabled(); - bool oldValueSkipBackward = skipBackwardControlEnabled(); - bool oldValueSkipForward = skipForwardControlEnabled(); mCurrentTrack = currentTrack; Q_EMIT currentTrackChanged(); if (oldPlayControlEnabled != playControlEnabled()) { Q_EMIT playControlEnabledChanged(); } - - if (!mIsInPlayingState) { - return; - } - - if (oldValueSkipBackward != skipBackwardControlEnabled()) { - Q_EMIT skipBackwardControlEnabledChanged(); - } - - if (oldValueSkipForward != skipForwardControlEnabled()) { - Q_EMIT skipForwardControlEnabledChanged(); - } -} - -bool ManageMediaPlayerControl::randomOrContinuePlay() const -{ - return mRandomOrContinuePlay; } -void ManageMediaPlayerControl::setRandomOrContinuePlay(bool randomOrContinuePlay) +void ManageMediaPlayerControl::setNextTrack(const QPersistentModelIndex &nextTrack) { - if (mRandomOrContinuePlay == randomOrContinuePlay) { + if (mNextTrack == nextTrack) { return; } - auto oldPreviousTrackIsEnabled = skipBackwardControlEnabled(); - auto oldNextTrackIsEnabled = skipForwardControlEnabled(); - - mRandomOrContinuePlay = randomOrContinuePlay; - Q_EMIT randomOrContinuePlayChanged(); - - auto newNextTrackIsEnabled = skipForwardControlEnabled(); - if (oldNextTrackIsEnabled != newNextTrackIsEnabled) { - Q_EMIT skipForwardControlEnabledChanged(); - } - - auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); - if (oldPreviousTrackIsEnabled != newPreviousTrackIsEnabled) { - Q_EMIT skipBackwardControlEnabledChanged(); - } -} - -void ManageMediaPlayerControl::playListTracksWillBeInserted(const QModelIndex &parent, int first, int last) -{ - Q_UNUSED(parent); - Q_UNUSED(first); - Q_UNUSED(last); - - mSkipBackwardControlWasEnabled = skipBackwardControlEnabled(); - mSkipForwardControlWasEnabled = skipForwardControlEnabled(); -} - -void ManageMediaPlayerControl::playListTracksInserted(const QModelIndex &parent, int first, int last) -{ - Q_UNUSED(parent); - Q_UNUSED(first); - Q_UNUSED(last); - - if (!mCurrentTrack.isValid()) { - mSkipBackwardControlWasEnabled = false; - mSkipForwardControlWasEnabled = false; - - return; - } - - auto newNextTrackIsEnabled = skipForwardControlEnabled(); - if (mSkipForwardControlWasEnabled != newNextTrackIsEnabled) { - Q_EMIT skipForwardControlEnabledChanged(); - } - - auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); - if (mSkipBackwardControlWasEnabled != newPreviousTrackIsEnabled) { - Q_EMIT skipBackwardControlEnabledChanged(); - } -} - -void ManageMediaPlayerControl::playListTracksWillBeRemoved(const QModelIndex &parent, int first, int last) -{ - Q_UNUSED(parent); - - if (!mCurrentTrack.isValid()) { - mCurrentTrackWillBeRemoved = false; - mSkipBackwardControlWasEnabled = false; - mSkipForwardControlWasEnabled = false; - - return; - } - - mCurrentTrackWillBeRemoved = (mCurrentTrack.row() >= first && mCurrentTrack.row() <= last); - mSkipBackwardControlWasEnabled = skipBackwardControlEnabled(); - mSkipForwardControlWasEnabled = skipForwardControlEnabled(); -} - -void ManageMediaPlayerControl::playListTracksRemoved(const QModelIndex &parent, int first, int last) -{ - Q_UNUSED(parent); - Q_UNUSED(first); - Q_UNUSED(last); - - if (mCurrentTrackWillBeRemoved) { - Q_EMIT currentTrackChanged(); - Q_EMIT playControlEnabledChanged(); - } - - if (!mCurrentTrack.isValid()) { - if (mSkipBackwardControlWasEnabled) { - Q_EMIT skipBackwardControlEnabledChanged(); - } - - if (mSkipForwardControlWasEnabled) { - Q_EMIT skipForwardControlEnabledChanged(); - } - - return; - } - - auto newNextTrackIsEnabled = skipForwardControlEnabled(); - if (mSkipForwardControlWasEnabled != newNextTrackIsEnabled) { - Q_EMIT skipForwardControlEnabledChanged(); - } - - auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); - if (mSkipBackwardControlWasEnabled != newPreviousTrackIsEnabled) { - Q_EMIT skipBackwardControlEnabledChanged(); - } -} - -void ManageMediaPlayerControl::playListReset() -{ -} + bool oldValueSkipForward = skipForwardControlEnabled(); -void ManageMediaPlayerControl::tracksAboutToBeMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row) -{ - Q_UNUSED(parent); - Q_UNUSED(start); - Q_UNUSED(end); - Q_UNUSED(destination); - Q_UNUSED(row); - - mSkipBackwardControlWasEnabled = skipBackwardControlEnabled(); - mSkipForwardControlWasEnabled = skipForwardControlEnabled(); -} + mNextTrack = nextTrack; + Q_EMIT nextTrackChanged(); -void ManageMediaPlayerControl::tracksMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row) -{ - Q_UNUSED(parent); - Q_UNUSED(start); - Q_UNUSED(end); - Q_UNUSED(destination); - Q_UNUSED(row); - - auto newNextTrackIsEnabled = skipForwardControlEnabled(); - if (mSkipForwardControlWasEnabled != newNextTrackIsEnabled) { + if (oldValueSkipForward != skipForwardControlEnabled()) { Q_EMIT skipForwardControlEnabledChanged(); } - - auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); - if (mSkipBackwardControlWasEnabled != newPreviousTrackIsEnabled) { - Q_EMIT skipBackwardControlEnabledChanged(); - } } -void ManageMediaPlayerControl::setPlayListModel(QAbstractItemModel *aPlayListModel) +QPersistentModelIndex ManageMediaPlayerControl::previousTrack() const { - if (mPlayListModel) { - disconnect(mPlayListModel, &QAbstractItemModel::rowsAboutToBeInserted, this, &ManageMediaPlayerControl::playListTracksWillBeInserted); - disconnect(mPlayListModel, &QAbstractItemModel::rowsInserted, this, &ManageMediaPlayerControl::playListTracksInserted); - disconnect(mPlayListModel, &QAbstractItemModel::rowsAboutToBeRemoved, this, &ManageMediaPlayerControl::playListTracksWillBeRemoved); - disconnect(mPlayListModel, &QAbstractItemModel::rowsRemoved, this, &ManageMediaPlayerControl::playListTracksRemoved); - disconnect(mPlayListModel, &QAbstractItemModel::rowsMoved, this, &ManageMediaPlayerControl::tracksMoved); - disconnect(mPlayListModel, &QAbstractItemModel::rowsAboutToBeMoved, this, &ManageMediaPlayerControl::tracksAboutToBeMoved); - disconnect(mPlayListModel, &QAbstractItemModel::modelReset, this, &ManageMediaPlayerControl::playListReset); - } - - mPlayListModel = aPlayListModel; - - if (mPlayListModel) { - connect(mPlayListModel, &QAbstractItemModel::rowsAboutToBeInserted, this, &ManageMediaPlayerControl::playListTracksWillBeInserted); - connect(mPlayListModel, &QAbstractItemModel::rowsInserted, this, &ManageMediaPlayerControl::playListTracksInserted); - connect(mPlayListModel, &QAbstractItemModel::rowsAboutToBeRemoved, this, &ManageMediaPlayerControl::playListTracksWillBeRemoved); - connect(mPlayListModel, &QAbstractItemModel::rowsRemoved, this, &ManageMediaPlayerControl::playListTracksRemoved); - connect(mPlayListModel, &QAbstractItemModel::rowsMoved, this, &ManageMediaPlayerControl::tracksMoved); - connect(mPlayListModel, &QAbstractItemModel::rowsAboutToBeMoved, this, &ManageMediaPlayerControl::tracksAboutToBeMoved); - connect(mPlayListModel, &QAbstractItemModel::modelReset, this, &ManageMediaPlayerControl::playListReset); - } - - Q_EMIT playListModelChanged(); -} - -QAbstractItemModel *ManageMediaPlayerControl::playListModel() const -{ - return mPlayListModel; + return mPreviousTrack; } QPersistentModelIndex ManageMediaPlayerControl::currentTrack() const { return mCurrentTrack; } -QDataStream &operator<<(QDataStream &out, const ManageMediaPlayerControl::PlayerState &state) +QPersistentModelIndex ManageMediaPlayerControl::nextTrack() const { - out << static_cast(state); - return out; + return mNextTrack; } -QDataStream &operator>>(QDataStream &in, ManageMediaPlayerControl::PlayerState &state) -{ - int value; - in >> value; - state = static_cast(value); - return in; -} - - #include "moc_managemediaplayercontrol.cpp" diff --git a/src/qml/ElisaMainWindow.qml b/src/qml/ElisaMainWindow.qml --- a/src/qml/ElisaMainWindow.qml +++ b/src/qml/ElisaMainWindow.qml @@ -325,7 +325,6 @@ elisa.mediaPlayList.randomPlay = Qt.binding(function() { return headerBar.playerControl.shuffle }) elisa.mediaPlayList.repeatPlay = Qt.binding(function() { return headerBar.playerControl.repeat }) - elisa.playerControl.randomOrContinuePlay = Qt.binding(function() { return headerBar.playerControl.shuffle || headerBar.playerControl.repeat}) elisa.audioPlayer.muted = Qt.binding(function() { return headerBar.playerControl.muted }) elisa.audioPlayer.volume = Qt.binding(function() { return headerBar.playerControl.volume })