diff --git a/src/libtomahawk/playlist/LovedTracksModel.cpp b/src/libtomahawk/playlist/LovedTracksModel.cpp index b0552d76e..6af5da878 100644 --- a/src/libtomahawk/playlist/LovedTracksModel.cpp +++ b/src/libtomahawk/playlist/LovedTracksModel.cpp @@ -74,7 +74,7 @@ LovedTracksModel::loadTracks() } DatabaseCommand_GenericSelect* cmd = new DatabaseCommand_GenericSelect( sql, DatabaseCommand_GenericSelect::Track, -1, 0 ); - connect( cmd, SIGNAL( tracks( QList ) ), this, SLOT( appendQueries( QList ) ) ); + connect( cmd, SIGNAL( tracks( QList ) ), this, SLOT( tracksLoaded( QList ) ) ); Database::instance()->enqueue( QSharedPointer( cmd ) ); } @@ -131,3 +131,26 @@ LovedTracksModel::isTemporary() const { return true; } + + +void +LovedTracksModel::tracksLoaded( QList< query_ptr > newLoved ) +{ + finishLoading(); + + QList< query_ptr > tracks; + + foreach ( const plentry_ptr ple, playlistEntries() ) + tracks << ple->query(); + + bool changed = false; + QList< query_ptr > mergedTracks = TomahawkUtils::mergePlaylistChanges( tracks, newLoved, changed ); + + if ( changed ) + { + QList el = playlist()->entriesFromQueries( mergedTracks, true ); + + clear(); + appendEntries( el ); + } +} diff --git a/src/libtomahawk/playlist/LovedTracksModel.h b/src/libtomahawk/playlist/LovedTracksModel.h index 6b3b40d1d..9491ef905 100644 --- a/src/libtomahawk/playlist/LovedTracksModel.h +++ b/src/libtomahawk/playlist/LovedTracksModel.h @@ -50,6 +50,7 @@ private slots: void onTrackLoved(); void loadTracks(); + void tracksLoaded( QList ); private: Tomahawk::source_ptr m_source; unsigned int m_limit; diff --git a/src/libtomahawk/playlist/PlaylistModel.h b/src/libtomahawk/playlist/PlaylistModel.h index 88ac0ec90..3963c2faa 100644 --- a/src/libtomahawk/playlist/PlaylistModel.h +++ b/src/libtomahawk/playlist/PlaylistModel.h @@ -77,6 +77,7 @@ protected: bool waitForRevision( const QString& revisionguid ) const { return m_waitForRevision.contains( revisionguid ); } void removeFromWaitList( const QString& revisionguid ) { m_waitForRevision.removeAll( revisionguid ); } + QList playlistEntries() const; private slots: void onRevisionLoaded( Tomahawk::PlaylistRevision revision ); void parsedDroppedTracks( QList ); @@ -86,8 +87,6 @@ private: void beginPlaylistChanges(); void endPlaylistChanges(); - QList playlistEntries() const; - Tomahawk::playlist_ptr m_playlist; bool m_isTemporary; bool m_changesOngoing;