summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/menu.c37
-rw-r--r--apps/menu.h3
-rw-r--r--apps/menus/audiohw_eq_menu.c5
-rw-r--r--apps/menus/radio_menu.c5
-rw-r--r--apps/menus/settings_menu.c7
-rw-r--r--apps/root_menu.c5
6 files changed, 43 insertions, 19 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 }
diff --git a/apps/menu.h b/apps/menu.h
index df5f7ced9f..7ace51329f 100644
--- a/apps/menu.h
+++ b/apps/menu.h
@@ -91,7 +91,8 @@ struct menu_item_ex {
91 const struct menu_get_name_and_icon { 91 const struct menu_get_name_and_icon {
92 int (*menu_callback)(int action, 92 int (*menu_callback)(int action,
93 const struct menu_item_ex *this_item); 93 const struct menu_item_ex *this_item);
94 char *(*list_get_name)(int selected_item, void * data, char *buffer); 94 char *(*list_get_name)(int selected_item, void * data,
95 char *buffer, size_t buffer_len);
95 int (*list_speak_item)(int selected_item, void * data); 96 int (*list_speak_item)(int selected_item, void * data);
96 void *list_get_name_data; 97 void *list_get_name_data;
97 int icon_id; 98 int icon_id;
diff --git a/apps/menus/audiohw_eq_menu.c b/apps/menus/audiohw_eq_menu.c
index 1027d6a0b8..8dfb6e8450 100644
--- a/apps/menus/audiohw_eq_menu.c
+++ b/apps/menus/audiohw_eq_menu.c
@@ -41,9 +41,10 @@ static unsigned short hw_eq_setting_lang_ids[AUDIOHW_EQ_SETTING_NUM] =
41#endif 41#endif
42}; 42};
43 43
44static char * hw_eq_get_name(int selected_item, void * data, char *buffer) 44static char * hw_eq_get_name(int selected_item, void * data,
45 char *buffer, size_t buffer_len)
45{ 46{
46 snprintf(buffer, MAX_PATH, 47 snprintf(buffer, buffer_len,
47 str(hw_eq_setting_lang_ids[HW_EQ_IDX_SETTING(data)]), 48 str(hw_eq_setting_lang_ids[HW_EQ_IDX_SETTING(data)]),
48 HW_EQ_IDX_BAND(data) + 1); 49 HW_EQ_IDX_BAND(data) + 1);
49 return buffer; 50 return buffer;
diff --git a/apps/menus/radio_menu.c b/apps/menus/radio_menu.c
index fb3d2b7fee..8871421c11 100644
--- a/apps/menus/radio_menu.c
+++ b/apps/menus/radio_menu.c
@@ -100,11 +100,12 @@ MENUITEM_SETTING(force_mono, &global_settings.fm_force_mono, NULL);
100 100
101#ifndef FM_MODE 101#ifndef FM_MODE
102extern int radio_mode; 102extern int radio_mode;
103static char* get_mode_text(int selected_item, void * data, char *buffer) 103static char* get_mode_text(int selected_item, void * data,
104 char *buffer, size_t buffer_len)
104{ 105{
105 (void)selected_item; 106 (void)selected_item;
106 (void)data; 107 (void)data;
107 snprintf(buffer, MAX_PATH, "%s %s", str(LANG_MODE), 108 snprintf(buffer, buffer_len, "%s %s", str(LANG_MODE),
108 radio_mode ? str(LANG_PRESET) : 109 radio_mode ? str(LANG_PRESET) :
109 str(LANG_RADIO_SCAN_MODE)); 110 str(LANG_RADIO_SCAN_MODE));
110 return buffer; 111 return buffer;
diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c
index ca0ec91967..67595498ad 100644
--- a/apps/menus/settings_menu.c
+++ b/apps/menus/settings_menu.c
@@ -500,14 +500,15 @@ static int seconds_to_min(int secs)
500 500
501/* A string representation of either whether a sleep timer will be started or 501/* A string representation of either whether a sleep timer will be started or
502 canceled, and how long it will be or how long is remaining in brackets */ 502 canceled, and how long it will be or how long is remaining in brackets */
503static char* sleep_timer_getname(int selected_item, void * data, char *buffer) 503static char* sleep_timer_getname(int selected_item, void * data,
504 char *buffer, size_t buffer_len)
504{ 505{
505 (void)selected_item; 506 (void)selected_item;
506 (void)data; 507 (void)data;
507 int sec = get_sleep_timer(); 508 int sec = get_sleep_timer();
508 char timer_buf[10]; 509 char timer_buf[10];
509 /* we have no sprintf, so MAX_PATH is a guess */ 510
510 snprintf(buffer, MAX_PATH, "%s (%s)", 511 snprintf(buffer, buffer_len, "%s (%s)",
511 str(sec ? LANG_SLEEP_TIMER_CANCEL_CURRENT 512 str(sec ? LANG_SLEEP_TIMER_CANCEL_CURRENT
512 : LANG_SLEEP_TIMER_START_CURRENT), 513 : LANG_SLEEP_TIMER_START_CURRENT),
513 sleep_timer_formatter(timer_buf, sizeof(timer_buf), 514 sleep_timer_formatter(timer_buf, sizeof(timer_buf),
diff --git a/apps/root_menu.c b/apps/root_menu.c
index 6b3e213831..584328bd4b 100644
--- a/apps/root_menu.c
+++ b/apps/root_menu.c
@@ -454,9 +454,10 @@ MENUITEM_RETURNVALUE(rocks_browser, ID2P(LANG_PLUGINS), GO_TO_BROWSEPLUGINS,
454MENUITEM_RETURNVALUE(playlist_browser, ID2P(LANG_CATALOG), GO_TO_PLAYLIST_VIEWER, 454MENUITEM_RETURNVALUE(playlist_browser, ID2P(LANG_CATALOG), GO_TO_PLAYLIST_VIEWER,
455 NULL, Icon_Playlist); 455 NULL, Icon_Playlist);
456 456
457static char *get_wps_item_name(int selected_item, void * data, char *buffer) 457static char *get_wps_item_name(int selected_item, void * data,
458 char *buffer, size_t buffer_len)
458{ 459{
459 (void)selected_item; (void)data; (void)buffer; 460 (void)selected_item; (void)data; (void)buffer; (void)buffer_len;
460 if (audio_status()) 461 if (audio_status())
461 return ID2P(LANG_NOW_PLAYING); 462 return ID2P(LANG_NOW_PLAYING);
462 return ID2P(LANG_RESUME_PLAYBACK); 463 return ID2P(LANG_RESUME_PLAYBACK);