summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/gui/option_select.c32
-rw-r--r--apps/gui/option_select.h1
-rw-r--r--apps/gui/quickscreen.c24
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 149void option_talk_value(const struct settings_list *setting, int value, bool enqueue)
150static 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
210static 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,
33char *option_get_valuestring(struct settings_list *setting, 33char *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);
36void 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
39static struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT]; 40static struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT];
40static struct viewport vp_icons[NB_SCREENS]; 41static 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 224static 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)