/******* 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 )
{
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()