1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-03-23 17:29:42 +01:00

Speed up the loved tracks model

This commit is contained in:
Leo Franchi 2012-07-31 18:11:14 -04:00
parent 0c4db907b3
commit ddfef98e20
3 changed files with 26 additions and 3 deletions

View File

@ -74,7 +74,7 @@ LovedTracksModel::loadTracks()
}
DatabaseCommand_GenericSelect* cmd = new DatabaseCommand_GenericSelect( sql, DatabaseCommand_GenericSelect::Track, -1, 0 );
connect( cmd, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( appendQueries( QList<Tomahawk::query_ptr> ) ) );
connect( cmd, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( tracksLoaded( QList<Tomahawk::query_ptr> ) ) );
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( 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<Tomahawk::plentry_ptr> el = playlist()->entriesFromQueries( mergedTracks, true );
clear();
appendEntries( el );
}
}

View File

@ -50,6 +50,7 @@ private slots:
void onTrackLoved();
void loadTracks();
void tracksLoaded( QList<Tomahawk::query_ptr> );
private:
Tomahawk::source_ptr m_source;
unsigned int m_limit;

View File

@ -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<Tomahawk::plentry_ptr> playlistEntries() const;
private slots:
void onRevisionLoaded( Tomahawk::PlaylistRevision revision );
void parsedDroppedTracks( QList<Tomahawk::query_ptr> );
@ -86,8 +87,6 @@ private:
void beginPlaylistChanges();
void endPlaylistChanges();
QList<Tomahawk::plentry_ptr> playlistEntries() const;
Tomahawk::playlist_ptr m_playlist;
bool m_isTemporary;
bool m_changesOngoing;