From eec8b76de092eba093088a5779396f542fa04d19 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Tue, 27 Mar 2012 11:26:33 -0400 Subject: [PATCH] fix xspf auto-updating (cherry picked from commit c54ca787693cd3a3e0340dfcb08032a09d6059cf) --- src/libtomahawk/playlist/XspfUpdater.cpp | 10 +++------- src/libtomahawk/playlist/XspfUpdater.h | 3 ++- src/libtomahawk/utils/xspfloader.cpp | 7 +++++-- src/libtomahawk/utils/xspfloader.h | 3 ++- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/libtomahawk/playlist/XspfUpdater.cpp b/src/libtomahawk/playlist/XspfUpdater.cpp index a9d794334..2eb1d7a1e 100644 --- a/src/libtomahawk/playlist/XspfUpdater.cpp +++ b/src/libtomahawk/playlist/XspfUpdater.cpp @@ -58,28 +58,24 @@ XspfUpdater::updateNow() XSPFLoader* l = new XSPFLoader( false, false ); l->setAutoResolveTracks( false ); l->load( m_url ); - connect( l, SIGNAL( ok ( Tomahawk::playlist_ptr ) ), this, SLOT( playlistLoaded() ) ); + connect( l, SIGNAL( tracks( QList ) ), this, SLOT( playlistLoaded( QList ) ) ); } void -XspfUpdater::playlistLoaded() +XspfUpdater::playlistLoaded( const QList& newEntries ) { - XSPFLoader* loader = qobject_cast( sender() ); - Q_ASSERT( loader ); - QList< query_ptr > tracks; foreach ( const plentry_ptr ple, playlist()->entries() ) tracks << ple->query(); bool changed = false; - QList< query_ptr > mergedTracks = TomahawkUtils::mergePlaylistChanges( tracks, loader->entries(), changed ); + QList< query_ptr > mergedTracks = TomahawkUtils::mergePlaylistChanges( tracks, newEntries, changed ); if ( !changed ) return; QList el = playlist()->entriesFromQueries( mergedTracks, true ); playlist()->createNewRevision( uuid(), playlist()->currentrevision(), el ); - } void diff --git a/src/libtomahawk/playlist/XspfUpdater.h b/src/libtomahawk/playlist/XspfUpdater.h index c5254d79a..227c9ab4a 100644 --- a/src/libtomahawk/playlist/XspfUpdater.h +++ b/src/libtomahawk/playlist/XspfUpdater.h @@ -37,6 +37,7 @@ public: virtual ~XspfUpdater(); virtual QString type() const { return "xspf"; } + public slots: void updateNow(); @@ -46,7 +47,7 @@ protected: virtual void removeFromSettings(const QString& group) const; private slots: - void playlistLoaded(); + void playlistLoaded( const QList & ); private: QString m_url; diff --git a/src/libtomahawk/utils/xspfloader.cpp b/src/libtomahawk/utils/xspfloader.cpp index c5118875d..9fd0c7369 100644 --- a/src/libtomahawk/utils/xspfloader.cpp +++ b/src/libtomahawk/utils/xspfloader.cpp @@ -60,6 +60,7 @@ XSPFLoader::XSPFLoader( bool autoCreate, bool autoUpdate, QObject *parent ) , m_autoCreate( autoCreate ) , m_autoUpdate( autoUpdate ) , m_autoResolve( true ) + , m_autoDelete( true ) , m_NS("http://xspf.org/ns/0/") { qRegisterMetaType< XSPFErrorCode >("XSPFErrorCode"); @@ -265,12 +266,14 @@ XSPFLoader::gotBody() new Tomahawk::XspfUpdater( m_playlist, 600000, m_autoUpdate, m_url.toString() ); emit ok( m_playlist ); } - else{ + else + { if( !m_entries.isEmpty() ) emit tracks( m_entries ); } - deleteLater(); + if ( m_autoDelete ) + deleteLater(); } diff --git a/src/libtomahawk/utils/xspfloader.h b/src/libtomahawk/utils/xspfloader.h index eee77de96..e4e912618 100644 --- a/src/libtomahawk/utils/xspfloader.h +++ b/src/libtomahawk/utils/xspfloader.h @@ -48,6 +48,7 @@ public: void setOverrideTitle( const QString& newTitle ); void setAutoResolveTracks( bool autoResolve ) { m_autoResolve = autoResolve; } + void setAutoDelete( bool autoDelete ) { m_autoDelete = autoDelete; } static QString errorToString( XSPFErrorCode error ); @@ -69,7 +70,7 @@ private: void reportError(); void gotBody(); - bool m_autoCreate, m_autoUpdate, m_autoResolve; + bool m_autoCreate, m_autoUpdate, m_autoResolve, m_autoDelete; QString m_NS,m_overrideTitle; QList< Tomahawk::query_ptr > m_entries; QString m_title, m_info, m_creator;