From 595d0cf9879349d64bb13d7682d5ebd31a8875cb Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Thu, 11 Aug 2011 21:11:59 -0400 Subject: [PATCH] Update playlists when revision info comes in --- .../widgets/welcomeplaylistmodel.cpp | 22 +++++++++++++++++++ .../widgets/welcomeplaylistmodel.h | 1 + 2 files changed, 23 insertions(+) diff --git a/src/libtomahawk/widgets/welcomeplaylistmodel.cpp b/src/libtomahawk/widgets/welcomeplaylistmodel.cpp index 478d85550..fbb8fcacf 100644 --- a/src/libtomahawk/widgets/welcomeplaylistmodel.cpp +++ b/src/libtomahawk/widgets/welcomeplaylistmodel.cpp @@ -70,7 +70,13 @@ WelcomePlaylistModel::loadFromSettings() m_recplaylists << pl; if( !m_cached.contains( playlist_guids[i] ) ) + { + if ( pl.dynamicCast< DynamicPlaylist >().isNull() ) + connect( pl.data(), SIGNAL(revisionLoaded(Tomahawk::PlaylistRevision)), this, SLOT(playlistRevisionLoaded()) ); + else + connect( pl.data(), SIGNAL(dynamicRevisionLoaded(Tomahawk::DynamicPlaylistRevision)), this, SLOT(playlistRevisionLoaded()) ); m_cached[playlist_guids[i]] = pl; + } } else m_waitingForSome = true; } @@ -141,6 +147,22 @@ WelcomePlaylistModel::data( const QModelIndex& index, int role ) const } } +void +WelcomePlaylistModel::playlistRevisionLoaded() +{ + Playlist* p = qobject_cast< Playlist* >( sender() ); + Q_ASSERT( p ); + + for ( int i = 0; i < m_recplaylists.size(); i++ ) + { + if ( m_recplaylists[ i ]->guid() == p->guid() ) + { + QModelIndex idx = index( i, 0, QModelIndex() ); + emit dataChanged( idx, idx ); + } + } +} + void WelcomePlaylistModel::onSourceAdded( const Tomahawk::source_ptr& source ) diff --git a/src/libtomahawk/widgets/welcomeplaylistmodel.h b/src/libtomahawk/widgets/welcomeplaylistmodel.h index ef075510b..08d8ffcc6 100644 --- a/src/libtomahawk/widgets/welcomeplaylistmodel.h +++ b/src/libtomahawk/widgets/welcomeplaylistmodel.h @@ -51,6 +51,7 @@ private slots: void loadFromSettings(); void plAdded( const Tomahawk::playlist_ptr& ); + void playlistRevisionLoaded(); private: QList< Tomahawk::playlist_ptr > m_recplaylists;