summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorStéphane Doyon <s.doyon@videotron.ca>2007-10-09 03:48:56 +0000
committerStéphane Doyon <s.doyon@videotron.ca>2007-10-09 03:48:56 +0000
commit5acf09104644a7942cf264d80a99f6bf5ae20792 (patch)
treea9705adea534e53795112eecde1d5b08171c9ac1 /apps
parent3fd073ed4d5e0bb819b30ee71546151f13aa2150 (diff)
downloadrockbox-5acf09104644a7942cf264d80a99f6bf5ae20792.tar.gz
rockbox-5acf09104644a7942cf264d80a99f6bf5ae20792.zip
Add a voice callback to dynamic menus, along side the text_callback.
From FS#7563. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15042 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/menu.c22
-rw-r--r--apps/menu.h14
-rw-r--r--apps/menus/eq_menu.c44
-rw-r--r--apps/onplay.c2
-rw-r--r--apps/recorder/radio.c2
-rw-r--r--apps/root_menu.c2
6 files changed, 49 insertions, 37 deletions
diff --git a/apps/menu.c b/apps/menu.c
index e369f4d390..1dedc42a5c 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -237,12 +237,22 @@ static void talk_menu_item(const struct menu_item_ex *menu,
237 { 237 {
238 if (menu->submenus[sel]->flags&(MENU_DYNAMIC_DESC)) 238 if (menu->submenus[sel]->flags&(MENU_DYNAMIC_DESC))
239 { 239 {
240 char buffer[80]; 240 int (*list_speak_item)(int selected_item, void * data)
241 str = menu->submenus[sel]->menu_get_name_and_icon-> 241 = menu->submenus[sel]->menu_get_name_and_icon->
242 list_get_name(sel, menu->submenus[sel]-> 242 list_speak_item;
243 menu_get_name_and_icon-> 243 if(list_speak_item)
244 list_get_name_data, buffer); 244 list_speak_item(sel, menu->submenus[sel]->
245 id = P2ID(str); 245 menu_get_name_and_icon->
246 list_get_name_data);
247 else
248 {
249 char buffer[80];
250 str = menu->submenus[sel]->menu_get_name_and_icon->
251 list_get_name(sel, menu->submenus[sel]->
252 menu_get_name_and_icon->
253 list_get_name_data, buffer);
254 id = P2ID(str);
255 }
246 } 256 }
247 else 257 else
248 id = P2ID(menu->submenus[sel]->callback_and_desc->desc); 258 id = P2ID(menu->submenus[sel]->callback_and_desc->desc);
diff --git a/apps/menu.h b/apps/menu.h
index 0c1000ab2f..d3f7099267 100644
--- a/apps/menu.h
+++ b/apps/menu.h
@@ -90,6 +90,7 @@ struct menu_item_ex {
90 int (*menu_callback)(int action, 90 int (*menu_callback)(int action,
91 const struct menu_item_ex *this_item); 91 const struct menu_item_ex *this_item);
92 char *(*list_get_name)(int selected_item, void * data, char *buffer); 92 char *(*list_get_name)(int selected_item, void * data, char *buffer);
93 int (*list_speak_item)(int selected_item, void * data);
93 void *list_get_name_data; 94 void *list_get_name_data;
94 int icon_id; 95 int icon_id;
95 } *menu_get_name_and_icon; 96 } *menu_get_name_and_icon;
@@ -165,9 +166,9 @@ int do_menu(const struct menu_item_ex *menu, int *start_selected);
165 166
166/* same as above, except the item name is dynamic */ 167/* same as above, except the item name is dynamic */
167#define MENUITEM_RETURNVALUE_DYNTEXT(name, val, cb, text_callback, \ 168#define MENUITEM_RETURNVALUE_DYNTEXT(name, val, cb, text_callback, \
168 text_cb_data, icon) \ 169 voice_callback, text_cb_data, icon) \
169 static const struct menu_get_name_and_icon name##_ \ 170 static const struct menu_get_name_and_icon name##_ \
170 = {cb,text_callback,text_cb_data,icon}; \ 171 = {cb,text_callback,voice_callback,text_cb_data,icon}; \
171 static const struct menu_item_ex name = \ 172 static const struct menu_item_ex name = \
172 { MT_RETURN_VALUE|MENU_DYNAMIC_DESC, { .value = val}, \ 173 { MT_RETURN_VALUE|MENU_DYNAMIC_DESC, { .value = val}, \
173 {.menu_get_name_and_icon = & name##_}}; 174 {.menu_get_name_and_icon = & name##_}};
@@ -187,10 +188,11 @@ int do_menu(const struct menu_item_ex *menu, int *start_selected);
187 { .function = & name##__}, {.callback_and_desc = & name##_}}; 188 { .function = & name##__}, {.callback_and_desc = & name##_}};
188 189
189/* As above, except the text is dynamic */ 190/* As above, except the text is dynamic */
190#define MENUITEM_FUNCTION_DYNTEXT(name, flags, func, param, \ 191#define MENUITEM_FUNCTION_DYNTEXT(name, flags, func, param, \
191 text_callback, text_cb_data, callback, icon) \ 192 text_callback, voice_callback, \
192 static const struct menu_get_name_and_icon name##_ \ 193 text_cb_data, callback, icon) \
193 = {callback,text_callback,text_cb_data,icon}; \ 194 static const struct menu_get_name_and_icon name##_ \
195 = {callback,text_callback,voice_callback,text_cb_data,icon}; \
194 static const struct menu_func name##__ = {{(void*)func}, param}; \ 196 static const struct menu_func name##__ = {{(void*)func}, param}; \
195 static const struct menu_item_ex name = \ 197 static const struct menu_item_ex name = \
196 { MT_FUNCTION_CALL|MENU_DYNAMIC_DESC|flags, \ 198 { MT_FUNCTION_CALL|MENU_DYNAMIC_DESC|flags, \
diff --git a/apps/menus/eq_menu.c b/apps/menus/eq_menu.c
index a1e00a85c4..7cb88065f5 100644
--- a/apps/menus/eq_menu.c
+++ b/apps/menus/eq_menu.c
@@ -145,21 +145,21 @@ MENUITEM_SETTING(gain_2, &global_settings.eq_band2_gain, dsp_set_coefs_callback)
145MENUITEM_SETTING(gain_3, &global_settings.eq_band3_gain, dsp_set_coefs_callback); 145MENUITEM_SETTING(gain_3, &global_settings.eq_band3_gain, dsp_set_coefs_callback);
146MENUITEM_SETTING(gain_4, &global_settings.eq_band4_gain, dsp_set_coefs_callback); 146MENUITEM_SETTING(gain_4, &global_settings.eq_band4_gain, dsp_set_coefs_callback);
147 147
148MENUITEM_FUNCTION_DYNTEXT(gain_item_0, MENU_FUNC_USEPARAM, do_option, (void*)&gain_0, 148MENUITEM_FUNCTION_DYNTEXT(gain_item_0, MENU_FUNC_USEPARAM, do_option,
149 gainitem_get_name, &global_settings.eq_band0_cutoff, 149 (void*)&gain_0, gainitem_get_name, NULL, &global_settings.eq_band0_cutoff,
150 NULL, Icon_NOICON); 150 NULL, Icon_NOICON);
151MENUITEM_FUNCTION_DYNTEXT(gain_item_1, MENU_FUNC_USEPARAM, do_option, (void*)&gain_1, 151MENUITEM_FUNCTION_DYNTEXT(gain_item_1, MENU_FUNC_USEPARAM, do_option,
152 gainitem_get_name, &global_settings.eq_band1_cutoff, 152 (void*)&gain_1, gainitem_get_name, NULL, &global_settings.eq_band1_cutoff,
153 NULL, Icon_NOICON); 153 NULL, Icon_NOICON);
154MENUITEM_FUNCTION_DYNTEXT(gain_item_2, MENU_FUNC_USEPARAM, do_option, (void*)&gain_2, 154MENUITEM_FUNCTION_DYNTEXT(gain_item_2, MENU_FUNC_USEPARAM, do_option,
155 gainitem_get_name, &global_settings.eq_band2_cutoff, 155 (void*)&gain_2, gainitem_get_name, NULL, &global_settings.eq_band2_cutoff,
156 NULL, Icon_NOICON); 156 NULL, Icon_NOICON);
157MENUITEM_FUNCTION_DYNTEXT(gain_item_3, MENU_FUNC_USEPARAM, do_option, (void*)&gain_3, 157MENUITEM_FUNCTION_DYNTEXT(gain_item_3, MENU_FUNC_USEPARAM, do_option,
158 gainitem_get_name, &global_settings.eq_band3_cutoff, 158 (void*)&gain_3, gainitem_get_name, NULL, &global_settings.eq_band3_cutoff,
159 NULL, Icon_NOICON); 159 NULL, Icon_NOICON);
160MENUITEM_FUNCTION_DYNTEXT(gain_item_4, MENU_FUNC_USEPARAM, do_option, (void*)&gain_4, 160MENUITEM_FUNCTION_DYNTEXT(gain_item_4, MENU_FUNC_USEPARAM, do_option,
161 gainitem_get_name, &global_settings.eq_band4_cutoff, 161 (void*)&gain_4, gainitem_get_name, NULL, &global_settings.eq_band4_cutoff,
162 NULL, Icon_NOICON); 162 NULL, Icon_NOICON);
163 163
164MAKE_MENU(gain_menu, ID2P(LANG_EQUALIZER_GAIN), NULL, Icon_NOICON, &gain_item_0, 164MAKE_MENU(gain_menu, ID2P(LANG_EQUALIZER_GAIN), NULL, Icon_NOICON, &gain_item_0,
165 &gain_item_1, &gain_item_2, &gain_item_3, &gain_item_4); 165 &gain_item_1, &gain_item_2, &gain_item_3, &gain_item_4);
@@ -195,15 +195,15 @@ int do_center_band_menu(void* param)
195} 195}
196MAKE_MENU(band_0_menu, ID2P(LANG_EQUALIZER_BAND_LOW_SHELF), NULL, 196MAKE_MENU(band_0_menu, ID2P(LANG_EQUALIZER_BAND_LOW_SHELF), NULL,
197 Icon_EQ, &cutoff_0, &q_0, &gain_0); 197 Icon_EQ, &cutoff_0, &q_0, &gain_0);
198MENUITEM_FUNCTION_DYNTEXT(band_1_menu, MENU_FUNC_USEPARAM, 198MENUITEM_FUNCTION_DYNTEXT(band_1_menu, MENU_FUNC_USEPARAM,
199 do_center_band_menu, (void*)1, 199 do_center_band_menu, (void*)1,
200 centerband_get_name, (void*)1, NULL, Icon_EQ); 200 centerband_get_name, NULL, (void*)1, NULL, Icon_EQ);
201MENUITEM_FUNCTION_DYNTEXT(band_2_menu, MENU_FUNC_USEPARAM, 201MENUITEM_FUNCTION_DYNTEXT(band_2_menu, MENU_FUNC_USEPARAM,
202 do_center_band_menu, (void*)2, 202 do_center_band_menu, (void*)2,
203 centerband_get_name, (void*)2, NULL, Icon_EQ); 203 centerband_get_name, NULL, (void*)2, NULL, Icon_EQ);
204MENUITEM_FUNCTION_DYNTEXT(band_3_menu, MENU_FUNC_USEPARAM, 204MENUITEM_FUNCTION_DYNTEXT(band_3_menu, MENU_FUNC_USEPARAM,
205 do_center_band_menu, (void*)3, 205 do_center_band_menu, (void*)3,
206 centerband_get_name, (void*)3, NULL, Icon_EQ); 206 centerband_get_name, NULL, (void*)3, NULL, Icon_EQ);
207MAKE_MENU(band_4_menu, ID2P(LANG_EQUALIZER_BAND_HIGH_SHELF), NULL, 207MAKE_MENU(band_4_menu, ID2P(LANG_EQUALIZER_BAND_HIGH_SHELF), NULL,
208 Icon_EQ, &cutoff_4, &q_4, &gain_4); 208 Icon_EQ, &cutoff_4, &q_4, &gain_4);
209 209
diff --git a/apps/onplay.c b/apps/onplay.c
index 0e5169a007..a4da371ce7 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -1001,7 +1001,7 @@ static int ratingitem_callback(int action,const struct menu_item_ex *this_item)
1001 return action; 1001 return action;
1002} 1002}
1003MENUITEM_FUNCTION_DYNTEXT(rating_item, 0, set_rating_inline, 1003MENUITEM_FUNCTION_DYNTEXT(rating_item, 0, set_rating_inline,
1004 NULL, rating_name, NULL, 1004 NULL, rating_name, NULL, NULL,
1005 ratingitem_callback, Icon_Questionmark); 1005 ratingitem_callback, Icon_Questionmark);
1006#endif 1006#endif
1007 1007
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index 6f155e5417..696732d2e9 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -1333,7 +1333,7 @@ static int toggle_radio_mode(void)
1333} 1333}
1334MENUITEM_FUNCTION_DYNTEXT(radio_mode_item, 0, 1334MENUITEM_FUNCTION_DYNTEXT(radio_mode_item, 0,
1335 toggle_radio_mode, NULL, 1335 toggle_radio_mode, NULL,
1336 get_mode_text, NULL, NULL, Icon_NOICON); 1336 get_mode_text, NULL, NULL, NULL, Icon_NOICON);
1337#endif 1337#endif
1338 1338
1339static int scan_presets(void) 1339static int scan_presets(void)
diff --git a/apps/root_menu.c b/apps/root_menu.c
index ad603db8c7..d117842e4a 100644
--- a/apps/root_menu.c
+++ b/apps/root_menu.c
@@ -362,7 +362,7 @@ char *get_wps_item_name(int selected_item, void * data, char *buffer)
362 return ID2P(LANG_RESUME_PLAYBACK); 362 return ID2P(LANG_RESUME_PLAYBACK);
363} 363}
364MENUITEM_RETURNVALUE_DYNTEXT(wps_item, GO_TO_WPS, NULL, get_wps_item_name, 364MENUITEM_RETURNVALUE_DYNTEXT(wps_item, GO_TO_WPS, NULL, get_wps_item_name,
365 NULL, Icon_Playback_menu); 365 NULL, NULL, Icon_Playback_menu);
366#ifdef HAVE_RECORDING 366#ifdef HAVE_RECORDING
367MENUITEM_RETURNVALUE(rec, ID2P(LANG_RECORDING), GO_TO_RECSCREEN, 367MENUITEM_RETURNVALUE(rec, ID2P(LANG_RECORDING), GO_TO_RECSCREEN,
368 NULL, Icon_Recording); 368 NULL, Icon_Recording);