]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/components/playlist/playlist_model.cpp
Remove the Rating column from the inteface because with don't save any information...
[vlc] / modules / gui / qt4 / components / playlist / playlist_model.cpp
index 9709a4c14ee8c93ccaa5341949b74d41e91d23c6..c7a5ff8f38cdc0a56915b66a489e98320eb460ff 100644 (file)
@@ -715,18 +715,48 @@ void PLModel::doDeleteItem( PLItem *item, QModelIndexList *fullList )
 /******* Volume III: Sorting and searching ********/
 void PLModel::sort( int column, Qt::SortOrder order )
 {
+    int i_index = -1;
+    int i_flag = 0;
+
+#define CHECK_COLUMN( meta )                        \
+{                                                   \
+    if( ( shownFlags() & VLC_META_ENGINE_##meta ) ) \
+        i_index++;                                  \
+    if( column == i_index )                         \
+    {                                               \
+        i_flag = VLC_META_ENGINE_##meta;            \
+        goto next;                                  \
+    }                                               \
+}
+    CHECK_COLUMN( TITLE );
+    CHECK_COLUMN( DURATION );
+    CHECK_COLUMN( ARTIST );
+    CHECK_COLUMN( GENRE );
+    CHECK_COLUMN( COLLECTION );
+    CHECK_COLUMN( SEQ_NUM );
+    CHECK_COLUMN( DESCRIPTION );
+    CHECK_COLUMN( TRACKID );
+
+#undef CHECK_COLUMN;
+
+next:
     PL_LOCK;
     {
         playlist_item_t *p_root = playlist_ItemGetById( p_playlist,
                                                         rootItem->i_id,
                                                         VLC_TRUE );
         int i_mode;
-        switch( column )
+        switch( i_flag )
         {
-        case 0: i_mode = SORT_TITLE_NODES_FIRST;break;
-        case 1: i_mode = SORT_DURATION; break;
-        case 2: i_mode = SORT_ARTIST;break;
-        default: i_mode = SORT_TITLE_NODES_FIRST; break;
+        case VLC_META_ENGINE_TITLE:      i_mode = SORT_TITLE_NODES_FIRST;break;
+        case VLC_META_ENGINE_DURATION:   i_mode = SORT_DURATION;         break;
+        case VLC_META_ENGINE_ARTIST:     i_mode = SORT_ARTIST;           break;
+        case VLC_META_ENGINE_GENRE:      i_mode = SORT_GENRE;            break;
+        case VLC_META_ENGINE_COLLECTION: i_mode = SORT_ALBUM;            break;
+        case VLC_META_ENGINE_SEQ_NUM:    i_mode = SORT_TRACK_NUMBER;     break;
+        case VLC_META_ENGINE_DESCRIPTION:i_mode = SORT_DESCRIPTION;      break;
+        case VLC_META_ENGINE_TRACKID:    i_mode = SORT_ID;               break;
+        default:                         i_mode = SORT_TITLE_NODES_FIRST;break;
         }
         if( p_root )
         {
@@ -796,52 +826,54 @@ void PLModel::popup( QModelIndex & index, QPoint &point, QModelIndexList list )
 
 void PLModel::viewchanged( int meta )
 {
-   if( rootItem )
-   {
-       int index=0;
-       switch( meta )
-       {
-       case VLC_META_ENGINE_TITLE:
-           index=0; break;
-       case VLC_META_ENGINE_DURATION:
-           index=1; break;
-       case VLC_META_ENGINE_ARTIST:
-           index=2; break;
-       case VLC_META_ENGINE_GENRE:
-           index=3; break;
-       case VLC_META_ENGINE_COPYRIGHT:
-           index=4; break;
-       case VLC_META_ENGINE_COLLECTION:
-           index=5; break;
-       case VLC_META_ENGINE_SEQ_NUM:
-           index=6; break;
-       case VLC_META_ENGINE_DESCRIPTION:
-           index=7; break;
-       default:
-           break;
-       }
-       /* UNUSED        emit layoutAboutToBeChanged(); */
-       index = __MIN( index , rootItem->item_col_strings.count() );
-       QModelIndex parent = createIndex( 0, 0, rootItem );
-
-       if( rootItem->i_showflags & meta )
-           /* Removing columns */
-       {
-           beginRemoveColumns( parent, index, index+1 );
-           rootItem->i_showflags &= ~( meta );
-           rootItem->updateColumnHeaders();
-           endRemoveColumns();
-       }
-       else
-       {
-           /* Adding columns */
-           beginInsertColumns( createIndex( 0, 0, rootItem), index, index+1 );
-           rootItem->i_showflags |= meta;
-           rootItem->updateColumnHeaders();
-           endInsertColumns();
-       }
-       rebuild();
-   }
+    if( rootItem )
+    {
+        int index=0;
+        switch( meta )
+        {
+        case VLC_META_ENGINE_TITLE:
+            index=0; break;
+        case VLC_META_ENGINE_DURATION:
+            index=1; break;
+        case VLC_META_ENGINE_ARTIST:
+            index=2; break;
+        case VLC_META_ENGINE_GENRE:
+            index=3; break;
+        case VLC_META_ENGINE_COPYRIGHT:
+            index=4; break;
+        case VLC_META_ENGINE_COLLECTION:
+            index=5; break;
+        case VLC_META_ENGINE_SEQ_NUM:
+            index=6; break;
+        case VLC_META_ENGINE_DESCRIPTION:
+            index=7; break;
+        case VLC_META_ENGINE_TRACKID:
+            index=8; break;
+        default:
+            break;
+        }
+        /* UNUSED        emit layoutAboutToBeChanged(); */
+        index = __MIN( index, rootItem->item_col_strings.count() );
+        QModelIndex parent = createIndex( 0, 0, rootItem );
+
+        if( rootItem->i_showflags & meta )
+            /* Removing columns */
+        {
+            beginRemoveColumns( parent, index, index+1 );
+            rootItem->i_showflags &= ~( meta );
+            rootItem->updateColumnHeaders();
+            endRemoveColumns();
+        }
+        else
+        {
+            /* Adding columns */
+            beginInsertColumns( createIndex( 0, 0, rootItem), index, index+1 );
+            rootItem->i_showflags |= meta;
+            rootItem->updateColumnHeaders();
+            endInsertColumns();
+        }
+        rebuild();
+    }
 }
 
 void PLModel::popupDel()