mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-14 02:27:39 -04:00
quickscreen: Settings ID to pointer conversion
Saves a good deal of code... Change-Id: Ibaf4138ddffd5d8f7cca560cc52645dbce44149c
This commit is contained in:
parent
c85a4f1fa4
commit
767ddef550
5 changed files with 39 additions and 79 deletions
|
@ -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,9 +469,13 @@ 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:
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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)
|
|
||||||
{
|
|
||||||
int i = 0;
|
|
||||||
const struct settings_list *setting;
|
|
||||||
if (!strcmp(name, "-"))
|
|
||||||
return -1;
|
|
||||||
while (i<nb_settings)
|
|
||||||
{
|
|
||||||
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 void qs_load_from_cfg(void *var, char *value)
|
||||||
{
|
{
|
||||||
*(int*)var = find_setting_by_name(value);
|
const struct settings_list **item = var;
|
||||||
|
|
||||||
|
if (*value == '-')
|
||||||
|
*item = NULL;
|
||||||
|
else
|
||||||
|
*item = find_setting_by_cfgname(value, NULL);
|
||||||
}
|
}
|
||||||
static char* qs_write_to_cfg(void* setting, char*buf, int buf_len)
|
|
||||||
|
static char* qs_write_to_cfg(void *var, char *buf, int buf_len)
|
||||||
{
|
{
|
||||||
int index = *(int*)setting;
|
const struct settings_list *setting = *(const struct settings_list **)var;
|
||||||
if (index < 0 || index >= nb_settings)
|
|
||||||
{
|
strmemccpy(buf, setting ? setting->cfg_name : "-", buf_len);
|
||||||
strmemccpy(buf, "-", buf_len);
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
const struct settings_list *var = &settings[index];
|
|
||||||
strmemccpy(buf, var->cfg_name, buf_len);
|
static bool qs_is_changed(void* var, void* defaultval)
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
static bool qs_is_changed(void* setting, 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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue