diff --git a/src/libtomahawk/database/databasecollection.cpp b/src/libtomahawk/database/databasecollection.cpp index 483860450..45197bf00 100644 --- a/src/libtomahawk/database/databasecollection.cpp +++ b/src/libtomahawk/database/databasecollection.cpp @@ -33,8 +33,8 @@ DatabaseCollection::loadDynamicPlaylists() qDebug() << Q_FUNC_INFO; DatabaseCommand_LoadAllDynamicPlaylists* cmd = new DatabaseCommand_LoadAllDynamicPlaylists( source() ); - connect( cmd, SIGNAL( done( const QList& ) ), - SLOT( setDynamicPlaylists( const QList& ) ) ); + connect( cmd, SIGNAL( playlistLoaded( Tomahawk::source_ptr, QVariantList ) ), + this, SLOT( dynamicPlaylistCreated( const Tomahawk::source_ptr&, const QVariantList& ) ) ); Database::instance()->enqueue( QSharedPointer( cmd ) ); } @@ -116,3 +116,19 @@ DatabaseCollection::tracks() return Collection::tracks(); } + +void DatabaseCollection::dynamicPlaylistCreated( const source_ptr& source, const QVariantList& data ) +{ + dynplaylist_ptr p( new DynamicPlaylist( source, //src + data[0].toString(), //current rev + data[1].toString(), //title + data[2].toString(), //info + data[3].toString(), //creator + data[4].toString(), // dynamic type + static_cast(data[5].toInt()), // dynamic mode + data[6].toBool(), //shared + data[7].toInt(), //lastmod + data[8].toString() ) ); //GUID + addDynamicPlaylist( p ); +} + diff --git a/src/libtomahawk/database/databasecollection.h b/src/libtomahawk/database/databasecollection.h index 95063ae83..441ce937e 100644 --- a/src/libtomahawk/database/databasecollection.h +++ b/src/libtomahawk/database/databasecollection.h @@ -2,6 +2,7 @@ #define DATABASECOLLECTION_H #include "collection.h" +#include "source.h" #include "typedefs.h" #include "dllmacro.h" @@ -28,6 +29,9 @@ public: public slots: virtual void addTracks( const QList &newitems ); virtual void removeTracks( const QList &olditems ); + +private slots: + void dynamicPlaylistCreated( const Tomahawk::source_ptr& source, const QVariantList& data ); }; #endif // DATABASECOLLECTION_H diff --git a/src/libtomahawk/database/databasecommand_loadalldynamicplaylists.cpp b/src/libtomahawk/database/databasecommand_loadalldynamicplaylists.cpp index 8c945d6ab..b7c0659a5 100644 --- a/src/libtomahawk/database/databasecommand_loadalldynamicplaylists.cpp +++ b/src/libtomahawk/database/databasecommand_loadalldynamicplaylists.cpp @@ -36,21 +36,18 @@ void DatabaseCommand_LoadAllDynamicPlaylists::exec( DatabaseImpl* dbi ) QList plists; while ( query.next() ) { - dynplaylist_ptr p( new DynamicPlaylist( source(), //src - query.value(6).toString(), //current rev - query.value(1).toString(), //title - query.value(2).toString(), //info - query.value(3).toString(), //creator - query.value(7).toString(), // dynamic type - static_cast(query.value(8).toInt()), // dynamic mode - query.value(5).toBool(), //shared - query.value(4).toInt(), //lastmod - query.value(0).toString() //GUID - - ) ); - plists.append( p ); + QVariantList data = QVariantList() << query.value(6).toString() //current rev + << query.value(1).toString() //title + << query.value(2).toString() //info + << query.value(3).toString() //creator + << query.value(7).toString() // dynamic type + << static_cast(query.value(8).toInt()) // dynamic mode + << query.value(5).toBool() //shared + << query.value(4).toInt() //lastmod + << query.value(0).toString(); //GUID + emit playlistLoaded( source(), data ); } - emit done( plists ); + emit done(); } diff --git a/src/libtomahawk/database/databasecommand_loadalldynamicplaylists.h b/src/libtomahawk/database/databasecommand_loadalldynamicplaylists.h index f1b131110..759735dc1 100644 --- a/src/libtomahawk/database/databasecommand_loadalldynamicplaylists.h +++ b/src/libtomahawk/database/databasecommand_loadalldynamicplaylists.h @@ -36,7 +36,8 @@ public: virtual QString commandname() const { return "loadalldynamicplaylists"; } signals: - void done( const QList& playlists ); + void playlistLoaded( const Tomahawk::source_ptr& source, const QVariantList& data ); + void done(); }; #endif // DATABASECOMMAND_ADDFILES_H diff --git a/src/libtomahawk/dynamic/DynamicPlaylist.h b/src/libtomahawk/dynamic/DynamicPlaylist.h index b13442f3d..ad3c17f5d 100644 --- a/src/libtomahawk/dynamic/DynamicPlaylist.h +++ b/src/libtomahawk/dynamic/DynamicPlaylist.h @@ -28,6 +28,7 @@ class DatabaseCommand_LoadAllDynamicPlaylists; class DatabaseCommand_SetDynamicPlaylistRevision; class DatabaseCommand_CreateDynamicPlaylist; +class DatabaseCollection; namespace Tomahawk { @@ -63,9 +64,9 @@ class DynamicPlaylist : public Playlist Q_PROPERTY( int mode WRITE setMode READ mode ) Q_PROPERTY( QString type WRITE setType READ type ) - friend class ::DatabaseCommand_LoadAllDynamicPlaylists; friend class ::DatabaseCommand_SetDynamicPlaylistRevision; friend class ::DatabaseCommand_CreateDynamicPlaylist; + friend class ::DatabaseCollection; /// :-( public: virtual ~DynamicPlaylist(); @@ -153,7 +154,7 @@ public slots: const QList< dyncontrol_ptr>& controls, bool applied ); private: - // called from loadAllPlaylists DB cmd: + // called from loadAllPlaylists DB cmd via databasecollection (in GUI thread) explicit DynamicPlaylist( const source_ptr& src, const QString& currentrevision, const QString& title, @@ -177,6 +178,7 @@ private: private: QList< dyncontrol_ptr > variantsToControl( const QList< QVariantMap >& controlsV ); geninterface_ptr m_generator; + }; }; // namespace