diff --git a/src/sourcetree/items/categoryitems.cpp b/src/sourcetree/items/categoryitems.cpp index 896ffdd21..cd0461f25 100644 --- a/src/sourcetree/items/categoryitems.cpp +++ b/src/sourcetree/items/categoryitems.cpp @@ -201,8 +201,9 @@ CategoryAddItem::dropMimeData( const QMimeData* data, Qt::DropAction ) } QString name = firstArtist.isEmpty() ? tr( "New Station" ) : tr( "%1 Station" ).arg( firstArtist ); - newpl->rename( name ); newpl->createNewRevision( uuid(), newpl->currentrevision(), newpl->type(), contrls ); + newpl->setProperty( "newname", name ); + connect( newpl.data(), SIGNAL( dynamicRevisionLoaded( Tomahawk::DynamicPlaylistRevision ) ), this, SLOT( playlistToRenameLoaded() ) ); ViewManager::instance()->show( newpl ); return true; @@ -278,6 +279,22 @@ CategoryAddItem::dropMimeData( const QMimeData* data, Qt::DropAction ) return true; } +void +CategoryAddItem::playlistToRenameLoaded() +{ + Playlist* pl = qobject_cast< Playlist* >( sender() ); + Q_ASSERT( pl ); + + QString name = sender()->property( "newname" ).toString(); + if ( !name.isEmpty() ) + pl->rename( name ); + else + QTimer::singleShot( 400, APP->mainWindow()->sourceTreeView(), SLOT( renamePlaylist() ) ); + + disconnect( pl, SIGNAL( dynamicRevisionLoaded( Tomahawk::DynamicPlaylistRevision ) ), this, SLOT( playlistToRenameLoaded() ) ); +} + + void CategoryAddItem::parsedDroppedTracks( const QList< query_ptr >& tracks ) { @@ -322,8 +339,7 @@ CategoryAddItem::parsedDroppedTracks( const QList< query_ptr >& tracks ) newpl->createNewRevision( uuid(), newpl->currentrevision(), newpl->type(), contrls ); ViewManager::instance()->show( newpl ); - // Give a shot to try to rename it. The playlist has to be created first. ugly. - QTimer::singleShot( 300, APP->mainWindow()->sourceTreeView(), SLOT( renamePlaylist() ) ); + connect( newpl.data(), SIGNAL( dynamicRevisionLoaded( Tomahawk::DynamicPlaylistRevision ) ), this, SLOT( playlistToRenameLoaded() ) ); } } diff --git a/src/sourcetree/items/categoryitems.h b/src/sourcetree/items/categoryitems.h index c4dab244d..38fa34302 100644 --- a/src/sourcetree/items/categoryitems.h +++ b/src/sourcetree/items/categoryitems.h @@ -40,9 +40,13 @@ private slots: void parsedDroppedTracks( const QList< Tomahawk::query_ptr >& tracks ); void dialogClosed( int ret ); + // + void playlistToRenameLoaded(); private: SourcesModel::CategoryType m_categoryType; QIcon m_icon; + public slots: + }; class CategoryItem : public SourceTreeItem