1
0
Fork 0
forked from len0rd/rockbox

quickscreen: Settings ID to pointer conversion

Saves a good deal of code...

Change-Id: Ibaf4138ddffd5d8f7cca560cc52645dbce44149c
This commit is contained in:
Aidan MacDonald 2022-11-30 14:28:31 +00:00
parent c85a4f1fa4
commit 767ddef550
5 changed files with 39 additions and 79 deletions

View file

@ -417,15 +417,6 @@ static int gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter
return ret; return ret;
} }
static const struct settings_list *get_setting(int gs_value,
const struct settings_list *defaultval)
{
if (gs_value != -1 && gs_value < nb_settings &&
is_setting_quickscreenable(&settings[gs_value]))
return &settings[gs_value];
return defaultval;
}
int quick_screen_quick(int button_enter) int quick_screen_quick(int button_enter)
{ {
struct gui_quickscreen qs; struct gui_quickscreen qs;
@ -436,16 +427,13 @@ int quick_screen_quick(int button_enter)
#endif #endif
bool usb = false; bool usb = false;
qs.items[QUICKSCREEN_TOP] = for (int i = 0; i < 4; ++i)
get_setting(global_settings.qs_items[QUICKSCREEN_TOP], NULL); {
qs.items[QUICKSCREEN_LEFT] = qs.items[i] = global_settings.qs_items[i];
get_setting(global_settings.qs_items[QUICKSCREEN_LEFT],
find_setting(&global_settings.playlist_shuffle, NULL)); if (!is_setting_quickscreenable(qs.items[i]))
qs.items[QUICKSCREEN_RIGHT] = qs.items[i] = NULL;
get_setting(global_settings.qs_items[QUICKSCREEN_RIGHT], }
find_setting(&global_settings.repeat_mode, NULL));
qs.items[QUICKSCREEN_BOTTOM] =
get_setting(global_settings.qs_items[QUICKSCREEN_BOTTOM], NULL);
qs.callback = NULL; qs.callback = NULL;
int ret = gui_syncquickscreen_run(&qs, button_enter, &usb); int ret = gui_syncquickscreen_run(&qs, button_enter, &usb);
@ -481,10 +469,14 @@ int quick_screen_quick(int button_enter)
/* stuff to make the quickscreen configurable */ /* stuff to make the quickscreen configurable */
bool is_setting_quickscreenable(const struct settings_list *setting) bool is_setting_quickscreenable(const struct settings_list *setting)
{ {
if (!setting)
return true;
/* to keep things simple, only settings which have a lang_id set are ok */ /* to keep things simple, only settings which have a lang_id set are ok */
if (setting->lang_id < 0 || (setting->flags&F_BANFROMQS)) if (setting->lang_id < 0 || (setting->flags & F_BANFROMQS))
return false; return false;
switch (setting->flags&F_T_MASK)
switch (setting->flags & F_T_MASK)
{ {
case F_T_BOOL: case F_T_BOOL:
return true; return true;
@ -495,16 +487,3 @@ bool is_setting_quickscreenable(const struct settings_list *setting)
return false; return false;
} }
} }
void set_as_qs_item(const struct settings_list *setting,
enum quickscreen_item item)
{
int i;
for (i = 0; i < nb_settings; i++)
{
if (&settings[i] == setting)
break;
}
global_settings.qs_items[item] = i;
}

View file

@ -53,7 +53,6 @@ struct gui_quickscreen
extern int quick_screen_quick(int button_enter); extern int quick_screen_quick(int button_enter);
int quickscreen_set_option(void *data); int quickscreen_set_option(void *data);
bool is_setting_quickscreenable(const struct settings_list *setting); bool is_setting_quickscreenable(const struct settings_list *setting);
void set_as_qs_item(const struct settings_list *setting,
enum quickscreen_item item);
#endif /*_GUI_QUICK_SCREEN_H_*/ #endif /*_GUI_QUICK_SCREEN_H_*/
#endif /* HAVE_QUICKSCREEN */ #endif /* HAVE_QUICKSCREEN */

View file

@ -544,16 +544,16 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
break; break;
#ifdef HAVE_QUICKSCREEN #ifdef HAVE_QUICKSCREEN
case 1: /* set as top QS item */ case 1: /* set as top QS item */
set_as_qs_item(setting, QUICKSCREEN_TOP); global_settings.qs_items[QUICKSCREEN_TOP] = setting;
break; break;
case 2: /* set as left QS item */ case 2: /* set as left QS item */
set_as_qs_item(setting, QUICKSCREEN_LEFT); global_settings.qs_items[QUICKSCREEN_LEFT] = setting;
break; break;
case 3: /* set as bottom QS item */ case 3: /* set as bottom QS item */
set_as_qs_item(setting, QUICKSCREEN_BOTTOM); global_settings.qs_items[QUICKSCREEN_BOTTOM] = setting;
break; break;
case 4: /* set as right QS item */ case 4: /* set as right QS item */
set_as_qs_item(setting, QUICKSCREEN_RIGHT); global_settings.qs_items[QUICKSCREEN_RIGHT] = setting;
break; break;
case 5: /* Add to faves. Same limitation on which can be case 5: /* Add to faves. Same limitation on which can be
added to the shortcuts menu as the quickscreen */ added to the shortcuts menu as the quickscreen */

View file

@ -486,7 +486,7 @@ struct user_settings
#endif #endif
#ifdef HAVE_QUICKSCREEN #ifdef HAVE_QUICKSCREEN
int qs_items[QUICKSCREEN_ITEM_COUNT]; const struct settings_list *qs_items[QUICKSCREEN_ITEM_COUNT];
#endif #endif
int timeformat; /* time format: 0=24 hour clock, 1=12 hour clock */ int timeformat; /* time format: 0=24 hour clock, 1=12 hour clock */

View file

@ -593,52 +593,34 @@ static void eq_set_default(void* setting, void* defaultval)
} }
#ifdef HAVE_QUICKSCREEN #ifdef HAVE_QUICKSCREEN
static int find_setting_by_name(char*name) static void qs_load_from_cfg(void *var, char *value)
{ {
int i = 0; const struct settings_list **item = var;
const struct settings_list *setting;
if (!strcmp(name, "-")) if (*value == '-')
return -1; *item = NULL;
while (i<nb_settings) else
{ *item = find_setting_by_cfgname(value, NULL);
setting = &settings[i];
if (setting->cfg_name && !strcmp(setting->cfg_name, name))
{
return i;
}
i++;
}
return -1;
} }
static void qs_load_from_cfg(void* var, char*value)
static char* qs_write_to_cfg(void *var, char *buf, int buf_len)
{ {
*(int*)var = find_setting_by_name(value); const struct settings_list *setting = *(const struct settings_list **)var;
}
static char* qs_write_to_cfg(void* setting, char*buf, int buf_len) strmemccpy(buf, setting ? setting->cfg_name : "-", buf_len);
{
int index = *(int*)setting;
if (index < 0 || index >= nb_settings)
{
strmemccpy(buf, "-", buf_len);
return buf;
}
const struct settings_list *var = &settings[index];
strmemccpy(buf, var->cfg_name, buf_len);
return buf; return buf;
} }
static bool qs_is_changed(void* setting, void* defaultval)
static bool qs_is_changed(void* var, void* defaultval)
{ {
int i = *(int*)setting; const struct settings_list *defaultsetting = find_setting(defaultval, NULL);
if (i < 0 || i >= nb_settings)
return false; return var != defaultsetting;
const struct settings_list *var = &settings[i];
return var != find_setting(defaultval, NULL);
} }
static void qs_set_default(void* setting, void* defaultval)
static void qs_set_default(void* var, void* defaultval)
{ {
if (defaultval == NULL) *(const struct settings_list **)var = find_setting(defaultval, NULL);
*(int*)setting = -1;
find_setting(defaultval, (int*)setting);
} }
#endif #endif
#ifdef HAVE_TOUCHSCREEN #ifdef HAVE_TOUCHSCREEN