Add tree-view for SD only
authorGeoffroy Couprie <geo.couprie@gmail.com>
Fri, 22 Aug 2008 13:12:35 +0000 (15:12 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Fri, 22 Aug 2008 22:14:01 +0000 (15:14 -0700)
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
include/vlc_input.h
src/input/item.c
src/playlist/services_discovery.c
src/playlist/tree.c

index d3d672b..f97d196 100644 (file)
@@ -73,6 +73,7 @@ struct input_item_t
     mtime_t    i_duration;           /**< Duration in milliseconds*/
 
     uint8_t    i_type;               /**< Type (file, disc, ...) */
+    bool b_prefers_tree;             /**< Do we prefer being displayed as tree*/
 
     int        i_categories;         /**< Number of info categories */
     info_category_t **pp_categories; /**< Pointer to the first info category */
index d5c154e..91d30de 100644 (file)
@@ -543,6 +543,7 @@ input_item_t *input_item_NewWithType( vlc_object_t *p_obj, const char *psz_uri,
         p_input->psz_uri = NULL;
 
     p_input->i_type = i_type;
+    p_input->b_prefers_tree = false;
 
     if( p_input->i_type == ITEM_TYPE_UNKNOWN )
         GuessType( p_input );
index 1f2d9bf..13b01bb 100644 (file)
@@ -355,6 +355,9 @@ int playlist_ServicesDiscoveryAdd( playlist_t *p_playlist,  const char *psz_modu
         p_sds = malloc( sizeof(struct playlist_services_discovery_support_t) );
         if( !p_sds )
             return VLC_ENOMEM;
+
+        /* We want tree-view for service directory */
+        p_one->p_input->b_prefers_tree = true;
         p_sds->p_sd = p_sd;
         p_sds->p_one = p_one;
         p_sds->p_cat = p_cat;
index 1a8d0cc..4f7f7f2 100644 (file)
@@ -336,7 +336,7 @@ playlist_item_t * playlist_GetPreferredNode( playlist_t *p_playlist,
     int i;
     if( p_node->p_parent == p_playlist->p_root_category )
     {
-        if( p_playlist->b_tree )
+        if( p_playlist->b_tree || p_node->p_input->b_prefers_tree )
             return p_node;
         for( i = 0 ; i< p_playlist->p_root_onelevel->i_children; i++ )
         {
@@ -347,7 +347,7 @@ playlist_item_t * playlist_GetPreferredNode( playlist_t *p_playlist,
     }
     else if( p_node->p_parent == p_playlist->p_root_onelevel )
     {
-        if( !p_playlist->b_tree )
+        if( !p_playlist->b_tree || !p_node->p_input->b_prefers_tree )
             return p_node;
         for( i = 0 ; i< p_playlist->p_root_category->i_children; i++ )
         {