From 0f47027c9ceff53c482ef8b1a9383fdd15c427b3 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Mon, 2 May 2011 22:14:45 -0400 Subject: [PATCH] Cache playlist guids to speed up reloading --- src/libtomahawk/widgets/welcomeplaylistmodel.cpp | 14 ++++++++++++-- src/libtomahawk/widgets/welcomeplaylistmodel.h | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/widgets/welcomeplaylistmodel.cpp b/src/libtomahawk/widgets/welcomeplaylistmodel.cpp index 8aba306e1..ba48f1289 100644 --- a/src/libtomahawk/widgets/welcomeplaylistmodel.cpp +++ b/src/libtomahawk/widgets/welcomeplaylistmodel.cpp @@ -48,9 +48,17 @@ WelcomePlaylistModel::loadFromSettings() for( int i = playlist_guids.size() - 1; i >= 0; i-- ) { qDebug() << "loading playlist" << playlist_guids[i]; - Tomahawk::playlist_ptr pl = Tomahawk::Playlist::load( playlist_guids[i] ); - if ( !pl.isNull() ) + + playlist_ptr pl = m_cached.value( playlist_guids[i], playlist_ptr() ); + if( pl.isNull() ) + pl = Tomahawk::Playlist::load( playlist_guids[i] ); + + if ( !pl.isNull() ) { m_recplaylists << pl; + + if( !m_cached.contains( playlist_guids[i] ) ) + m_cached[playlist_guids[i]] = pl; + } } endResetModel(); @@ -108,6 +116,8 @@ WelcomePlaylistModel::onPlaylistsRemoved( QList< playlist_ptr > playlists ) foreach( const playlist_ptr& pl, playlists ) { if( m_recplaylists.contains( pl ) ) { m_artists.remove( pl ); + m_cached.remove( pl->guid() ); + int idx = m_recplaylists.indexOf( pl ); beginRemoveRows( QModelIndex(), idx, idx ); m_recplaylists.removeAt( idx ); diff --git a/src/libtomahawk/widgets/welcomeplaylistmodel.h b/src/libtomahawk/widgets/welcomeplaylistmodel.h index 74ae0887c..0127ce3cd 100644 --- a/src/libtomahawk/widgets/welcomeplaylistmodel.h +++ b/src/libtomahawk/widgets/welcomeplaylistmodel.h @@ -50,6 +50,7 @@ private slots: private: QList< Tomahawk::playlist_ptr > m_recplaylists; + QHash< QString, Tomahawk::playlist_ptr > m_cached; mutable QHash< Tomahawk::playlist_ptr, QString > m_artists; };