From kde-commits Mon Jul 13 20:59:09 2009 From: Bart Cerneels Date: Mon, 13 Jul 2009 20:59:09 +0000 To: kde-commits Subject: extragear/multimedia/amarok/src Message-Id: <1247518749.824223.20542.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=124751875904473 SVN commit 996108 by shanachie: Fix deletion of multiple UserPlaylists. CCBUG:197144 M +18 -26 browsers/playlistbrowser/UserPlaylistModel.cpp M +0 -1 browsers/playlistbrowser/UserPlaylistModel.h M +8 -0 playlistmanager/sql/SqlUserPlaylistProvider.cpp M +1 -0 playlistmanager/sql/SqlUserPlaylistProvider.h --- trunk/extragear/multimedia/amarok/src/browsers/playlistbrowser/UserPlaylistModel.cpp #996107:996108 @@ -68,7 +68,6 @@ : MetaPlaylistModel() , m_appendAction( 0 ) , m_loadAction( 0 ) - , m_deleteAction( 0 ) { s_instance = this; loadPlaylists(); @@ -400,31 +399,33 @@ QList PlaylistBrowserNS::UserModel::actionsFor( const QModelIndexList &indices ) { - DEBUG_BLOCK - QList actions; + QSet actions; + QList actionList; m_selectedPlaylists.clear(); m_selectedPlaylists << selectedPlaylists( indices ); m_selectedTracks.clear(); m_selectedTracks << selectedTracks( indices ); - actions << createCommonActions( indices ); - - //only if only one playlist is selected - if( m_selectedPlaylists.count() == 1 ) + if( !m_selectedPlaylists.isEmpty() ) { - //HACK: since we only have one UserPlaylistProvider implementation -// UserPlaylistProvider *provider = The::playlistManager()->defaultUserPlaylists(); - UserPlaylistProvider *provider = qobject_cast ( The::playlistManager()->getProviderForPlaylist( m_selectedPlaylists.front() ) ); -// UserPlaylistProvider *provider = qobject_cast ( prov ); + UserPlaylistProvider *provider = + qobject_cast( + The::playlistManager()->getProviderForPlaylist( + m_selectedPlaylists.front() + ) + ); - if( provider ) - { - if( !selectedPlaylists().isEmpty() ) - actions << provider->playlistActions( m_selectedPlaylists ); - } + if( provider && !selectedPlaylists().isEmpty() ) + actions += + QSet::fromList( + provider->playlistActions( m_selectedPlaylists ) + ); } - return actions; + actionList = actions.toList(); + actionList << createCommonActions( indices ); + + return actionList; } void @@ -461,19 +462,10 @@ connect( m_loadAction, SIGNAL( triggered() ), this, SLOT( slotLoad() ) ); } - if ( m_deleteAction == 0 ) - { - m_deleteAction = new PopupDropperAction( The::svgHandler()->getRenderer( "amarok/images/pud_items.svg" ), "delete", KIcon( "media-track-remove-amarok" ), i18n( "&Delete" ), this ); - connect( m_deleteAction, SIGNAL( triggered() ), The::playlistManager()->defaultUserPlaylists(), SLOT( slotDelete() ) ); - } - actions << m_deleteAction; - - if ( indices.count() > 0 ) { actions << m_appendAction; actions << m_loadAction; - actions << m_deleteAction; } return actions; --- trunk/extragear/multimedia/amarok/src/browsers/playlistbrowser/UserPlaylistModel.h #996107:996108 @@ -103,7 +103,6 @@ QList createCommonActions( QModelIndexList indices ); PopupDropperAction *m_appendAction; PopupDropperAction *m_loadAction; - PopupDropperAction *m_deleteAction; Meta::PlaylistList m_selectedPlaylists; Meta::PlaylistList selectedPlaylists( const QModelIndexList &list ); --- trunk/extragear/multimedia/amarok/src/playlistmanager/sql/SqlUserPlaylistProvider.cpp #996107:996108 @@ -41,6 +41,7 @@ SqlUserPlaylistProvider::SqlUserPlaylistProvider() : UserPlaylistProvider() , m_renameAction( 0 ) + , m_deleteAction( 0 ) { checkTables(); m_root = Meta::SqlPlaylistGroupPtr( new Meta::SqlPlaylistGroup( "", @@ -117,6 +118,13 @@ } actions << m_renameAction; + if ( m_deleteAction == 0 ) + { + m_deleteAction = new PopupDropperAction( The::svgHandler()->getRenderer( "amarok/images/pud_items.svg" ), "delete", KIcon( "media-track-remove-amarok" ), i18n( "&Delete" ), this ); + connect( m_deleteAction, SIGNAL( triggered() ), SLOT( slotDelete() ) ); + } + actions << m_deleteAction; + return actions; } --- trunk/extragear/multimedia/amarok/src/playlistmanager/sql/SqlUserPlaylistProvider.h #996107:996108 @@ -71,6 +71,7 @@ { return m_selectedPlaylists; }; Meta::SqlPlaylistList m_selectedPlaylists; PopupDropperAction *m_renameAction; + PopupDropperAction *m_deleteAction; }; #endif