diff options
-rw-r--r-- | apps/menu.c | 22 | ||||
-rw-r--r-- | apps/menu.h | 14 | ||||
-rw-r--r-- | apps/menus/eq_menu.c | 44 | ||||
-rw-r--r-- | apps/onplay.c | 2 | ||||
-rw-r--r-- | apps/recorder/radio.c | 2 | ||||
-rw-r--r-- | apps/root_menu.c | 2 |
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) | |||
145 | MENUITEM_SETTING(gain_3, &global_settings.eq_band3_gain, dsp_set_coefs_callback); | 145 | MENUITEM_SETTING(gain_3, &global_settings.eq_band3_gain, dsp_set_coefs_callback); |
146 | MENUITEM_SETTING(gain_4, &global_settings.eq_band4_gain, dsp_set_coefs_callback); | 146 | MENUITEM_SETTING(gain_4, &global_settings.eq_band4_gain, dsp_set_coefs_callback); |
147 | 147 | ||
148 | MENUITEM_FUNCTION_DYNTEXT(gain_item_0, MENU_FUNC_USEPARAM, do_option, (void*)&gain_0, | 148 | MENUITEM_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); |
151 | MENUITEM_FUNCTION_DYNTEXT(gain_item_1, MENU_FUNC_USEPARAM, do_option, (void*)&gain_1, | 151 | MENUITEM_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); |
154 | MENUITEM_FUNCTION_DYNTEXT(gain_item_2, MENU_FUNC_USEPARAM, do_option, (void*)&gain_2, | 154 | MENUITEM_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); |
157 | MENUITEM_FUNCTION_DYNTEXT(gain_item_3, MENU_FUNC_USEPARAM, do_option, (void*)&gain_3, | 157 | MENUITEM_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); |
160 | MENUITEM_FUNCTION_DYNTEXT(gain_item_4, MENU_FUNC_USEPARAM, do_option, (void*)&gain_4, | 160 | MENUITEM_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 | ||
164 | MAKE_MENU(gain_menu, ID2P(LANG_EQUALIZER_GAIN), NULL, Icon_NOICON, &gain_item_0, | 164 | MAKE_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 | } |
196 | MAKE_MENU(band_0_menu, ID2P(LANG_EQUALIZER_BAND_LOW_SHELF), NULL, | 196 | MAKE_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); |
198 | MENUITEM_FUNCTION_DYNTEXT(band_1_menu, MENU_FUNC_USEPARAM, | 198 | MENUITEM_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); |
201 | MENUITEM_FUNCTION_DYNTEXT(band_2_menu, MENU_FUNC_USEPARAM, | 201 | MENUITEM_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); |
204 | MENUITEM_FUNCTION_DYNTEXT(band_3_menu, MENU_FUNC_USEPARAM, | 204 | MENUITEM_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); |
207 | MAKE_MENU(band_4_menu, ID2P(LANG_EQUALIZER_BAND_HIGH_SHELF), NULL, | 207 | MAKE_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 | } |
1003 | MENUITEM_FUNCTION_DYNTEXT(rating_item, 0, set_rating_inline, | 1003 | MENUITEM_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 | } |
1334 | MENUITEM_FUNCTION_DYNTEXT(radio_mode_item, 0, | 1334 | MENUITEM_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 | ||
1339 | static int scan_presets(void) | 1339 | static 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 | } |
364 | MENUITEM_RETURNVALUE_DYNTEXT(wps_item, GO_TO_WPS, NULL, get_wps_item_name, | 364 | MENUITEM_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 |
367 | MENUITEM_RETURNVALUE(rec, ID2P(LANG_RECORDING), GO_TO_RECSCREEN, | 367 | MENUITEM_RETURNVALUE(rec, ID2P(LANG_RECORDING), GO_TO_RECSCREEN, |
368 | NULL, Icon_Recording); | 368 | NULL, Icon_Recording); |