Category and subcategory items are also integers. Fix #1086
authorRémi Denis-Courmont <rem@videolan.org>
Sun, 15 Apr 2007 10:13:05 +0000 (10:13 +0000)
committerRémi Denis-Courmont <rem@videolan.org>
Sun, 15 Apr 2007 10:13:05 +0000 (10:13 +0000)
include/vlc_configuration.h
modules/gui/qt4/components/complete_preferences.cpp
src/modules/configuration.c
src/modules/configuration.h

index 2757146..a0235d5 100644 (file)
@@ -69,34 +69,6 @@ extern "C" {
 
 #define CONFIG_ITEM                         0x00F0
 
 
 #define CONFIG_ITEM                         0x00F0
 
-/* Item types that use a string value (i.e. serialized in the module cache) */
-#define CONFIG_STRING_TYPES \
-    { \
-        CONFIG_ITEM_STRING, CONFIG_ITEM_FILE, CONFIG_ITEM_MODULE, \
-        CONFIG_ITEM_DIRECTORY, CONFIG_ITEM_MODULE_CAT, \
-        CONFIG_ITEM_MODULE_LIST, CONFIG_ITEM_MODULE_LIST_CAT \
-    }
-
-static inline int IsConfigStringType (int type)
-{
-    const unsigned char config_string_types[] = CONFIG_STRING_TYPES;
-
-    /* NOTE: this needs to be changed if we ever get more than 255 types */
-    return memchr (config_string_types, type, sizeof (config_string_types))
-            != NULL;
-}
-
-static inline int IsConfigIntegerType (int type)
-{
-    return (type == CONFIG_ITEM_INTEGER) || (type == CONFIG_ITEM_KEY)
-        || (type == CONFIG_ITEM_BOOL);
-}
-
-static inline int IsConfigFloatType (int type)
-{
-    return type == CONFIG_ITEM_FLOAT;
-}
-
 /*******************************************************************
  * All predefined categories and subcategories
  *******************************************************************/
 /*******************************************************************
  * All predefined categories and subcategories
  *******************************************************************/
index cb50ae8..5907266 100644 (file)
@@ -188,31 +188,33 @@ PrefsTree::PrefsTree( intf_thread_t *_p_intf, QWidget *_parent ) :
     /* Build the tree of plugins */
     for( int i_index = 0; i_index < p_list->i_count; i_index++ )
     {
     /* Build the tree of plugins */
     for( int i_index = 0; i_index < p_list->i_count; i_index++ )
     {
-        int i_subcategory = -1, i_category = -1, i_options = 0;
         p_module = (module_t *)p_list->p_values[i_index].p_object;
 
         // Main module excluded
         if( !strcmp( p_module->psz_object_name, "main" ) ) continue;
 
         p_module = (module_t *)p_list->p_values[i_index].p_object;
 
         // Main module excluded
         if( !strcmp( p_module->psz_object_name, "main" ) ) continue;
 
-        /* Exclude empty plugins (submodules don't have config options, they
-         * are stored in the parent module) */
+        /* Exclude submodules; they have no config options of their own */
         if( p_module->b_submodule ) continue;
 
         if( p_module->b_submodule ) continue;
 
+        unsigned i_subcategory = 0, i_category = 0;
+        bool b_options = false;
+
         for (size_t i = 0; i < p_module->confsize; i++)
         {
         for (size_t i = 0; i < p_module->confsize; i++)
         {
-            module_config_t *p_item = p_module->p_config + i;
+            const module_config_t *p_item = p_module->p_config + i;
 
             if( p_item->i_type == CONFIG_CATEGORY )
                 i_category = p_item->value.i;
             else if( p_item->i_type == CONFIG_SUBCATEGORY )
                 i_subcategory = p_item->value.i;
 
             if( p_item->i_type == CONFIG_CATEGORY )
                 i_category = p_item->value.i;
             else if( p_item->i_type == CONFIG_SUBCATEGORY )
                 i_subcategory = p_item->value.i;
+
             if( p_item->i_type & CONFIG_ITEM )
             if( p_item->i_type & CONFIG_ITEM )
-                i_options++;
+                b_options = true;
 
 
-            if( i_options > 0 && i_category >= 0 && i_subcategory >= 0 )
+            if( b_options && i_category && i_subcategory )
                 break;
         }
                 break;
         }
-        if( !i_options ) continue; // Nothing to display
+        if( !b_options || i_category == 0 || i_subcategory == 0 ) continue;
 
         // Locate the category item;
         QTreeWidgetItem *subcat_item = NULL;
 
         // Locate the category item;
         QTreeWidgetItem *subcat_item = NULL;
index 8ee62f3..06fd8c0 100644 (file)
@@ -89,6 +89,38 @@ static inline char *_strdupnull (const char *src)
     return strdup (_(src));
 }
 
     return strdup (_(src));
 }
 
+/* Item types that use a string value (i.e. serialized in the module cache) */
+int IsConfigStringType (int type)
+{
+    static const unsigned char config_types[] = 
+    {
+        CONFIG_ITEM_STRING, CONFIG_ITEM_FILE, CONFIG_ITEM_MODULE,
+        CONFIG_ITEM_DIRECTORY, CONFIG_ITEM_MODULE_CAT,
+        CONFIG_ITEM_MODULE_LIST, CONFIG_ITEM_MODULE_LIST_CAT
+    };
+
+    /* NOTE: this needs to be changed if we ever get more than 255 types */
+    return memchr (config_types, type, sizeof (config_types)) != NULL;
+}
+
+
+static int IsConfigIntegerType (int type)
+{
+    static const unsigned char config_types[] = 
+    {
+        CONFIG_ITEM_INTEGER, CONFIG_ITEM_KEY, CONFIG_ITEM_BOOL,
+        CONFIG_CATEGORY, CONFIG_SUBCATEGORY
+    };
+
+    return memchr (config_types, type, sizeof (config_types)) != NULL;
+}
+
+
+static inline int IsConfigFloatType (int type)
+{
+    return type == CONFIG_ITEM_FLOAT;
+}
+
 
 /*****************************************************************************
  * config_GetType: get the type of a variable (bool, int, float, string)
 
 /*****************************************************************************
  * config_GetType: get the type of a variable (bool, int, float, string)
index 2a14693..bf4f1ae 100644 (file)
@@ -43,6 +43,8 @@ char *   config_GetHomeDir     ( void );
 char *   config_GetUserDir     ( void );
 int    __config_LoadConfigFile ( vlc_object_t *, const char * );
 
 char *   config_GetUserDir     ( void );
 int    __config_LoadConfigFile ( vlc_object_t *, const char * );
 
+int IsConfigStringType (int type);
+
 # ifdef __cplusplus
 }
 # endif
 # ifdef __cplusplus
 }
 # endif