From: RĂ©mi Denis-Courmont Date: Sun, 15 Apr 2007 10:13:05 +0000 (+0000) Subject: Category and subcategory items are also integers. Fix #1086 X-Git-Tag: 0.9.0-test0~7732 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=b8802c32215815a1169277ca0481dc2e99626722;p=vlc Category and subcategory items are also integers. Fix #1086 --- diff --git a/include/vlc_configuration.h b/include/vlc_configuration.h index 2757146186..a0235d5ddf 100644 --- a/include/vlc_configuration.h +++ b/include/vlc_configuration.h @@ -69,34 +69,6 @@ extern "C" { #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 *******************************************************************/ diff --git a/modules/gui/qt4/components/complete_preferences.cpp b/modules/gui/qt4/components/complete_preferences.cpp index cb50ae869d..5907266b97 100644 --- a/modules/gui/qt4/components/complete_preferences.cpp +++ b/modules/gui/qt4/components/complete_preferences.cpp @@ -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++ ) { - 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; - /* 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; + unsigned i_subcategory = 0, i_category = 0; + bool b_options = false; + 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_ITEM ) - i_options++; + b_options = true; - if( i_options > 0 && i_category >= 0 && i_subcategory >= 0 ) + if( b_options && i_category && i_subcategory ) 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; diff --git a/src/modules/configuration.c b/src/modules/configuration.c index 8ee62f3dfd..06fd8c0f7d 100644 --- a/src/modules/configuration.c +++ b/src/modules/configuration.c @@ -89,6 +89,38 @@ static inline char *_strdupnull (const char *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) diff --git a/src/modules/configuration.h b/src/modules/configuration.h index 2a1469324b..bf4f1aee15 100644 --- a/src/modules/configuration.h +++ b/src/modules/configuration.h @@ -43,6 +43,8 @@ char * config_GetHomeDir ( void ); char * config_GetUserDir ( void ); int __config_LoadConfigFile ( vlc_object_t *, const char * ); +int IsConfigStringType (int type); + # ifdef __cplusplus } # endif