From 23ea7537e6d550a21264a0694df37063ed1f1c9b Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Sat, 6 Aug 2011 18:06:21 -0400 Subject: [PATCH] Report social action changes and refresh loved playlists --- .../database/databasecommand_socialaction.cpp | 2 ++ .../playlist/customplaylistview.cpp | 25 +++++++++++++++++++ src/libtomahawk/playlist/customplaylistview.h | 3 +++ src/libtomahawk/source.cpp | 7 ++++++ src/libtomahawk/source.h | 6 +++++ 5 files changed, 43 insertions(+) diff --git a/src/libtomahawk/database/databasecommand_socialaction.cpp b/src/libtomahawk/database/databasecommand_socialaction.cpp index 1dc8b4d54..0ae145b54 100644 --- a/src/libtomahawk/database/databasecommand_socialaction.cpp +++ b/src/libtomahawk/database/databasecommand_socialaction.cpp @@ -36,6 +36,8 @@ DatabaseCommand_SocialAction::postCommitHook() { Servent::instance()->triggerDBSync(); } + + source()->reportSocialAttributesChanged(); } diff --git a/src/libtomahawk/playlist/customplaylistview.cpp b/src/libtomahawk/playlist/customplaylistview.cpp index a0ced38a1..c15638947 100644 --- a/src/libtomahawk/playlist/customplaylistview.cpp +++ b/src/libtomahawk/playlist/customplaylistview.cpp @@ -22,6 +22,7 @@ #include "database/databasecommand_genericselect.h" #include "database/database.h" #include "utils/tomahawkutils.h" +#include using namespace Tomahawk; @@ -37,6 +38,16 @@ CustomPlaylistView::CustomPlaylistView( CustomPlaylistView::PlaylistType type, c setPlaylistModel( m_model ); generateTracks(); + + if ( m_type == SourceLovedTracks ) + connect( m_source.data(), SIGNAL( socialAttributesChanged() ), this, SLOT( reload() ) ); + else if ( m_type == AllLovedTracks ) + { + foreach ( const source_ptr& s, SourceList::instance()->sources( true ) ) + connect( s.data(), SIGNAL( socialAttributesChanged() ), this, SLOT( reload() ) ); + + connect( SourceList::instance(), SIGNAL( sourceAdded( Tomahawk::source_ptr ) ), this, SLOT( sourceAdded( Tomahawk::source_ptr ) ) ); + } } @@ -105,3 +116,17 @@ CustomPlaylistView::pixmap() const { return QPixmap( RESPATH "images/loved_playlist.png" ); } + +void +CustomPlaylistView::reload() +{ + m_model->clear(); + generateTracks(); +} + + +void +CustomPlaylistView::sourceAdded( const source_ptr& s) +{ + connect( s.data(), SIGNAL( socialAttributesChanged() ), this, SLOT( reload() ) ); +} diff --git a/src/libtomahawk/playlist/customplaylistview.h b/src/libtomahawk/playlist/customplaylistview.h index 4871c028e..2cf891f79 100644 --- a/src/libtomahawk/playlist/customplaylistview.h +++ b/src/libtomahawk/playlist/customplaylistview.h @@ -51,6 +51,9 @@ public: private slots: void tracksGenerated( QList tracks ); + void reload(); + void sourceAdded( const Tomahawk::source_ptr& ); + private: void generateTracks(); diff --git a/src/libtomahawk/source.cpp b/src/libtomahawk/source.cpp index 8656ca358..be0317a8f 100644 --- a/src/libtomahawk/source.cpp +++ b/src/libtomahawk/source.cpp @@ -312,3 +312,10 @@ Source::trackTimerFired() emit stateChanged(); } + +void +Source::reportSocialAttributesChanged() +{ + emit socialAttributesChanged(); +} + diff --git a/src/libtomahawk/source.h b/src/libtomahawk/source.h index 9b4454a69..9d67c6212 100644 --- a/src/libtomahawk/source.h +++ b/src/libtomahawk/source.h @@ -31,6 +31,7 @@ class DatabaseCommand_LogPlayback; class ControlConnection; +class DatabaseCommand_SocialAction; namespace Tomahawk { @@ -41,6 +42,7 @@ Q_OBJECT friend class ::DatabaseCommand_LogPlayback; friend class ::DBSyncConnection; +friend class ::DatabaseCommand_SocialAction; public: explicit Source( int id, const QString& username = QString() ); @@ -95,6 +97,8 @@ signals: void stateChanged(); + void socialAttributesChanged(); + public slots: void setStats( const QVariantMap& m ); @@ -110,6 +114,8 @@ private slots: void trackTimerFired(); private: + void reportSocialAttributesChanged(); + bool m_isLocal; bool m_online; QString m_username, m_friendlyname;