Commit b8802c32 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont
Browse files

Category and subcategory items are also integers. Fix #1086

parent 443738ce
......@@ -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
*******************************************************************/
......
......@@ -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;
......
......@@ -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)
......
......@@ -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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment