mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-07-31 03:10:12 +02:00
create dynamic playlists in GUI thread
not fixed everywhere yet, dbcmd unserialized from json creates it in the worker thread still
This commit is contained in:
@@ -33,8 +33,8 @@ DatabaseCollection::loadDynamicPlaylists()
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
DatabaseCommand_LoadAllDynamicPlaylists* cmd = new DatabaseCommand_LoadAllDynamicPlaylists( source() );
|
||||
|
||||
connect( cmd, SIGNAL( done( const QList<Tomahawk::dynplaylist_ptr>& ) ),
|
||||
SLOT( setDynamicPlaylists( const QList<Tomahawk::dynplaylist_ptr>& ) ) );
|
||||
connect( cmd, SIGNAL( playlistLoaded( Tomahawk::source_ptr, QVariantList ) ),
|
||||
this, SLOT( dynamicPlaylistCreated( const Tomahawk::source_ptr&, const QVariantList& ) ) );
|
||||
|
||||
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( 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<GeneratorMode>(data[5].toInt()), // dynamic mode
|
||||
data[6].toBool(), //shared
|
||||
data[7].toInt(), //lastmod
|
||||
data[8].toString() ) ); //GUID
|
||||
addDynamicPlaylist( p );
|
||||
}
|
||||
|
||||
|
@@ -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<QVariant> &newitems );
|
||||
virtual void removeTracks( const QList<QVariant> &olditems );
|
||||
|
||||
private slots:
|
||||
void dynamicPlaylistCreated( const Tomahawk::source_ptr& source, const QVariantList& data );
|
||||
};
|
||||
|
||||
#endif // DATABASECOLLECTION_H
|
||||
|
@@ -36,21 +36,18 @@ void DatabaseCommand_LoadAllDynamicPlaylists::exec( DatabaseImpl* dbi )
|
||||
QList<dynplaylist_ptr> 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<GeneratorMode>(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<GeneratorMode>(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();
|
||||
}
|
||||
|
||||
|
@@ -36,7 +36,8 @@ public:
|
||||
virtual QString commandname() const { return "loadalldynamicplaylists"; }
|
||||
|
||||
signals:
|
||||
void done( const QList<Tomahawk::dynplaylist_ptr>& playlists );
|
||||
void playlistLoaded( const Tomahawk::source_ptr& source, const QVariantList& data );
|
||||
void done();
|
||||
};
|
||||
|
||||
#endif // DATABASECOMMAND_ADDFILES_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
|
||||
|
Reference in New Issue
Block a user