diff options
Diffstat (limited to 'apps/menu.c')
-rw-r--r-- | apps/menu.c | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/apps/menu.c b/apps/menu.c index a205615802..48f6fa3d0b 100644 --- a/apps/menu.c +++ b/apps/menu.c | |||
@@ -104,13 +104,12 @@ static const char* get_menu_item_name(int selected_item, | |||
104 | int type = (menu->flags&MENU_TYPE_MASK); | 104 | int type = (menu->flags&MENU_TYPE_MASK); |
105 | selected_item = get_menu_selection(selected_item, menu); | 105 | selected_item = get_menu_selection(selected_item, menu); |
106 | 106 | ||
107 | (void)buffer_len; | ||
108 | /* only MT_MENU or MT_RETURN_ID is allowed in here */ | 107 | /* only MT_MENU or MT_RETURN_ID is allowed in here */ |
109 | if (type == MT_RETURN_ID) | 108 | if (type == MT_RETURN_ID) |
110 | { | 109 | { |
111 | if (menu->flags&MENU_DYNAMIC_DESC) | 110 | if (menu->flags&MENU_DYNAMIC_DESC) |
112 | return menu->menu_get_name_and_icon->list_get_name(selected_item, | 111 | return menu->menu_get_name_and_icon->list_get_name(selected_item, |
113 | menu->menu_get_name_and_icon->list_get_name_data, buffer); | 112 | menu->menu_get_name_and_icon->list_get_name_data, buffer, buffer_len); |
114 | return menu->strings[selected_item]; | 113 | return menu->strings[selected_item]; |
115 | } | 114 | } |
116 | 115 | ||
@@ -118,7 +117,7 @@ static const char* get_menu_item_name(int selected_item, | |||
118 | 117 | ||
119 | if ((menu->flags&MENU_DYNAMIC_DESC) && (type != MT_SETTING_W_TEXT)) | 118 | if ((menu->flags&MENU_DYNAMIC_DESC) && (type != MT_SETTING_W_TEXT)) |
120 | return menu->menu_get_name_and_icon->list_get_name(selected_item, | 119 | return menu->menu_get_name_and_icon->list_get_name(selected_item, |
121 | menu->menu_get_name_and_icon->list_get_name_data, buffer); | 120 | menu->menu_get_name_and_icon->list_get_name_data, buffer, buffer_len); |
122 | 121 | ||
123 | type = (menu->flags&MENU_TYPE_MASK); | 122 | type = (menu->flags&MENU_TYPE_MASK); |
124 | if ((type == MT_SETTING) || (type == MT_SETTING_W_TEXT)) | 123 | if ((type == MT_SETTING) || (type == MT_SETTING_W_TEXT)) |
@@ -177,6 +176,7 @@ static void init_menu_lists(const struct menu_item_ex *menu, | |||
177 | int type = (menu->flags&MENU_TYPE_MASK); | 176 | int type = (menu->flags&MENU_TYPE_MASK); |
178 | menu_callback_type menu_callback = NULL; | 177 | menu_callback_type menu_callback = NULL; |
179 | int icon; | 178 | int icon; |
179 | char * title; | ||
180 | current_subitems_count = 0; | 180 | current_subitems_count = 0; |
181 | 181 | ||
182 | if (type == MT_RETURN_ID) | 182 | if (type == MT_RETURN_ID) |
@@ -206,14 +206,33 @@ static void init_menu_lists(const struct menu_item_ex *menu, | |||
206 | 206 | ||
207 | gui_synclist_init(lists,get_menu_item_name,(void*)menu,false,1, parent); | 207 | gui_synclist_init(lists,get_menu_item_name,(void*)menu,false,1, parent); |
208 | #ifdef HAVE_LCD_BITMAP | 208 | #ifdef HAVE_LCD_BITMAP |
209 | if (menu->callback_and_desc->icon_id == Icon_NOICON) | 209 | |
210 | icon = Icon_Submenu_Entered; | 210 | if (menu->flags&MENU_HAS_DESC) |
211 | else | 211 | { |
212 | icon = menu->callback_and_desc->icon_id; | 212 | icon = menu->callback_and_desc->icon_id; |
213 | gui_synclist_set_title(lists, P2STR(menu->callback_and_desc->desc), icon); | 213 | title = P2STR(menu->callback_and_desc->desc); |
214 | } | ||
215 | else if (menu->flags&MENU_DYNAMIC_DESC) | ||
216 | { | ||
217 | char buffer[80]; | ||
218 | icon = menu->menu_get_name_and_icon->icon_id; | ||
219 | title = menu->menu_get_name_and_icon-> | ||
220 | list_get_name(-1, menu->menu_get_name_and_icon-> | ||
221 | list_get_name_data, buffer, sizeof(buffer)); | ||
222 | } | ||
223 | else | ||
224 | { | ||
225 | icon = Icon_NOICON; | ||
226 | title = ""; | ||
227 | } | ||
228 | |||
229 | if (icon == Icon_NOICON) | ||
230 | icon = Icon_Submenu_Entered; | ||
231 | gui_synclist_set_title(lists, title, icon); | ||
214 | gui_synclist_set_icon_callback(lists, global_settings.show_icons?menu_get_icon:NULL); | 232 | gui_synclist_set_icon_callback(lists, global_settings.show_icons?menu_get_icon:NULL); |
215 | #else | 233 | #else |
216 | (void)icon; | 234 | (void)icon; |
235 | (void)title; | ||
217 | gui_synclist_set_icon_callback(lists, NULL); | 236 | gui_synclist_set_icon_callback(lists, NULL); |
218 | #endif | 237 | #endif |
219 | if(global_settings.talk_menu) | 238 | if(global_settings.talk_menu) |
@@ -256,8 +275,8 @@ static int talk_menu_item(int selected_item, void *data) | |||
256 | char buffer[80]; | 275 | char buffer[80]; |
257 | str = menu->submenus[sel]->menu_get_name_and_icon-> | 276 | str = menu->submenus[sel]->menu_get_name_and_icon-> |
258 | list_get_name(sel, menu->submenus[sel]-> | 277 | list_get_name(sel, menu->submenus[sel]-> |
259 | menu_get_name_and_icon-> | 278 | menu_get_name_and_icon-> |
260 | list_get_name_data, buffer); | 279 | list_get_name_data, buffer, sizeof(buffer)); |
261 | id = P2ID(str); | 280 | id = P2ID(str); |
262 | } | 281 | } |
263 | } | 282 | } |