mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-03 04:37:36 +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;
|
qDebug() << Q_FUNC_INFO;
|
||||||
DatabaseCommand_LoadAllDynamicPlaylists* cmd = new DatabaseCommand_LoadAllDynamicPlaylists( source() );
|
DatabaseCommand_LoadAllDynamicPlaylists* cmd = new DatabaseCommand_LoadAllDynamicPlaylists( source() );
|
||||||
|
|
||||||
connect( cmd, SIGNAL( done( const QList<Tomahawk::dynplaylist_ptr>& ) ),
|
connect( cmd, SIGNAL( playlistLoaded( Tomahawk::source_ptr, QVariantList ) ),
|
||||||
SLOT( setDynamicPlaylists( const QList<Tomahawk::dynplaylist_ptr>& ) ) );
|
this, SLOT( dynamicPlaylistCreated( const Tomahawk::source_ptr&, const QVariantList& ) ) );
|
||||||
|
|
||||||
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) );
|
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) );
|
||||||
}
|
}
|
||||||
@@ -116,3 +116,19 @@ DatabaseCollection::tracks()
|
|||||||
|
|
||||||
return Collection::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
|
#define DATABASECOLLECTION_H
|
||||||
|
|
||||||
#include "collection.h"
|
#include "collection.h"
|
||||||
|
#include "source.h"
|
||||||
#include "typedefs.h"
|
#include "typedefs.h"
|
||||||
|
|
||||||
#include "dllmacro.h"
|
#include "dllmacro.h"
|
||||||
@@ -28,6 +29,9 @@ public:
|
|||||||
public slots:
|
public slots:
|
||||||
virtual void addTracks( const QList<QVariant> &newitems );
|
virtual void addTracks( const QList<QVariant> &newitems );
|
||||||
virtual void removeTracks( const QList<QVariant> &olditems );
|
virtual void removeTracks( const QList<QVariant> &olditems );
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void dynamicPlaylistCreated( const Tomahawk::source_ptr& source, const QVariantList& data );
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DATABASECOLLECTION_H
|
#endif // DATABASECOLLECTION_H
|
||||||
|
@@ -36,21 +36,18 @@ void DatabaseCommand_LoadAllDynamicPlaylists::exec( DatabaseImpl* dbi )
|
|||||||
QList<dynplaylist_ptr> plists;
|
QList<dynplaylist_ptr> plists;
|
||||||
while ( query.next() )
|
while ( query.next() )
|
||||||
{
|
{
|
||||||
dynplaylist_ptr p( new DynamicPlaylist( source(), //src
|
QVariantList data = QVariantList() << query.value(6).toString() //current rev
|
||||||
query.value(6).toString(), //current rev
|
<< query.value(1).toString() //title
|
||||||
query.value(1).toString(), //title
|
<< query.value(2).toString() //info
|
||||||
query.value(2).toString(), //info
|
<< query.value(3).toString() //creator
|
||||||
query.value(3).toString(), //creator
|
<< query.value(7).toString() // dynamic type
|
||||||
query.value(7).toString(), // dynamic type
|
<< static_cast<GeneratorMode>(query.value(8).toInt()) // dynamic mode
|
||||||
static_cast<GeneratorMode>(query.value(8).toInt()), // dynamic mode
|
<< query.value(5).toBool() //shared
|
||||||
query.value(5).toBool(), //shared
|
<< query.value(4).toInt() //lastmod
|
||||||
query.value(4).toInt(), //lastmod
|
<< query.value(0).toString(); //GUID
|
||||||
query.value(0).toString() //GUID
|
emit playlistLoaded( source(), data );
|
||||||
|
|
||||||
) );
|
|
||||||
plists.append( p );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
emit done( plists );
|
emit done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,7 +36,8 @@ public:
|
|||||||
virtual QString commandname() const { return "loadalldynamicplaylists"; }
|
virtual QString commandname() const { return "loadalldynamicplaylists"; }
|
||||||
|
|
||||||
signals:
|
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
|
#endif // DATABASECOMMAND_ADDFILES_H
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
class DatabaseCommand_LoadAllDynamicPlaylists;
|
class DatabaseCommand_LoadAllDynamicPlaylists;
|
||||||
class DatabaseCommand_SetDynamicPlaylistRevision;
|
class DatabaseCommand_SetDynamicPlaylistRevision;
|
||||||
class DatabaseCommand_CreateDynamicPlaylist;
|
class DatabaseCommand_CreateDynamicPlaylist;
|
||||||
|
class DatabaseCollection;
|
||||||
|
|
||||||
namespace Tomahawk {
|
namespace Tomahawk {
|
||||||
|
|
||||||
@@ -63,9 +64,9 @@ class DynamicPlaylist : public Playlist
|
|||||||
Q_PROPERTY( int mode WRITE setMode READ mode )
|
Q_PROPERTY( int mode WRITE setMode READ mode )
|
||||||
Q_PROPERTY( QString type WRITE setType READ type )
|
Q_PROPERTY( QString type WRITE setType READ type )
|
||||||
|
|
||||||
friend class ::DatabaseCommand_LoadAllDynamicPlaylists;
|
|
||||||
friend class ::DatabaseCommand_SetDynamicPlaylistRevision;
|
friend class ::DatabaseCommand_SetDynamicPlaylistRevision;
|
||||||
friend class ::DatabaseCommand_CreateDynamicPlaylist;
|
friend class ::DatabaseCommand_CreateDynamicPlaylist;
|
||||||
|
friend class ::DatabaseCollection; /// :-(
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual ~DynamicPlaylist();
|
virtual ~DynamicPlaylist();
|
||||||
@@ -153,7 +154,7 @@ public slots:
|
|||||||
const QList< dyncontrol_ptr>& controls,
|
const QList< dyncontrol_ptr>& controls,
|
||||||
bool applied );
|
bool applied );
|
||||||
private:
|
private:
|
||||||
// called from loadAllPlaylists DB cmd:
|
// called from loadAllPlaylists DB cmd via databasecollection (in GUI thread)
|
||||||
explicit DynamicPlaylist( const source_ptr& src,
|
explicit DynamicPlaylist( const source_ptr& src,
|
||||||
const QString& currentrevision,
|
const QString& currentrevision,
|
||||||
const QString& title,
|
const QString& title,
|
||||||
@@ -177,6 +178,7 @@ private:
|
|||||||
private:
|
private:
|
||||||
QList< dyncontrol_ptr > variantsToControl( const QList< QVariantMap >& controlsV );
|
QList< dyncontrol_ptr > variantsToControl( const QList< QVariantMap >& controlsV );
|
||||||
geninterface_ptr m_generator;
|
geninterface_ptr m_generator;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}; // namespace
|
}; // namespace
|
||||||
|
Reference in New Issue
Block a user