sorting.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:4k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * sorting.h : commun sorting & column display code
  3.  ****************************************************************************
  4.  * Copyright © 2008 the VideoLAN team
  5.  * $Id: 860febd8412b1f558b528ff3c4941b05d0649d38 $
  6.  *
  7.  * Authors: Rafaël Carré <funman@videolanorg>
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22.  *****************************************************************************/
  23. /* You can use these numbers with | and & to determine what you want to show */
  24. enum
  25. {
  26.     COLUMN_NUMBER       = 0x0001,
  27.     COLUMN_TITLE        = 0x0002,
  28.     COLUMN_DURATION     = 0x0004,
  29.     COLUMN_ARTIST       = 0x0008,
  30.     COLUMN_GENRE        = 0x0010,
  31.     COLUMN_ALBUM        = 0x0020,
  32.     COLUMN_TRACK_NUMBER = 0x0040,
  33.     COLUMN_DESCRIPTION  = 0x0080,
  34.     COLUMN_URI          = 0x0100,
  35.     /* Add new entries here and update the COLUMN_END value*/
  36.     COLUMN_END          = 0x0200
  37. };
  38. #define COLUMN_DEFAULT (COLUMN_TITLE|COLUMN_DURATION|COLUMN_ALBUM)
  39. /* Return the title of a column */
  40. static inline const char * psz_column_title( uint32_t i_column )
  41. {
  42.     switch( i_column )
  43.     {
  44.     case COLUMN_NUMBER:          return _("ID");
  45.     case COLUMN_TITLE:           return VLC_META_TITLE;
  46.     case COLUMN_DURATION:        return _("Duration");
  47.     case COLUMN_ARTIST:          return VLC_META_ARTIST;
  48.     case COLUMN_GENRE:           return VLC_META_GENRE;
  49.     case COLUMN_ALBUM:           return VLC_META_ALBUM;
  50.     case COLUMN_TRACK_NUMBER:    return VLC_META_TRACK_NUMBER;
  51.     case COLUMN_DESCRIPTION:     return VLC_META_DESCRIPTION;
  52.     case COLUMN_URI:             return _("URI");
  53.     default: abort();
  54.     }
  55. }
  56. /* Return the meta data associated with an item for a column
  57.  * Returned value has to be freed */
  58. static inline char * psz_column_meta( input_item_t *p_item, uint32_t i_column )
  59. {
  60.     int i_duration;
  61.     char psz_duration[MSTRTIME_MAX_SIZE];
  62.     switch( i_column )
  63.     {
  64.     case COLUMN_NUMBER:
  65.         return NULL;
  66.     case COLUMN_TITLE:
  67.         return input_item_GetTitleFbName( p_item );
  68.     case COLUMN_DURATION:
  69.         i_duration = input_item_GetDuration( p_item ) / 1000000;
  70.         secstotimestr( psz_duration, i_duration );
  71.         return strdup( psz_duration );
  72.     case COLUMN_ARTIST:
  73.         return input_item_GetArtist( p_item );
  74.     case COLUMN_GENRE:
  75.         return input_item_GetGenre( p_item );
  76.     case COLUMN_ALBUM:
  77.         return input_item_GetAlbum( p_item );
  78.     case COLUMN_TRACK_NUMBER:
  79.         return input_item_GetTrackNum( p_item );
  80.     case COLUMN_DESCRIPTION:
  81.         return input_item_GetDescription( p_item );
  82.     case COLUMN_URI:
  83.         return input_item_GetURI( p_item );
  84.     default:
  85.         abort();
  86.     }
  87. }
  88. /* Return the playlist sorting mode for a given column */
  89. static inline int i_column_sorting( uint32_t i_column )
  90. {
  91.     switch( i_column )
  92.     {
  93.     case COLUMN_NUMBER:         return SORT_ID;
  94.     case COLUMN_TITLE:          return SORT_TITLE_NODES_FIRST;
  95.     case COLUMN_DURATION:       return SORT_DURATION;
  96.     case COLUMN_ARTIST:         return SORT_ARTIST;
  97.     case COLUMN_GENRE:          return SORT_GENRE;
  98.     case COLUMN_ALBUM:          return SORT_ALBUM;
  99.     case COLUMN_TRACK_NUMBER:   return SORT_TRACK_NUMBER;
  100.     case COLUMN_DESCRIPTION:    return SORT_DESCRIPTION;
  101.     case COLUMN_URI:            return SORT_URI;
  102.     default: abort();
  103.     }
  104. }