mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-07-31 11:20:22 +02:00
fix xspf auto-updating
This commit is contained in:
@@ -58,28 +58,24 @@ XspfUpdater::updateNow()
|
|||||||
XSPFLoader* l = new XSPFLoader( false, false );
|
XSPFLoader* l = new XSPFLoader( false, false );
|
||||||
l->setAutoResolveTracks( false );
|
l->setAutoResolveTracks( false );
|
||||||
l->load( m_url );
|
l->load( m_url );
|
||||||
connect( l, SIGNAL( ok ( Tomahawk::playlist_ptr ) ), this, SLOT( playlistLoaded() ) );
|
connect( l, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( playlistLoaded( QList<Tomahawk::query_ptr> ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
XspfUpdater::playlistLoaded()
|
XspfUpdater::playlistLoaded( const QList<Tomahawk::query_ptr>& newEntries )
|
||||||
{
|
{
|
||||||
XSPFLoader* loader = qobject_cast<XSPFLoader*>( sender() );
|
|
||||||
Q_ASSERT( loader );
|
|
||||||
|
|
||||||
QList< query_ptr > tracks;
|
QList< query_ptr > tracks;
|
||||||
foreach ( const plentry_ptr ple, playlist()->entries() )
|
foreach ( const plentry_ptr ple, playlist()->entries() )
|
||||||
tracks << ple->query();
|
tracks << ple->query();
|
||||||
|
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
QList< query_ptr > mergedTracks = TomahawkUtils::mergePlaylistChanges( tracks, loader->entries(), changed );
|
QList< query_ptr > mergedTracks = TomahawkUtils::mergePlaylistChanges( tracks, newEntries, changed );
|
||||||
|
|
||||||
if ( !changed )
|
if ( !changed )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QList<Tomahawk::plentry_ptr> el = playlist()->entriesFromQueries( mergedTracks, true );
|
QList<Tomahawk::plentry_ptr> el = playlist()->entriesFromQueries( mergedTracks, true );
|
||||||
playlist()->createNewRevision( uuid(), playlist()->currentrevision(), el );
|
playlist()->createNewRevision( uuid(), playlist()->currentrevision(), el );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@@ -37,6 +37,7 @@ public:
|
|||||||
virtual ~XspfUpdater();
|
virtual ~XspfUpdater();
|
||||||
|
|
||||||
virtual QString type() const { return "xspf"; }
|
virtual QString type() const { return "xspf"; }
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateNow();
|
void updateNow();
|
||||||
|
|
||||||
@@ -46,7 +47,7 @@ protected:
|
|||||||
virtual void removeFromSettings(const QString& group) const;
|
virtual void removeFromSettings(const QString& group) const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void playlistLoaded();
|
void playlistLoaded( const QList<Tomahawk::query_ptr> & );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString m_url;
|
QString m_url;
|
||||||
|
@@ -61,6 +61,7 @@ XSPFLoader::XSPFLoader( bool autoCreate, bool autoUpdate, QObject *parent )
|
|||||||
, m_autoCreate( autoCreate )
|
, m_autoCreate( autoCreate )
|
||||||
, m_autoUpdate( autoUpdate )
|
, m_autoUpdate( autoUpdate )
|
||||||
, m_autoResolve( true )
|
, m_autoResolve( true )
|
||||||
|
, m_autoDelete( true )
|
||||||
, m_NS("http://xspf.org/ns/0/")
|
, m_NS("http://xspf.org/ns/0/")
|
||||||
{
|
{
|
||||||
qRegisterMetaType< XSPFErrorCode >("XSPFErrorCode");
|
qRegisterMetaType< XSPFErrorCode >("XSPFErrorCode");
|
||||||
@@ -266,12 +267,14 @@ XSPFLoader::gotBody()
|
|||||||
new Tomahawk::XspfUpdater( m_playlist, 600000, m_autoUpdate, m_url.toString() );
|
new Tomahawk::XspfUpdater( m_playlist, 600000, m_autoUpdate, m_url.toString() );
|
||||||
emit ok( m_playlist );
|
emit ok( m_playlist );
|
||||||
}
|
}
|
||||||
else{
|
else
|
||||||
|
{
|
||||||
|
|
||||||
if( !m_entries.isEmpty() )
|
if( !m_entries.isEmpty() )
|
||||||
emit tracks( m_entries );
|
emit tracks( m_entries );
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteLater();
|
if ( m_autoDelete )
|
||||||
|
deleteLater();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -48,6 +48,7 @@ public:
|
|||||||
|
|
||||||
void setOverrideTitle( const QString& newTitle );
|
void setOverrideTitle( const QString& newTitle );
|
||||||
void setAutoResolveTracks( bool autoResolve ) { m_autoResolve = autoResolve; }
|
void setAutoResolveTracks( bool autoResolve ) { m_autoResolve = autoResolve; }
|
||||||
|
void setAutoDelete( bool autoDelete ) { m_autoDelete = autoDelete; }
|
||||||
|
|
||||||
static QString errorToString( XSPFErrorCode error );
|
static QString errorToString( XSPFErrorCode error );
|
||||||
|
|
||||||
@@ -69,7 +70,7 @@ private:
|
|||||||
void reportError();
|
void reportError();
|
||||||
void gotBody();
|
void gotBody();
|
||||||
|
|
||||||
bool m_autoCreate, m_autoUpdate, m_autoResolve;
|
bool m_autoCreate, m_autoUpdate, m_autoResolve, m_autoDelete;
|
||||||
QString m_NS,m_overrideTitle;
|
QString m_NS,m_overrideTitle;
|
||||||
QList< Tomahawk::query_ptr > m_entries;
|
QList< Tomahawk::query_ptr > m_entries;
|
||||||
QString m_title, m_info, m_creator;
|
QString m_title, m_info, m_creator;
|
||||||
|
Reference in New Issue
Block a user