void GlobalActionManager::playlistCreatedToShow( const playlist_ptr& pl ) { connect( pl.data(), SIGNAL( revisionLoaded( Tomahawk::PlaylistRevision ) ), this, SLOT( playlistReadyToShow() ) ); pl->setProperty( "sharedptr", QVariant::fromValue<Tomahawk::playlist_ptr>( pl ) ); }
playlist_ptr playlist( new Playlist( author, guid, title, info, creator, shared, entries ), &QObject::deleteLater ); playlist->setWeakSelf( playlist.toWeakRef() ); // save to DB in the background // Watch for the created() signal if you need to be sure it's written. // // When a playlist is created it will reportCreated(), adding it to the // collection it belongs to and emitting the appropriate signal. // When we create a new playlist for the local Source.here we call reportCreated() // immediately, so the GUI can reflect the new playlist without waiting for the DB sync // // When createplaylist DBOPs come from peers, the postCommitHook will call // reportCreated for us automatically, which should cause new playlists to be added to the GUI. DatabaseCommand_CreatePlaylist* cmd = new DatabaseCommand_CreatePlaylist( author, playlist ); connect( cmd, SIGNAL( finished() ), playlist.data(), SIGNAL( created() ) ); Database::instance()->enqueue( QSharedPointer<DatabaseCommand>(cmd) ); playlist->reportCreated( playlist ); return playlist; } playlist_ptr Playlist::load( const QString& guid ) { playlist_ptr p; foreach( const Tomahawk::source_ptr& source, SourceList::instance()->sources() ) { p = source->dbCollection()->playlist( guid );