diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/gui/option_select.c | 32 | ||||
-rw-r--r-- | apps/gui/option_select.h | 1 | ||||
-rw-r--r-- | apps/gui/quickscreen.c | 24 |
3 files changed, 42 insertions, 15 deletions
diff --git a/apps/gui/option_select.c b/apps/gui/option_select.c index 288bf9098b..ffa8f1b0a1 100644 --- a/apps/gui/option_select.c +++ b/apps/gui/option_select.c | |||
@@ -146,24 +146,21 @@ char *option_get_valuestring(struct settings_list *setting, | |||
146 | } | 146 | } |
147 | return buffer; | 147 | return buffer; |
148 | } | 148 | } |
149 | 149 | void option_talk_value(const struct settings_list *setting, int value, bool enqueue) | |
150 | static int option_talk(int selected_item, void * data) | ||
151 | { | 150 | { |
152 | struct settings_list *setting = (struct settings_list *)data; | ||
153 | int temp_var = selection_to_val(setting, selected_item); | ||
154 | if ((setting->flags & F_BOOL_SETTING) == F_BOOL_SETTING) | 151 | if ((setting->flags & F_BOOL_SETTING) == F_BOOL_SETTING) |
155 | { | 152 | { |
156 | bool val = temp_var==1?true:false; | 153 | bool val = value==1?true:false; |
157 | talk_id(val? setting->bool_setting->lang_yes : | 154 | talk_id(val? setting->bool_setting->lang_yes : |
158 | setting->bool_setting->lang_no, false); | 155 | setting->bool_setting->lang_no, enqueue); |
159 | } | 156 | } |
160 | #if 0 /* probably dont need this one */ | 157 | #if 0 /* probably dont need this one */ |
161 | else if ((setting->flags & F_FILENAME) == F_FILENAME) | 158 | else if ((setting->flags & F_FILENAME) == F_FILENAME) |
162 | { | 159 | { |
163 | } | 160 | } |
164 | #endif | 161 | #endif |
165 | else if (((setting->flags & F_INT_SETTING) == F_INT_SETTING) || | 162 | else if (((setting->flags & F_INT_SETTING) == F_INT_SETTING) || |
166 | ((setting->flags & F_TABLE_SETTING) == F_TABLE_SETTING)) | 163 | ((setting->flags & F_TABLE_SETTING) == F_TABLE_SETTING)) |
167 | { | 164 | { |
168 | const struct int_setting *int_info = setting->int_setting; | 165 | const struct int_setting *int_info = setting->int_setting; |
169 | const struct table_setting *tbl_info = setting->table_setting; | 166 | const struct table_setting *tbl_info = setting->table_setting; |
@@ -180,9 +177,9 @@ static int option_talk(int selected_item, void * data) | |||
180 | get_talk_id = tbl_info->get_talk_id; | 177 | get_talk_id = tbl_info->get_talk_id; |
181 | } | 178 | } |
182 | if (get_talk_id) | 179 | if (get_talk_id) |
183 | talk_id(get_talk_id((int)temp_var, unit), false); | 180 | talk_id(get_talk_id((int)value, unit), enqueue); |
184 | else | 181 | else |
185 | talk_value((int)temp_var, unit, false); | 182 | talk_value((int)value, unit, enqueue); |
186 | } | 183 | } |
187 | else if ((setting->flags & F_T_SOUND) == F_T_SOUND) | 184 | else if ((setting->flags & F_T_SOUND) == F_T_SOUND) |
188 | { | 185 | { |
@@ -194,20 +191,27 @@ static int option_talk(int selected_item, void * data) | |||
194 | talkunit = UNIT_PERCENT; | 191 | talkunit = UNIT_PERCENT; |
195 | else if (!strcmp(unit, "Hz")) | 192 | else if (!strcmp(unit, "Hz")) |
196 | talkunit = UNIT_HERTZ; | 193 | talkunit = UNIT_HERTZ; |
197 | talk_value((int)temp_var, talkunit, false); | 194 | talk_value((int)value, talkunit, false); |
198 | } | 195 | } |
199 | else if ((setting->flags & F_CHOICE_SETTING) == F_CHOICE_SETTING) | 196 | else if ((setting->flags & F_CHOICE_SETTING) == F_CHOICE_SETTING) |
200 | { | 197 | { |
201 | int value = (int)temp_var; | 198 | int value = (int)value; |
202 | if (setting->flags & F_CHOICETALKS) | 199 | if (setting->flags & F_CHOICETALKS) |
203 | { | 200 | { |
204 | talk_id(setting->choice_setting->talks[value], false); | 201 | talk_id(setting->choice_setting->talks[value], enqueue); |
205 | } | 202 | } |
206 | else | 203 | else |
207 | { | 204 | { |
208 | talk_id(P2ID(setting->choice_setting->desc[value]), false); | 205 | talk_id(P2ID(setting->choice_setting->desc[value]), enqueue); |
209 | } | 206 | } |
210 | } | 207 | } |
208 | } | ||
209 | |||
210 | static int option_talk(int selected_item, void * data) | ||
211 | { | ||
212 | struct settings_list *setting = (struct settings_list *)data; | ||
213 | int temp_var = selection_to_val(setting, selected_item); | ||
214 | option_talk_value(setting, temp_var, false); | ||
211 | return 0; | 215 | return 0; |
212 | } | 216 | } |
213 | 217 | ||
diff --git a/apps/gui/option_select.h b/apps/gui/option_select.h index 7c9af4409b..866b8cf0cd 100644 --- a/apps/gui/option_select.h +++ b/apps/gui/option_select.h | |||
@@ -33,4 +33,5 @@ void option_select_next_val(struct settings_list *setting, | |||
33 | char *option_get_valuestring(struct settings_list *setting, | 33 | char *option_get_valuestring(struct settings_list *setting, |
34 | char *buffer, int buf_len, | 34 | char *buffer, int buf_len, |
35 | intptr_t temp_var); | 35 | intptr_t temp_var); |
36 | void option_talk_value(const struct settings_list *setting, int value, bool enqueue); | ||
36 | #endif /* _GUI_OPTION_SELECT_H_ */ | 37 | #endif /* _GUI_OPTION_SELECT_H_ */ |
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c index c62ad24717..36f3d82217 100644 --- a/apps/gui/quickscreen.c +++ b/apps/gui/quickscreen.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include "viewport.h" | 35 | #include "viewport.h" |
36 | #include "audio.h" | 36 | #include "audio.h" |
37 | #include "quickscreen.h" | 37 | #include "quickscreen.h" |
38 | #include "talk.h" | ||
38 | 39 | ||
39 | static struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT]; | 40 | static struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT]; |
40 | static struct viewport vp_icons[NB_SCREENS]; | 41 | static struct viewport vp_icons[NB_SCREENS]; |
@@ -220,7 +221,15 @@ static void gui_quickscreen_draw(struct gui_quickscreen *qs, | |||
220 | display->set_viewport(NULL); | 221 | display->set_viewport(NULL); |
221 | } | 222 | } |
222 | 223 | ||
223 | 224 | static int option_value(const struct settings_list *setting) | |
225 | { | ||
226 | if ((setting->flags & F_BOOL_SETTING) == F_BOOL_SETTING) | ||
227 | { | ||
228 | return *(bool*)setting->setting==true?1:0; | ||
229 | } | ||
230 | else | ||
231 | return *(int*)setting->setting; | ||
232 | } | ||
224 | /* | 233 | /* |
225 | * Does the actions associated to the given button if any | 234 | * Does the actions associated to the given button if any |
226 | * - qs : the quickscreen | 235 | * - qs : the quickscreen |
@@ -249,6 +258,8 @@ static bool gui_quickscreen_do_button(struct gui_quickscreen * qs, int button) | |||
249 | return false; | 258 | return false; |
250 | } | 259 | } |
251 | option_select_next_val((struct settings_list *)qs->items[item], false, true); | 260 | option_select_next_val((struct settings_list *)qs->items[item], false, true); |
261 | option_talk_value((struct settings_list *)qs->items[item], | ||
262 | option_value((struct settings_list *)qs->items[item]), false); | ||
252 | return true; | 263 | return true; |
253 | } | 264 | } |
254 | 265 | ||
@@ -271,6 +282,17 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter) | |||
271 | quickscreen_fix_viewports(qs, &screens[i], &vp[i]); | 282 | quickscreen_fix_viewports(qs, &screens[i], &vp[i]); |
272 | gui_quickscreen_draw(qs, &screens[i], &vp[i]); | 283 | gui_quickscreen_draw(qs, &screens[i], &vp[i]); |
273 | } | 284 | } |
285 | talk_id(qs->items[QUICKSCREEN_LEFT]->lang_id, false); | ||
286 | option_talk_value(qs->items[QUICKSCREEN_LEFT], | ||
287 | option_value(qs->items[QUICKSCREEN_LEFT]), true); | ||
288 | |||
289 | talk_id(qs->items[QUICKSCREEN_RIGHT]->lang_id, true); | ||
290 | option_talk_value(qs->items[QUICKSCREEN_RIGHT], | ||
291 | option_value(qs->items[QUICKSCREEN_RIGHT]), true); | ||
292 | |||
293 | talk_id(qs->items[QUICKSCREEN_BOTTOM]->lang_id, true); | ||
294 | option_talk_value(qs->items[QUICKSCREEN_BOTTOM], | ||
295 | option_value(qs->items[QUICKSCREEN_BOTTOM]), true); | ||
274 | while (true) { | 296 | while (true) { |
275 | button = get_action(CONTEXT_QUICKSCREEN,HZ/5); | 297 | button = get_action(CONTEXT_QUICKSCREEN,HZ/5); |
276 | if(default_event_handler(button) == SYS_USB_CONNECTED) | 298 | if(default_event_handler(button) == SYS_USB_CONNECTED) |