From 767ddef550ec193c087064291b78d0e1db5e8fb0 Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Wed, 30 Nov 2022 14:28:31 +0000 Subject: quickscreen: Settings ID to pointer conversion Saves a good deal of code... Change-Id: Ibaf4138ddffd5d8f7cca560cc52645dbce44149c --- apps/settings_list.c | 58 ++++++++++++++++++---------------------------------- 1 file changed, 20 insertions(+), 38 deletions(-) (limited to 'apps/settings_list.c') diff --git a/apps/settings_list.c b/apps/settings_list.c index ab02683d94..2ff4258c54 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -593,52 +593,34 @@ static void eq_set_default(void* setting, void* defaultval) } #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 *setting; - if (!strcmp(name, "-")) - return -1; - while (icfg_name && !strcmp(setting->cfg_name, name)) - { - return i; - } - i++; - } - return -1; -} -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; - 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); + const struct settings_list *setting = *(const struct settings_list **)var; + + strmemccpy(buf, setting ? setting->cfg_name : "-", buf_len); return buf; } -static bool qs_is_changed(void* setting, void* defaultval) + +static bool qs_is_changed(void* var, void* defaultval) { - int i = *(int*)setting; - if (i < 0 || i >= nb_settings) - return false; - const struct settings_list *var = &settings[i]; - return var != find_setting(defaultval, NULL); + const struct settings_list *defaultsetting = find_setting(defaultval, NULL); + + return var != defaultsetting; } -static void qs_set_default(void* setting, void* defaultval) + +static void qs_set_default(void* var, void* defaultval) { - if (defaultval == NULL) - *(int*)setting = -1; - find_setting(defaultval, (int*)setting); + *(const struct settings_list **)var = find_setting(defaultval, NULL); } #endif #ifdef HAVE_TOUCHSCREEN -- cgit v1.2.3