summaryrefslogtreecommitdiff
path: root/apps/gui/quickscreen.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/quickscreen.c')
-rw-r--r--apps/gui/quickscreen.c38
1 files changed, 21 insertions, 17 deletions
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c
index a2770a3586..304d38074b 100644
--- a/apps/gui/quickscreen.c
+++ b/apps/gui/quickscreen.c
@@ -230,6 +230,17 @@ static int option_value(const struct settings_list *setting)
230 else 230 else
231 return *(int*)setting->setting; 231 return *(int*)setting->setting;
232} 232}
233
234void talk_qs_option(struct settings_list *opt, bool enqueue)
235{
236 if (global_settings.talk_menu) {
237 if(!enqueue)
238 talk_shutup();
239 talk_id(opt->lang_id, true);
240 option_talk_value(opt, option_value(opt), true);
241 }
242}
243
233/* 244/*
234 * Does the actions associated to the given button if any 245 * Does the actions associated to the given button if any
235 * - qs : the quickscreen 246 * - qs : the quickscreen
@@ -258,9 +269,7 @@ static bool gui_quickscreen_do_button(struct gui_quickscreen * qs, int button)
258 return false; 269 return false;
259 } 270 }
260 option_select_next_val((struct settings_list *)qs->items[item], false, true); 271 option_select_next_val((struct settings_list *)qs->items[item], false, true);
261 if (global_settings.talk_menu) 272 talk_qs_option((struct settings_list *)qs->items[item], false);
262 option_talk_value((struct settings_list *)qs->items[item],
263 option_value((struct settings_list *)qs->items[item]), false);
264 return true; 273 return true;
265} 274}
266 275
@@ -283,20 +292,13 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter)
283 quickscreen_fix_viewports(qs, &screens[i], &vp[i]); 292 quickscreen_fix_viewports(qs, &screens[i], &vp[i]);
284 gui_quickscreen_draw(qs, &screens[i], &vp[i]); 293 gui_quickscreen_draw(qs, &screens[i], &vp[i]);
285 } 294 }
286 if (global_settings.talk_menu) 295 /* Announce current selection on entering this screen. This is all
287 { 296 queued up, but can be interrupted as soon as a setting is
288 talk_id(qs->items[QUICKSCREEN_LEFT]->lang_id, false); 297 changed. */
289 option_talk_value(qs->items[QUICKSCREEN_LEFT], 298 cond_talk_ids(VOICE_QUICKSCREEN);
290 option_value(qs->items[QUICKSCREEN_LEFT]), true); 299 talk_qs_option((struct settings_list *)qs->items[QUICKSCREEN_LEFT], true);
291 300 talk_qs_option((struct settings_list *)qs->items[QUICKSCREEN_BOTTOM], true);
292 talk_id(qs->items[QUICKSCREEN_RIGHT]->lang_id, true); 301 talk_qs_option((struct settings_list *)qs->items[QUICKSCREEN_RIGHT], true);
293 option_talk_value(qs->items[QUICKSCREEN_RIGHT],
294 option_value(qs->items[QUICKSCREEN_RIGHT]), true);
295
296 talk_id(qs->items[QUICKSCREEN_BOTTOM]->lang_id, true);
297 option_talk_value(qs->items[QUICKSCREEN_BOTTOM],
298 option_value(qs->items[QUICKSCREEN_BOTTOM]), true);
299 }
300 while (true) { 302 while (true) {
301 button = get_action(CONTEXT_QUICKSCREEN,HZ/5); 303 button = get_action(CONTEXT_QUICKSCREEN,HZ/5);
302 if(default_event_handler(button) == SYS_USB_CONNECTED) 304 if(default_event_handler(button) == SYS_USB_CONNECTED)
@@ -321,6 +323,8 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter)
321 323
322 gui_syncstatusbar_draw(&statusbars, false); 324 gui_syncstatusbar_draw(&statusbars, false);
323 } 325 }
326 /* Notify that we're exiting this screen */
327 cond_talk_ids_fq(VOICE_OK);
324 return changed; 328 return changed;
325} 329}
326 330