diff --git a/autotests/mediaplaylisttest.cpp b/autotests/mediaplaylisttest.cpp --- a/autotests/mediaplaylisttest.cpp +++ b/autotests/mediaplaylisttest.cpp @@ -230,14 +230,14 @@ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); - QCOMPARE(rowsAboutToBeInsertedSpy.count(), 6); + QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); QCOMPARE(rowsRemovedSpy.count(), 0); QCOMPARE(rowsMovedSpy.count(), 0); - QCOMPARE(rowsInsertedSpy.count(), 6); - QCOMPARE(trackHasBeenAddedSpy.count(), 6); - QCOMPARE(persistentStateChangedSpy.count(), 6); - QCOMPARE(dataChangedSpy.count(), 0); - QCOMPARE(newTrackByIdInListSpy.count(), 6); + QCOMPARE(rowsInsertedSpy.count(), 1); + QCOMPARE(trackHasBeenAddedSpy.count(), 0); + QCOMPARE(persistentStateChangedSpy.count(), 1); + QCOMPARE(dataChangedSpy.count(), 1); + QCOMPARE(newTrackByIdInListSpy.count(), 0); QCOMPARE(newTrackByNameInListSpy.count(), 0); QCOMPARE(newTrackByFileNameInListSpy.count(), 0); QCOMPARE(newArtistInListSpy.count(), 0); @@ -302,6 +302,7 @@ QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); QSignalSpy trackHasBeenAddedSpy(&myPlayList, &MediaPlayList::trackHasBeenAdded); + QSignalSpy tracksCountChangedSpy(&myPlayList, &MediaPlayList::tracksCountChanged); QSignalSpy persistentStateChangedSpy(&myPlayList, &MediaPlayList::persistentStateChanged); QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); QSignalSpy newTrackByIdInListSpy(&myPlayList, &MediaPlayList::newTrackByIdInList); @@ -317,6 +318,7 @@ QCOMPARE(rowsMovedSpy.count(), 0); QCOMPARE(rowsInsertedSpy.count(), 0); QCOMPARE(trackHasBeenAddedSpy.count(), 0); + QCOMPARE(tracksCountChangedSpy.count(), 0); QCOMPARE(persistentStateChangedSpy.count(), 0); QCOMPARE(dataChangedSpy.count(), 0); QCOMPARE(newTrackByIdInListSpy.count(), 0); @@ -357,6 +359,7 @@ QCOMPARE(rowsMovedSpy.count(), 0); QCOMPARE(rowsInsertedSpy.count(), 0); QCOMPARE(trackHasBeenAddedSpy.count(), 0); + QCOMPARE(tracksCountChangedSpy.count(), 0); QCOMPARE(persistentStateChangedSpy.count(), 0); QCOMPARE(dataChangedSpy.count(), 0); QCOMPARE(newTrackByIdInListSpy.count(), 0); @@ -369,14 +372,15 @@ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); - QCOMPARE(rowsAboutToBeInsertedSpy.count(), 6); + QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); QCOMPARE(rowsRemovedSpy.count(), 0); QCOMPARE(rowsMovedSpy.count(), 0); - QCOMPARE(rowsInsertedSpy.count(), 6); - QCOMPARE(trackHasBeenAddedSpy.count(), 6); - QCOMPARE(persistentStateChangedSpy.count(), 6); - QCOMPARE(dataChangedSpy.count(), 0); - QCOMPARE(newTrackByIdInListSpy.count(), 6); + QCOMPARE(rowsInsertedSpy.count(), 1); + QCOMPARE(trackHasBeenAddedSpy.count(), 0); + QCOMPARE(tracksCountChangedSpy.count(), 1); + QCOMPARE(persistentStateChangedSpy.count(), 1); + QCOMPARE(dataChangedSpy.count(), 1); + QCOMPARE(newTrackByIdInListSpy.count(), 0); QCOMPARE(newTrackByNameInListSpy.count(), 0); QCOMPARE(newTrackByFileNameInListSpy.count(), 0); QCOMPARE(newArtistInListSpy.count(), 0); @@ -427,14 +431,15 @@ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1); QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); - QCOMPARE(rowsAboutToBeInsertedSpy.count(), 6); + QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); QCOMPARE(rowsRemovedSpy.count(), 1); QCOMPARE(rowsMovedSpy.count(), 0); - QCOMPARE(rowsInsertedSpy.count(), 6); - QCOMPARE(trackHasBeenAddedSpy.count(), 6); - QCOMPARE(persistentStateChangedSpy.count(), 6); - QCOMPARE(dataChangedSpy.count(), 0); - QCOMPARE(newTrackByIdInListSpy.count(), 6); + QCOMPARE(rowsInsertedSpy.count(), 1); + QCOMPARE(trackHasBeenAddedSpy.count(), 0); + QCOMPARE(tracksCountChangedSpy.count(), 2); + QCOMPARE(persistentStateChangedSpy.count(), 1); + QCOMPARE(dataChangedSpy.count(), 1); + QCOMPARE(newTrackByIdInListSpy.count(), 0); QCOMPARE(newTrackByNameInListSpy.count(), 0); QCOMPARE(newTrackByFileNameInListSpy.count(), 0); QCOMPARE(newArtistInListSpy.count(), 0); @@ -677,14 +682,14 @@ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); - QCOMPARE(rowsAboutToBeInsertedSpy.count(), 6); + QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); QCOMPARE(rowsRemovedSpy.count(), 0); QCOMPARE(rowsMovedSpy.count(), 0); - QCOMPARE(rowsInsertedSpy.count(), 6); - QCOMPARE(trackHasBeenAddedSpy.count(), 6); - QCOMPARE(persistentStateChangedSpy.count(), 6); - QCOMPARE(dataChangedSpy.count(), 0); - QCOMPARE(newTrackByIdInListSpy.count(), 6); + QCOMPARE(rowsInsertedSpy.count(), 1); + QCOMPARE(trackHasBeenAddedSpy.count(), 0); + QCOMPARE(persistentStateChangedSpy.count(), 1); + QCOMPARE(dataChangedSpy.count(), 1); + QCOMPARE(newTrackByIdInListSpy.count(), 0); QCOMPARE(newTrackByNameInListSpy.count(), 0); QCOMPARE(newTrackByFileNameInListSpy.count(), 0); QCOMPARE(newArtistInListSpy.count(), 0); @@ -700,14 +705,14 @@ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1); QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); - QCOMPARE(rowsAboutToBeInsertedSpy.count(), 6); + QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); QCOMPARE(rowsRemovedSpy.count(), 1); QCOMPARE(rowsMovedSpy.count(), 0); - QCOMPARE(rowsInsertedSpy.count(), 6); - QCOMPARE(trackHasBeenAddedSpy.count(), 6); - QCOMPARE(persistentStateChangedSpy.count(), 7); - QCOMPARE(dataChangedSpy.count(), 1); - QCOMPARE(newTrackByIdInListSpy.count(), 6); + QCOMPARE(rowsInsertedSpy.count(), 1); + QCOMPARE(trackHasBeenAddedSpy.count(), 0); + QCOMPARE(persistentStateChangedSpy.count(), 2); + QCOMPARE(dataChangedSpy.count(), 2); + QCOMPARE(newTrackByIdInListSpy.count(), 0); QCOMPARE(newTrackByNameInListSpy.count(), 0); QCOMPARE(newTrackByFileNameInListSpy.count(), 0); QCOMPARE(newArtistInListSpy.count(), 0); @@ -2887,14 +2892,14 @@ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1); QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); - QCOMPARE(rowsAboutToBeInsertedSpy.count(), 6); + QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); QCOMPARE(rowsRemovedSpy.count(), 1); QCOMPARE(rowsMovedSpy.count(), 0); - QCOMPARE(rowsInsertedSpy.count(), 6); - QCOMPARE(trackHasBeenAddedSpy.count(), 6); - QCOMPARE(persistentStateChangedSpy.count(), 6); - QCOMPARE(dataChangedSpy.count(), 2); - QCOMPARE(newTrackByIdInListSpy.count(), 6); + QCOMPARE(rowsInsertedSpy.count(), 3); + QCOMPARE(trackHasBeenAddedSpy.count(), 2); + QCOMPARE(persistentStateChangedSpy.count(), 3); + QCOMPARE(dataChangedSpy.count(), 3); + QCOMPARE(newTrackByIdInListSpy.count(), 2); QCOMPARE(newTrackByNameInListSpy.count(), 0); QCOMPARE(newTrackByFileNameInListSpy.count(), 0); QCOMPARE(newArtistInListSpy.count(), 0); @@ -7251,13 +7256,13 @@ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); - QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); + QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); QCOMPARE(rowsRemovedSpy.count(), 0); QCOMPARE(rowsMovedSpy.count(), 0); - QCOMPARE(rowsInsertedSpy.count(), 2); - QCOMPARE(trackHasBeenAddedSpy.count(), 2); - QCOMPARE(persistentStateChangedSpy.count(), 2); - QCOMPARE(dataChangedSpy.count(), 2); + QCOMPARE(rowsInsertedSpy.count(), 1); + QCOMPARE(trackHasBeenAddedSpy.count(), 0); + QCOMPARE(persistentStateChangedSpy.count(), 1); + QCOMPARE(dataChangedSpy.count(), 1); QCOMPARE(newTrackByIdInListSpy.count(), 0); QCOMPARE(newTrackByNameInListSpy.count(), 0); QCOMPARE(newTrackByFileNameInListSpy.count(), 2); @@ -7269,13 +7274,13 @@ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); - QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); + QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); QCOMPARE(rowsRemovedSpy.count(), 0); QCOMPARE(rowsMovedSpy.count(), 0); - QCOMPARE(rowsInsertedSpy.count(), 2); - QCOMPARE(trackHasBeenAddedSpy.count(), 2); - QCOMPARE(persistentStateChangedSpy.count(), 2); - QCOMPARE(dataChangedSpy.count(), 4); + QCOMPARE(rowsInsertedSpy.count(), 1); + QCOMPARE(trackHasBeenAddedSpy.count(), 0); + QCOMPARE(persistentStateChangedSpy.count(), 1); + QCOMPARE(dataChangedSpy.count(), 3); QCOMPARE(newTrackByIdInListSpy.count(), 0); QCOMPARE(newTrackByNameInListSpy.count(), 0); QCOMPARE(newTrackByFileNameInListSpy.count(), 2); @@ -7374,33 +7379,33 @@ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); - QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); + QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); QCOMPARE(rowsRemovedSpy.count(), 0); QCOMPARE(rowsMovedSpy.count(), 0); - QCOMPARE(rowsInsertedSpy.count(), 2); - QCOMPARE(trackHasBeenAddedSpy.count(), 2); - QCOMPARE(persistentStateChangedSpy.count(), 2); - QCOMPARE(dataChangedSpy.count(), 2); + QCOMPARE(rowsInsertedSpy.count(), 1); + QCOMPARE(trackHasBeenAddedSpy.count(), 0); + QCOMPARE(persistentStateChangedSpy.count(), 1); + QCOMPARE(dataChangedSpy.count(), 1); QCOMPARE(newTrackByIdInListSpy.count(), 0); QCOMPARE(newTrackByNameInListSpy.count(), 0); QCOMPARE(newTrackByFileNameInListSpy.count(), 2); QCOMPARE(newArtistInListSpy.count(), 0); QCOMPARE(myPlayList.rowCount(), 2); - while (dataChangedSpy.count() < 4) { + while (dataChangedSpy.count() < 3) { QCOMPARE(dataChangedSpy.wait(), true); } QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); - QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); + QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); QCOMPARE(rowsRemovedSpy.count(), 0); QCOMPARE(rowsMovedSpy.count(), 0); - QCOMPARE(rowsInsertedSpy.count(), 2); - QCOMPARE(trackHasBeenAddedSpy.count(), 2); - QCOMPARE(persistentStateChangedSpy.count(), 2); - QCOMPARE(dataChangedSpy.count(), 4); + QCOMPARE(rowsInsertedSpy.count(), 1); + QCOMPARE(trackHasBeenAddedSpy.count(), 0); + QCOMPARE(persistentStateChangedSpy.count(), 1); + QCOMPARE(dataChangedSpy.count(), 3); QCOMPARE(newTrackByIdInListSpy.count(), 0); QCOMPARE(newTrackByNameInListSpy.count(), 0); QCOMPARE(newTrackByFileNameInListSpy.count(), 2); diff --git a/src/mediaplaylist.cpp b/src/mediaplaylist.cpp --- a/src/mediaplaylist.cpp +++ b/src/mediaplaylist.cpp @@ -587,9 +587,7 @@ void MediaPlayList::enqueue(const MusicAlbum &album) { - for (auto oneTrackIndex = 0; oneTrackIndex < album.tracksCount(); ++oneTrackIndex) { - enqueue(album.trackFromIndex(oneTrackIndex)); - } + enqueue(album.tracksList(), ElisaUtils::AppendPlayList, ElisaUtils::DoNotTriggerPlay); } void MediaPlayList::enqueue(const MusicArtist &artist) @@ -623,9 +621,11 @@ void MediaPlayList::enqueue(const QStringList &files) { qDebug() << "MediaPlayList::enqueue" << files; - for (const auto &oneFileName : files) { - enqueue(QUrl::fromLocalFile(oneFileName)); + QList fileUrls; + for (auto file : files) { + fileUrls.append(QUrl::fromLocalFile(file)); } + enqueue(fileUrls, ElisaUtils::AppendPlayList, ElisaUtils::DoNotTriggerPlay); } void MediaPlayList::enqueueAndPlay(const QStringList &files) @@ -788,16 +788,17 @@ beginInsertRows(QModelIndex(), d->mData.size(), d->mData.size() + trackUrls.size() - 1); for (const auto &oneTrackUrl : trackUrls) { - d->mData.push_back(MediaPlayListEntry{oneTrackUrl}); + auto newEntry = MediaPlayListEntry(oneTrackUrl); + d->mData.push_back(newEntry); d->mTrackData.push_back({}); - if (oneTrackUrl.isValid()) { + if (newEntry.mTrackUrl.isValid()) { qDebug() << "MediaPlayList::enqueue" << "newTrackByFileNameInList" << oneTrackUrl; - if (oneTrackUrl.isLocalFile()) { - QFileInfo newTrackFile(oneTrackUrl.toLocalFile()); + if (newEntry.mTrackUrl.isLocalFile()) { + QFileInfo newTrackFile(newEntry.mTrackUrl.toLocalFile()); if (newTrackFile.exists()) { d->mData.last().mIsValid = true; } - Q_EMIT newTrackByFileNameInList(oneTrackUrl); + Q_EMIT newTrackByFileNameInList(newEntry.mTrackUrl); } } } diff --git a/src/musicalbum.h b/src/musicalbum.h --- a/src/musicalbum.h +++ b/src/musicalbum.h @@ -105,6 +105,8 @@ void setTracks(const QList &allTracks); + const QList &tracksList() const; + const MusicAudioTrack &trackFromIndex(int index) const; qulonglong trackIdFromIndex(int index) const; diff --git a/src/musicalbum.cpp b/src/musicalbum.cpp --- a/src/musicalbum.cpp +++ b/src/musicalbum.cpp @@ -221,6 +221,11 @@ d->mTracks = allTracks; } +const QList& MusicAlbum::tracksList() const +{ + return d->mTracks; +} + const MusicAudioTrack& MusicAlbum::trackFromIndex(int index) const { return d->mTracks[index];