diff options
| author | Jonathan Gordon <rockbox@jdgordon.info> | 2011-09-04 13:17:09 +0000 |
|---|---|---|
| committer | Jonathan Gordon <rockbox@jdgordon.info> | 2011-09-04 13:17:09 +0000 |
| commit | 89973217774f93f8dabcf41a559a5910b7b27f64 (patch) | |
| tree | 316347c1fd4c1c0d063eead4b5e816e08f57f737 /apps | |
| parent | 060b3fa4f12b3325f29ff8303e22dd318632bd87 (diff) | |
| download | rockbox-89973217774f93f8dabcf41a559a5910b7b27f64.zip rockbox-89973217774f93f8dabcf41a559a5910b7b27f64.tar.gz rockbox-89973217774f93f8dabcf41a559a5910b7b27f64.tar.bz2 rockbox-89973217774f93f8dabcf41a559a5910b7b27f64.tar.xz | |
Remove duplicated code to search for a setting by its cfg name
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30428 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 17 | ||||
| -rw-r--r-- | apps/settings.c | 14 | ||||
| -rw-r--r-- | apps/settings.h | 1 |
3 files changed, 19 insertions, 13 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index 59c7e92..adac487 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c @@ -620,13 +620,8 @@ static int parse_setting_and_lang(struct skin_element *element, } else { - /* Find the setting */ - for (i=0; i<nb_settings; i++) - if (settings[i].cfg_name && - !strcmp(settings[i].cfg_name, temp)) - break; #ifndef __PCTOOL__ - if (i == nb_settings) + if (find_setting_by_cfgname(temp, &i) == NULL) return WPS_ERROR_INVALID_PARAM; #endif } @@ -1148,14 +1143,10 @@ static int touchregion_setup_setting(struct skin_element *element, int param_no, int p = param_no; char *name = element->params[p++].data.text; int j; - /* Find the setting */ - for (j=0; j<nb_settings; j++) - if (settings[j].cfg_name && - !strcmp(settings[j].cfg_name, name)) - break; - if (j==nb_settings) + + region->setting_data.setting = find_setting_by_cfgname(name, &j); + if (region->setting_data.setting == NULL) return WPS_ERROR_INVALID_PARAM; - region->setting_data.setting = (void*)&settings[j]; if (region->action == ACTION_SETTINGS_SET) { char* text; diff --git a/apps/settings.c b/apps/settings.c index 623bc5b..258face 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -1087,6 +1087,20 @@ const struct settings_list* find_setting(const void* variable, int *id) } return NULL; } +const struct settings_list* find_setting_by_cfgname(const char* name, int *id) +{ + int i; + for (i=0; i<nb_settings; i++) + { + if (settings[i].cfg_name && + !strcmp(settings[i].cfg_name, name)) + { + if (id) *id = i; + return &settings[i]; + } + } + return NULL; +} bool set_bool(const char* string, const bool* variable ) { diff --git a/apps/settings.h b/apps/settings.h index 05965b3..f48dd5d 100644 --- a/apps/settings.h +++ b/apps/settings.h @@ -231,6 +231,7 @@ void settings_display(void); enum optiontype { INT, BOOL }; const struct settings_list* find_setting(const void* variable, int *id); +const struct settings_list* find_setting_by_cfgname(const char* name, int *id); bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len); bool cfg_string_to_int(int setting_id, int* out, const char* str); bool cfg_to_string(int setting_id, char* buf, int buf_len); |