]> git.sesse.net Git - vlc/commitdiff
Qt: simplify selected item deletion in playlist model
authorJakob Leben <jleben@videolan.org>
Wed, 10 Feb 2010 08:48:49 +0000 (09:48 +0100)
committerJakob Leben <jleben@videolan.org>
Wed, 10 Feb 2010 10:07:39 +0000 (11:07 +0100)
modules/gui/qt4/components/playlist/playlist_model.cpp
modules/gui/qt4/components/playlist/playlist_model.hpp

index 8ef12357f2ed2e38c17ef360a665d9c5164ef272..742c58cc9388d3b65efdce263adf7fad183652af 100644 (file)
@@ -757,18 +757,22 @@ void PLModel::doDelete( QModelIndexList selected )
 {
     if( !canEdit() ) return;
 
-    for( int i = selected.size() -1 ; i >= 0; i-- )
+    while( !selected.isEmpty() )
     {
-        QModelIndex index = selected[i];
+        QModelIndex index = selected[0];
+        selected.removeAt( 0 );
+
         if( index.column() != 0 ) continue;
+
         PLItem *item = getItem( index );
-        if( item )
-        {
-            if( item->children.size() )
-                recurseDelete( item->children, &selected );
-            doDeleteItem( item, &selected );
-        }
-        if( i > selected.size() ) i = selected.size();
+        if( item->children.size() )
+            recurseDelete( item->children, &selected );
+
+        PL_LOCK;
+        playlist_DeleteFromInput( p_playlist, item->p_input, pl_Locked );
+        PL_UNLOCK;
+
+        removeItem( item );
     }
 }
 
@@ -779,29 +783,10 @@ void PLModel::recurseDelete( QList<PLItem*> children, QModelIndexList *fullList
         PLItem *item = children[i];
         if( item->children.size() )
             recurseDelete( item->children, fullList );
-        doDeleteItem( item, fullList );
+        fullList->removeAll( index( item, 0 ) );
     }
 }
 
-void PLModel::doDeleteItem( PLItem *item, QModelIndexList *fullList )
-{
-    QModelIndex deleteIndex = index( item, 0 );
-    fullList->removeAll( deleteIndex );
-
-    PL_LOCK;
-    playlist_item_t *p_item = playlist_ItemGetById( p_playlist, item->i_id );
-    if( !p_item )
-    {
-        PL_UNLOCK;
-        return;
-    }
-    playlist_DeleteFromInput( p_playlist, p_item->p_input, pl_Locked );
-    PL_UNLOCK;
-
-    /* And finally, remove it from the tree */
-    removeItem( item );
-}
-
 /******* Volume III: Sorting and searching ********/
 void PLModel::sort( int column, Qt::SortOrder order )
 {
index cb5e68c3e04766c9ee682acc8f9eeaa6b6c192c5..67c8726ac6ab3a483103d7c573840ab1e1b0777d 100644 (file)
@@ -120,7 +120,6 @@ private:
 
     /* Actions */
     void recurseDelete( QList<PLItem*> children, QModelIndexList *fullList );
-    void doDeleteItem( PLItem *item, QModelIndexList *fullList );
     void updateTreeItem( PLItem * );
     void removeItem ( PLItem * );
     void takeItem( PLItem * ); //will not delete item