From 1bb8ff97d4bd0aa08b29fc5851a5ae3fe7e15ad5 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Fri, 11 Nov 2011 14:27:14 -0500 Subject: [PATCH] Be a bit more resilient in setting the playlist to rename after creating --- src/sourcetree/items/categoryitems.cpp | 22 +++++++++++++++++++--- src/sourcetree/items/categoryitems.h | 4 ++++ 2 files changed, 23 insertions(+), 3 deletions(-) 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