summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2011-09-04 13:17:09 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2011-09-04 13:17:09 +0000
commit89973217774f93f8dabcf41a559a5910b7b27f64 (patch)
tree316347c1fd4c1c0d063eead4b5e816e08f57f737
parent060b3fa4f12b3325f29ff8303e22dd318632bd87 (diff)
downloadrockbox-89973217774f93f8dabcf41a559a5910b7b27f64.tar.gz
rockbox-89973217774f93f8dabcf41a559a5910b7b27f64.zip
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
-rw-r--r--apps/gui/skin_engine/skin_parser.c17
-rw-r--r--apps/settings.c14
-rw-r--r--apps/settings.h1
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 59c7e92d90..adac487e27 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,
620 } 620 }
621 else 621 else
622 { 622 {
623 /* Find the setting */
624 for (i=0; i<nb_settings; i++)
625 if (settings[i].cfg_name &&
626 !strcmp(settings[i].cfg_name, temp))
627 break;
628#ifndef __PCTOOL__ 623#ifndef __PCTOOL__
629 if (i == nb_settings) 624 if (find_setting_by_cfgname(temp, &i) == NULL)
630 return WPS_ERROR_INVALID_PARAM; 625 return WPS_ERROR_INVALID_PARAM;
631#endif 626#endif
632 } 627 }
@@ -1148,14 +1143,10 @@ static int touchregion_setup_setting(struct skin_element *element, int param_no,
1148 int p = param_no; 1143 int p = param_no;
1149 char *name = element->params[p++].data.text; 1144 char *name = element->params[p++].data.text;
1150 int j; 1145 int j;
1151 /* Find the setting */ 1146
1152 for (j=0; j<nb_settings; j++) 1147 region->setting_data.setting = find_setting_by_cfgname(name, &j);
1153 if (settings[j].cfg_name && 1148 if (region->setting_data.setting == NULL)
1154 !strcmp(settings[j].cfg_name, name))
1155 break;
1156 if (j==nb_settings)
1157 return WPS_ERROR_INVALID_PARAM; 1149 return WPS_ERROR_INVALID_PARAM;
1158 region->setting_data.setting = (void*)&settings[j];
1159 if (region->action == ACTION_SETTINGS_SET) 1150 if (region->action == ACTION_SETTINGS_SET)
1160 { 1151 {
1161 char* text; 1152 char* text;
diff --git a/apps/settings.c b/apps/settings.c
index 623bc5b2a0..258facee38 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -1087,6 +1087,20 @@ const struct settings_list* find_setting(const void* variable, int *id)
1087 } 1087 }
1088 return NULL; 1088 return NULL;
1089} 1089}
1090const struct settings_list* find_setting_by_cfgname(const char* name, int *id)
1091{
1092 int i;
1093 for (i=0; i<nb_settings; i++)
1094 {
1095 if (settings[i].cfg_name &&
1096 !strcmp(settings[i].cfg_name, name))
1097 {
1098 if (id) *id = i;
1099 return &settings[i];
1100 }
1101 }
1102 return NULL;
1103}
1090 1104
1091bool set_bool(const char* string, const bool* variable ) 1105bool set_bool(const char* string, const bool* variable )
1092{ 1106{
diff --git a/apps/settings.h b/apps/settings.h
index 05965b3119..f48dd5debc 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -231,6 +231,7 @@ void settings_display(void);
231enum optiontype { INT, BOOL }; 231enum optiontype { INT, BOOL };
232 232
233const struct settings_list* find_setting(const void* variable, int *id); 233const struct settings_list* find_setting(const void* variable, int *id);
234const struct settings_list* find_setting_by_cfgname(const char* name, int *id);
234bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len); 235bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len);
235bool cfg_string_to_int(int setting_id, int* out, const char* str); 236bool cfg_string_to_int(int setting_id, int* out, const char* str);
236bool cfg_to_string(int setting_id, char* buf, int buf_len); 237bool cfg_to_string(int setting_id, char* buf, int buf_len);