From 39bccd65b92386654dfc71e426352ad9d9148fae Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Sun, 4 May 2008 08:11:28 +0000 Subject: recommit the talking quickscreen... silly rename bug which I mised this morning git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17348 a1c6a512-1295-4272-9138-f99709370657 --- apps/gui/option_select.c | 31 +++++++++++++++++-------------- apps/gui/option_select.h | 1 + apps/gui/quickscreen.c | 24 +++++++++++++++++++++++- 3 files changed, 41 insertions(+), 15 deletions(-) (limited to 'apps/gui') diff --git a/apps/gui/option_select.c b/apps/gui/option_select.c index 288bf9098b..8798ea145c 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, } return buffer; } - -static int option_talk(int selected_item, void * data) +void option_talk_value(const struct settings_list *setting, int value, bool enqueue) { - struct settings_list *setting = (struct settings_list *)data; - int temp_var = selection_to_val(setting, selected_item); if ((setting->flags & F_BOOL_SETTING) == F_BOOL_SETTING) { - bool val = temp_var==1?true:false; + bool val = value==1?true:false; talk_id(val? setting->bool_setting->lang_yes : - setting->bool_setting->lang_no, false); + setting->bool_setting->lang_no, enqueue); } #if 0 /* probably dont need this one */ else if ((setting->flags & F_FILENAME) == F_FILENAME) { - } +} #endif else if (((setting->flags & F_INT_SETTING) == F_INT_SETTING) || - ((setting->flags & F_TABLE_SETTING) == F_TABLE_SETTING)) + ((setting->flags & F_TABLE_SETTING) == F_TABLE_SETTING)) { const struct int_setting *int_info = setting->int_setting; const struct table_setting *tbl_info = setting->table_setting; @@ -180,9 +177,9 @@ static int option_talk(int selected_item, void * data) get_talk_id = tbl_info->get_talk_id; } if (get_talk_id) - talk_id(get_talk_id((int)temp_var, unit), false); + talk_id(get_talk_id(value, unit), enqueue); else - talk_value((int)temp_var, unit, false); + talk_value(value, unit, enqueue); } else if ((setting->flags & F_T_SOUND) == F_T_SOUND) { @@ -194,20 +191,26 @@ static int option_talk(int selected_item, void * data) talkunit = UNIT_PERCENT; else if (!strcmp(unit, "Hz")) talkunit = UNIT_HERTZ; - talk_value((int)temp_var, talkunit, false); + talk_value(value, talkunit, false); } else if ((setting->flags & F_CHOICE_SETTING) == F_CHOICE_SETTING) { - int value = (int)temp_var; if (setting->flags & F_CHOICETALKS) { - talk_id(setting->choice_setting->talks[value], false); + talk_id(setting->choice_setting->talks[value], enqueue); } else { - talk_id(P2ID(setting->choice_setting->desc[value]), false); + talk_id(P2ID(setting->choice_setting->desc[value]), enqueue); } } +} + +static int option_talk(int selected_item, void * data) +{ + struct settings_list *setting = (struct settings_list *)data; + int temp_var = selection_to_val(setting, selected_item); + option_talk_value(setting, temp_var, false); return 0; } 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, char *option_get_valuestring(struct settings_list *setting, char *buffer, int buf_len, intptr_t temp_var); +void option_talk_value(const struct settings_list *setting, int value, bool enqueue); #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 @@ #include "viewport.h" #include "audio.h" #include "quickscreen.h" +#include "talk.h" static struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT]; static struct viewport vp_icons[NB_SCREENS]; @@ -220,7 +221,15 @@ static void gui_quickscreen_draw(struct gui_quickscreen *qs, display->set_viewport(NULL); } - +static int option_value(const struct settings_list *setting) +{ + if ((setting->flags & F_BOOL_SETTING) == F_BOOL_SETTING) + { + return *(bool*)setting->setting==true?1:0; + } + else + return *(int*)setting->setting; +} /* * Does the actions associated to the given button if any * - qs : the quickscreen @@ -249,6 +258,8 @@ static bool gui_quickscreen_do_button(struct gui_quickscreen * qs, int button) return false; } option_select_next_val((struct settings_list *)qs->items[item], false, true); + option_talk_value((struct settings_list *)qs->items[item], + option_value((struct settings_list *)qs->items[item]), false); return true; } @@ -271,6 +282,17 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter) quickscreen_fix_viewports(qs, &screens[i], &vp[i]); gui_quickscreen_draw(qs, &screens[i], &vp[i]); } + talk_id(qs->items[QUICKSCREEN_LEFT]->lang_id, false); + option_talk_value(qs->items[QUICKSCREEN_LEFT], + option_value(qs->items[QUICKSCREEN_LEFT]), true); + + talk_id(qs->items[QUICKSCREEN_RIGHT]->lang_id, true); + option_talk_value(qs->items[QUICKSCREEN_RIGHT], + option_value(qs->items[QUICKSCREEN_RIGHT]), true); + + talk_id(qs->items[QUICKSCREEN_BOTTOM]->lang_id, true); + option_talk_value(qs->items[QUICKSCREEN_BOTTOM], + option_value(qs->items[QUICKSCREEN_BOTTOM]), true); while (true) { button = get_action(CONTEXT_QUICKSCREEN,HZ/5); if(default_event_handler(button) == SYS_USB_CONNECTED) -- cgit v1.2.3