[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/multimedia/amarok/src
From:       Bart Cerneels <bart.cerneels () kde ! org>
Date:       2009-07-13 20:59:09
Message-ID: 1247518749.824223.20542.nullmailer () svn ! kde ! org
[Download RAW message or body]

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<PopupDropperAction *>
 PlaylistBrowserNS::UserModel::actionsFor( const QModelIndexList &indices )
 {
-    DEBUG_BLOCK
-    QList<PopupDropperAction *> actions;
+    QSet<PopupDropperAction *> actions;
+    QList<PopupDropperAction *> 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<UserPlaylistProvider *> ( \
                The::playlistManager()->getProviderForPlaylist( \
                m_selectedPlaylists.front() ) );
-//        UserPlaylistProvider *provider = qobject_cast<UserPlaylistProvider *> ( \
prov ); +        UserPlaylistProvider *provider =
+                qobject_cast<UserPlaylistProvider *>(
+                        The::playlistManager()->getProviderForPlaylist(
+                                    m_selectedPlaylists.front()
+                                )
+                        );
 
-        if( provider )
-        {
-            if( !selectedPlaylists().isEmpty() )
-                actions << provider->playlistActions( m_selectedPlaylists );
-        }
+        if( provider && !selectedPlaylists().isEmpty() )
+            actions +=
+                    QSet<PopupDropperAction *>::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<PopupDropperAction *> 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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic