-
-
-int playlist_NodeGroup( playlist_t * p_playlist , int i_view,
- playlist_item_t *p_root,
- playlist_item_t **pp_items,int i_item,
- int i_mode, int i_type )
-{
- char *psz_search = NULL;
- int i_nodes = 0;
- playlist_item_t **pp_nodes = NULL;
- playlist_item_t *p_node;
- vlc_bool_t b_found;
- int i,j;
- for( i = 0; i< i_item ; i++ )
- {
- if( psz_search ) free( psz_search );
- if( i_mode == SORT_TITLE )
- {
- psz_search = strdup( pp_items[i]->input.psz_name );
- }
- else if ( i_mode == SORT_AUTHOR )
- {
- psz_search = vlc_input_item_GetInfo( &pp_items[i]->input,
- _("Meta-information"), _( "Artist" ) );
- }
- else if ( i_mode == SORT_GENRE )
- {
- psz_search = vlc_input_item_GetInfo( &pp_items[i]->input,
- _("Meta-information"), _( "Genre" ) );
- }
-
- if( psz_search && !strcmp( psz_search, "" ) )
- {
- free( psz_search );
- psz_search = strdup( _("Undefined") );
- }
-
- b_found = VLC_FALSE;
- for( j = 0 ; j< i_nodes; j++ )
- {
- if( !strcasecmp( psz_search, pp_nodes[j]->input.psz_name ) )
- {
- playlist_NodeAppend( p_playlist, i_view,
- pp_items[i], pp_nodes[j] );
- b_found = VLC_TRUE;
- break;
- }
- }
- if( !b_found )
- {
- p_node = playlist_NodeCreate( p_playlist, i_view,psz_search,
- NULL );
- INSERT_ELEM( pp_nodes, i_nodes, i_nodes, p_node );
- playlist_NodeAppend( p_playlist, i_view,
- pp_items[i],p_node );
- }
- }
-
- /* Now, sort the nodes by name */
- playlist_ItemArraySort( p_playlist, i_nodes, pp_nodes, SORT_TITLE,
- i_type );
-
- /* Now, sort each node and append it to the root node*/
- for( i = 0 ; i< i_nodes ; i++ )
- {
- playlist_ItemArraySort( p_playlist, pp_nodes[i]->i_children,
- pp_nodes[i]->pp_children, SORT_TITLE, i_type );
-
- playlist_NodeAppend( p_playlist, i_view,
- pp_nodes[i], p_root );
- }
- return VLC_SUCCESS;
-}