summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/menu.c2
-rw-r--r--apps/menu.h14
-rw-r--r--apps/menus/display_menu.c21
-rw-r--r--apps/menus/eq_menu.c22
-rw-r--r--apps/menus/main_menu.c26
-rw-r--r--apps/menus/playlist_menu.c8
-rw-r--r--apps/menus/recording_menu.c20
-rw-r--r--apps/menus/settings_menu.c16
-rw-r--r--apps/recorder/radio.c22
9 files changed, 75 insertions, 76 deletions
diff --git a/apps/menu.c b/apps/menu.c
index 412aca7f9b..3171e2e63f 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -556,7 +556,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected)
556 return_value = temp->function->function(); 556 return_value = temp->function->function();
557 if (temp->flags&MENU_FUNC_CHECK_RETVAL) 557 if (temp->flags&MENU_FUNC_CHECK_RETVAL)
558 { 558 {
559 if (return_value == temp->function->exit_value) 559 if (return_value == 1)
560 { 560 {
561 done = true; 561 done = true;
562 ret = return_value; 562 ret = return_value;
diff --git a/apps/menu.h b/apps/menu.h
index ded25500bf..3a7a2de42f 100644
--- a/apps/menu.h
+++ b/apps/menu.h
@@ -46,7 +46,6 @@ struct menu_func {
46 int (*function)(void); 46 int (*function)(void);
47 }; 47 };
48 void *param; /* passed to function_w_param */ 48 void *param; /* passed to function_w_param */
49 int exit_value; /* exit do_menu() if function returns this value */
50}; 49};
51 50
52#define MENU_TYPE_MASK 0xF /* MT_* type */ 51#define MENU_TYPE_MASK 0xF /* MT_* type */
@@ -151,24 +150,23 @@ bool do_setting_from_menu(const struct menu_item_ex *temp);
151 150
152/* Use this to put a function call into the menu. 151/* Use this to put a function call into the menu.
153 When the user selects this item the function will be run, 152 When the user selects this item the function will be run,
154 unless MENU_FUNC_IGNORE_RETVAL is set, when it exits the user 153 unless MENU_FUNC_IGNORE_RETVAL is set, the return value
155 will be back in the menu and return value is ignored, 154 will be checked, returning 1 will exit do_menu(); */
156 else if it returns exit_if do_mneu() will exit */
157#define MENUITEM_FUNCTION(name, flags, str, func, param, \ 155#define MENUITEM_FUNCTION(name, flags, str, func, param, \
158 exit_if, callback, icon) \ 156 callback, icon) \
159 static const struct menu_callback_with_desc name##_ = {callback,str,icon}; \ 157 static const struct menu_callback_with_desc name##_ = {callback,str,icon}; \
160 static const struct menu_func name##__ = {{(void*)func}, param, exit_if}; \ 158 static const struct menu_func name##__ = {{(void*)func}, param}; \
161 /* should be const, but recording_settings wont let us do that */ \ 159 /* should be const, but recording_settings wont let us do that */ \
162 const struct menu_item_ex name = \ 160 const struct menu_item_ex name = \
163 { MT_FUNCTION_CALL|MENU_HAS_DESC|flags, \ 161 { MT_FUNCTION_CALL|MENU_HAS_DESC|flags, \
164 { .function = & name##__}, {.callback_and_desc = & name##_}}; 162 { .function = & name##__}, {.callback_and_desc = & name##_}};
165 163
166/* As above, except the text is dynamic */ 164/* As above, except the text is dynamic */
167#define MENUITEM_FUNCTION_DYNTEXT(name, flags, func, param, exit_if, \ 165#define MENUITEM_FUNCTION_DYNTEXT(name, flags, func, param, \
168 text_callback, text_cb_data, callback, icon) \ 166 text_callback, text_cb_data, callback, icon) \
169 static const struct menu_get_name_and_icon name##_ \ 167 static const struct menu_get_name_and_icon name##_ \
170 = {callback,text_callback,text_cb_data,icon}; \ 168 = {callback,text_callback,text_cb_data,icon}; \
171 static const struct menu_func name##__ = {{(void*)func}, param, exit_if}; \ 169 static const struct menu_func name##__ = {{(void*)func}, param}; \
172 static const struct menu_item_ex name = \ 170 static const struct menu_item_ex name = \
173 { MT_FUNCTION_CALL|MENU_DYNAMIC_DESC|flags, \ 171 { MT_FUNCTION_CALL|MENU_DYNAMIC_DESC|flags, \
174 { .function = & name##__}, {.menu_get_name_and_icon = & name##_}}; 172 { .function = & name##__}, {.menu_get_name_and_icon = & name##_}};
diff --git a/apps/menus/display_menu.c b/apps/menus/display_menu.c
index 3714950223..4cdb5b7fce 100644
--- a/apps/menus/display_menu.c
+++ b/apps/menus/display_menu.c
@@ -124,6 +124,7 @@ static int clear_main_backdrop(void)
124 global_settings.backdrop_file[0]=0; 124 global_settings.backdrop_file[0]=0;
125 unload_main_backdrop(); 125 unload_main_backdrop();
126 show_main_backdrop(); 126 show_main_backdrop();
127 settings_save();
127 return 0; 128 return 0;
128} 129}
129 130
@@ -159,13 +160,13 @@ static int reset_color(void)
159 return 0; 160 return 0;
160} 161}
161MENUITEM_FUNCTION(clear_main_bd, 0, ID2P(LANG_CLEAR_BACKDROP), 162MENUITEM_FUNCTION(clear_main_bd, 0, ID2P(LANG_CLEAR_BACKDROP),
162 clear_main_backdrop, NULL, 0, NULL, Icon_NOICON); 163 clear_main_backdrop, NULL, NULL, Icon_NOICON);
163MENUITEM_FUNCTION(set_bg_col, 0, ID2P(LANG_BACKGROUND_COLOR), 164MENUITEM_FUNCTION(set_bg_col, 0, ID2P(LANG_BACKGROUND_COLOR),
164 set_bg_color, NULL, 0, NULL, Icon_NOICON); 165 set_bg_color, NULL, NULL, Icon_NOICON);
165MENUITEM_FUNCTION(set_fg_col, 0, ID2P(LANG_FOREGROUND_COLOR), 166MENUITEM_FUNCTION(set_fg_col, 0, ID2P(LANG_FOREGROUND_COLOR),
166 set_fg_color, NULL, 0, NULL, Icon_NOICON); 167 set_fg_color, NULL, NULL, Icon_NOICON);
167MENUITEM_FUNCTION(reset_colors, 0, ID2P(LANG_RESET_COLORS), 168MENUITEM_FUNCTION(reset_colors, 0, ID2P(LANG_RESET_COLORS),
168 reset_color, NULL, 0, NULL, Icon_NOICON); 169 reset_color, NULL, NULL, Icon_NOICON);
169#endif 170#endif
170 171
171/* now the actual menu */ 172/* now the actual menu */
@@ -498,11 +499,11 @@ static int peak_meter_max(void) {
498 return retval; 499 return retval;
499} 500}
500MENUITEM_FUNCTION(peak_meter_scale_item, 0, ID2P(LANG_PM_SCALE), 501MENUITEM_FUNCTION(peak_meter_scale_item, 0, ID2P(LANG_PM_SCALE),
501 peak_meter_scale, NULL, 0, NULL, Icon_NOICON); 502 peak_meter_scale, NULL, NULL, Icon_NOICON);
502MENUITEM_FUNCTION(peak_meter_min_item, 0, ID2P(LANG_PM_MIN), 503MENUITEM_FUNCTION(peak_meter_min_item, 0, ID2P(LANG_PM_MIN),
503 peak_meter_min, NULL, 0, NULL, Icon_NOICON); 504 peak_meter_min, NULL, NULL, Icon_NOICON);
504MENUITEM_FUNCTION(peak_meter_max_item, 0, ID2P(LANG_PM_MAX), 505MENUITEM_FUNCTION(peak_meter_max_item, 0, ID2P(LANG_PM_MAX),
505 peak_meter_max, NULL, 0, NULL, Icon_NOICON); 506 peak_meter_max, NULL, NULL, Icon_NOICON);
506MAKE_MENU(peak_meter_menu, ID2P(LANG_PM_MENU), NULL, Icon_NOICON, 507MAKE_MENU(peak_meter_menu, ID2P(LANG_PM_MENU), NULL, Icon_NOICON,
507 &peak_meter_release, &peak_meter_hold, 508 &peak_meter_release, &peak_meter_hold,
508 &peak_meter_clip_hold, 509 &peak_meter_clip_hold,
@@ -535,15 +536,15 @@ static int browse_folder(void *param)
535#ifdef HAVE_LCD_BITMAP 536#ifdef HAVE_LCD_BITMAP
536MENUITEM_FUNCTION(browse_fonts, MENU_FUNC_USEPARAM, 537MENUITEM_FUNCTION(browse_fonts, MENU_FUNC_USEPARAM,
537 ID2P(LANG_CUSTOM_FONT), 538 ID2P(LANG_CUSTOM_FONT),
538 browse_folder, (void*)&fonts, 0, NULL, Icon_NOICON); 539 browse_folder, (void*)&fonts, NULL, Icon_NOICON);
539#endif 540#endif
540MENUITEM_FUNCTION(browse_wps, MENU_FUNC_USEPARAM, 541MENUITEM_FUNCTION(browse_wps, MENU_FUNC_USEPARAM,
541 ID2P(LANG_WHILE_PLAYING), 542 ID2P(LANG_WHILE_PLAYING),
542 browse_folder, (void*)&wps, 0, NULL, Icon_NOICON); 543 browse_folder, (void*)&wps, NULL, Icon_NOICON);
543#ifdef HAVE_REMOTE_LCD 544#ifdef HAVE_REMOTE_LCD
544MENUITEM_FUNCTION(browse_rwps, MENU_FUNC_USEPARAM, 545MENUITEM_FUNCTION(browse_rwps, MENU_FUNC_USEPARAM,
545 ID2P(LANG_REMOTE_WHILE_PLAYING), 546 ID2P(LANG_REMOTE_WHILE_PLAYING),
546 browse_folder, (void*)&rwps, 0, NULL, Icon_NOICON); 547 browse_folder, (void*)&rwps, NULL, Icon_NOICON);
547#endif 548#endif
548 549
549MENUITEM_SETTING(show_icons, &global_settings.show_icons, NULL); 550MENUITEM_SETTING(show_icons, &global_settings.show_icons, NULL);
diff --git a/apps/menus/eq_menu.c b/apps/menus/eq_menu.c
index f2c1f9b22d..58d86782b0 100644
--- a/apps/menus/eq_menu.c
+++ b/apps/menus/eq_menu.c
@@ -143,19 +143,19 @@ MENUITEM_SETTING(gain_3, &global_settings.eq_band3_gain, dsp_set_coefs_callback)
143MENUITEM_SETTING(gain_4, &global_settings.eq_band4_gain, dsp_set_coefs_callback); 143MENUITEM_SETTING(gain_4, &global_settings.eq_band4_gain, dsp_set_coefs_callback);
144 144
145MENUITEM_FUNCTION_DYNTEXT(gain_item_0, MENU_FUNC_USEPARAM, do_option, (void*)&gain_0, 145MENUITEM_FUNCTION_DYNTEXT(gain_item_0, MENU_FUNC_USEPARAM, do_option, (void*)&gain_0,
146 0, gainitem_get_name, &global_settings.eq_band0_cutoff, 146 gainitem_get_name, &global_settings.eq_band0_cutoff,
147 NULL, Icon_NOICON); 147 NULL, Icon_NOICON);
148MENUITEM_FUNCTION_DYNTEXT(gain_item_1, MENU_FUNC_USEPARAM, do_option, (void*)&gain_1, 148MENUITEM_FUNCTION_DYNTEXT(gain_item_1, MENU_FUNC_USEPARAM, do_option, (void*)&gain_1,
149 0, gainitem_get_name, &global_settings.eq_band1_cutoff, 149 gainitem_get_name, &global_settings.eq_band1_cutoff,
150 NULL, Icon_NOICON); 150 NULL, Icon_NOICON);
151MENUITEM_FUNCTION_DYNTEXT(gain_item_2, MENU_FUNC_USEPARAM, do_option, (void*)&gain_2, 151MENUITEM_FUNCTION_DYNTEXT(gain_item_2, MENU_FUNC_USEPARAM, do_option, (void*)&gain_2,
152 0, gainitem_get_name, &global_settings.eq_band2_cutoff, 152 gainitem_get_name, &global_settings.eq_band2_cutoff,
153 NULL, Icon_NOICON); 153 NULL, Icon_NOICON);
154MENUITEM_FUNCTION_DYNTEXT(gain_item_3, MENU_FUNC_USEPARAM, do_option, (void*)&gain_3, 154MENUITEM_FUNCTION_DYNTEXT(gain_item_3, MENU_FUNC_USEPARAM, do_option, (void*)&gain_3,
155 0, gainitem_get_name, &global_settings.eq_band3_cutoff, 155 gainitem_get_name, &global_settings.eq_band3_cutoff,
156 NULL, Icon_NOICON); 156 NULL, Icon_NOICON);
157MENUITEM_FUNCTION_DYNTEXT(gain_item_4, MENU_FUNC_USEPARAM, do_option, (void*)&gain_4, 157MENUITEM_FUNCTION_DYNTEXT(gain_item_4, MENU_FUNC_USEPARAM, do_option, (void*)&gain_4,
158 0, gainitem_get_name, &global_settings.eq_band4_cutoff, 158 gainitem_get_name, &global_settings.eq_band4_cutoff,
159 NULL, Icon_NOICON); 159 NULL, Icon_NOICON);
160 160
161MAKE_MENU(gain_menu, ID2P(LANG_EQUALIZER_GAIN), NULL, Icon_NOICON, &gain_item_0, 161MAKE_MENU(gain_menu, ID2P(LANG_EQUALIZER_GAIN), NULL, Icon_NOICON, &gain_item_0,
@@ -193,13 +193,13 @@ int do_center_band_menu(void* param)
193MAKE_MENU(band_0_menu, ID2P(LANG_EQUALIZER_BAND_LOW_SHELF), NULL, 193MAKE_MENU(band_0_menu, ID2P(LANG_EQUALIZER_BAND_LOW_SHELF), NULL,
194 Icon_EQ, &cutoff_0, &q_0, &gain_0); 194 Icon_EQ, &cutoff_0, &q_0, &gain_0);
195MENUITEM_FUNCTION_DYNTEXT(band_1_menu, MENU_FUNC_USEPARAM, 195MENUITEM_FUNCTION_DYNTEXT(band_1_menu, MENU_FUNC_USEPARAM,
196 do_center_band_menu, (void*)1, 0, 196 do_center_band_menu, (void*)1,
197 centerband_get_name, (void*)1, NULL, Icon_EQ); 197 centerband_get_name, (void*)1, NULL, Icon_EQ);
198MENUITEM_FUNCTION_DYNTEXT(band_2_menu, MENU_FUNC_USEPARAM, 198MENUITEM_FUNCTION_DYNTEXT(band_2_menu, MENU_FUNC_USEPARAM,
199 do_center_band_menu, (void*)2, 0, 199 do_center_band_menu, (void*)2,
200 centerband_get_name, (void*)2, NULL, Icon_EQ); 200 centerband_get_name, (void*)2, NULL, Icon_EQ);
201MENUITEM_FUNCTION_DYNTEXT(band_3_menu, MENU_FUNC_USEPARAM, 201MENUITEM_FUNCTION_DYNTEXT(band_3_menu, MENU_FUNC_USEPARAM,
202 do_center_band_menu, (void*)3, 0, 202 do_center_band_menu, (void*)3,
203 centerband_get_name, (void*)3, NULL, Icon_EQ); 203 centerband_get_name, (void*)3, NULL, Icon_EQ);
204MAKE_MENU(band_4_menu, ID2P(LANG_EQUALIZER_BAND_HIGH_SHELF), NULL, 204MAKE_MENU(band_4_menu, ID2P(LANG_EQUALIZER_BAND_HIGH_SHELF), NULL,
205 Icon_EQ, &cutoff_4, &q_4, &gain_4); 205 Icon_EQ, &cutoff_4, &q_4, &gain_4);
@@ -629,12 +629,12 @@ bool eq_browse_presets(void)
629 629
630 630
631MENUITEM_FUNCTION(eq_graphical, 0, ID2P(LANG_EQUALIZER_GRAPHICAL), 631MENUITEM_FUNCTION(eq_graphical, 0, ID2P(LANG_EQUALIZER_GRAPHICAL),
632 (int(*)(void))eq_menu_graphical, NULL, 0, NULL, 632 (int(*)(void))eq_menu_graphical, NULL, NULL,
633 Icon_EQ); 633 Icon_EQ);
634MENUITEM_FUNCTION(eq_save, 0, ID2P(LANG_EQUALIZER_SAVE), 634MENUITEM_FUNCTION(eq_save, 0, ID2P(LANG_EQUALIZER_SAVE),
635 (int(*)(void))eq_save_preset, NULL, 0, NULL, Icon_NOICON); 635 (int(*)(void))eq_save_preset, NULL, NULL, Icon_NOICON);
636MENUITEM_FUNCTION(eq_browse, 0, ID2P(LANG_EQUALIZER_BROWSE), 636MENUITEM_FUNCTION(eq_browse, 0, ID2P(LANG_EQUALIZER_BROWSE),
637 (int(*)(void))eq_browse_presets, NULL, 0, NULL, Icon_NOICON); 637 (int(*)(void))eq_browse_presets, NULL, NULL, Icon_NOICON);
638 638
639MAKE_MENU(equalizer_menu, ID2P(LANG_EQUALIZER), NULL, Icon_EQ, 639MAKE_MENU(equalizer_menu, ID2P(LANG_EQUALIZER), NULL, Icon_EQ,
640 &eq_enable, &eq_graphical, &eq_precut, &gain_menu, 640 &eq_enable, &eq_graphical, &eq_precut, &gain_menu,
diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c
index b91b2f5553..fe6787ae25 100644
--- a/apps/menus/main_menu.c
+++ b/apps/menus/main_menu.c
@@ -96,13 +96,13 @@ static int write_settings_file(void* param)
96} 96}
97 97
98MENUITEM_FUNCTION(browse_configs, MENU_FUNC_USEPARAM, ID2P(LANG_CUSTOM_CFG), 98MENUITEM_FUNCTION(browse_configs, MENU_FUNC_USEPARAM, ID2P(LANG_CUSTOM_CFG),
99 browse_folder, (void*)&config, 0, NULL, Icon_NOICON); 99 browse_folder, (void*)&config, NULL, Icon_NOICON);
100MENUITEM_FUNCTION(save_settings_item, MENU_FUNC_USEPARAM, ID2P(LANG_SAVE_SETTINGS), 100MENUITEM_FUNCTION(save_settings_item, MENU_FUNC_USEPARAM, ID2P(LANG_SAVE_SETTINGS),
101 write_settings_file, (void*)SETTINGS_SAVE_ALL, 0, NULL, Icon_NOICON); 101 write_settings_file, (void*)SETTINGS_SAVE_ALL, NULL, Icon_NOICON);
102MENUITEM_FUNCTION(save_theme_item, MENU_FUNC_USEPARAM, ID2P(LANG_SAVE_THEME), 102MENUITEM_FUNCTION(save_theme_item, MENU_FUNC_USEPARAM, ID2P(LANG_SAVE_THEME),
103 write_settings_file, (void*)SETTINGS_SAVE_THEME, 0, NULL, Icon_NOICON); 103 write_settings_file, (void*)SETTINGS_SAVE_THEME, NULL, Icon_NOICON);
104MENUITEM_FUNCTION(reset_settings_item, 0, ID2P(LANG_RESET), 104MENUITEM_FUNCTION(reset_settings_item, 0, ID2P(LANG_RESET),
105 reset_settings, NULL, 0, NULL, Icon_NOICON); 105 reset_settings, NULL, NULL, Icon_NOICON);
106 106
107MAKE_MENU(manage_settings, ID2P(LANG_MANAGE_MENU), NULL, Icon_Config, 107MAKE_MENU(manage_settings, ID2P(LANG_MANAGE_MENU), NULL, Icon_Config,
108 &browse_configs, &reset_settings_item, 108 &browse_configs, &reset_settings_item,
@@ -341,7 +341,7 @@ static bool show_info(void)
341 return false; 341 return false;
342} 342}
343MENUITEM_FUNCTION(show_info_item, 0, ID2P(LANG_INFO_MENU), 343MENUITEM_FUNCTION(show_info_item, 0, ID2P(LANG_INFO_MENU),
344 (menu_function)show_info, NULL, 0, NULL, Icon_NOICON); 344 (menu_function)show_info, NULL, NULL, Icon_NOICON);
345 345
346 346
347/* sleep Menu */ 347/* sleep Menu */
@@ -374,22 +374,22 @@ static int sleep_timer(void)
374} 374}
375 375
376MENUITEM_FUNCTION(sleep_timer_call, 0, ID2P(LANG_SLEEP_TIMER), sleep_timer, 376MENUITEM_FUNCTION(sleep_timer_call, 0, ID2P(LANG_SLEEP_TIMER), sleep_timer,
377 NULL, 0, NULL, Icon_Menu_setting); /* make it look like a 377 NULL, NULL, Icon_Menu_setting); /* make it look like a
378 setting to the user */ 378 setting to the user */
379MENUITEM_FUNCTION(show_credits_item, 0, ID2P(LANG_VERSION), 379MENUITEM_FUNCTION(show_credits_item, 0, ID2P(LANG_VERSION),
380 (menu_function)show_credits, NULL, 0, NULL, Icon_NOICON); 380 (menu_function)show_credits, NULL, NULL, Icon_NOICON);
381MENUITEM_FUNCTION(show_runtime_item, 0, ID2P(LANG_RUNNING_TIME), 381MENUITEM_FUNCTION(show_runtime_item, 0, ID2P(LANG_RUNNING_TIME),
382 (menu_function)view_runtime, NULL, 0, NULL, Icon_NOICON); 382 (menu_function)view_runtime, NULL, NULL, Icon_NOICON);
383MENUITEM_FUNCTION(debug_menu_item, 0, ID2P(LANG_DEBUG), 383MENUITEM_FUNCTION(debug_menu_item, 0, ID2P(LANG_DEBUG),
384 (menu_function)debug_menu, NULL, 0, NULL, Icon_NOICON); 384 (menu_function)debug_menu, NULL, NULL, Icon_NOICON);
385#ifdef SIMULATOR 385#ifdef SIMULATOR
386MENUITEM_FUNCTION(simulate_usb_item, 0, ID2P(LANG_USB), 386MENUITEM_FUNCTION(simulate_usb_item, 0, ID2P(LANG_USB),
387 (menu_function)simulate_usb, NULL, 0, NULL, Icon_NOICON); 387 (menu_function)simulate_usb, NULL, NULL, Icon_NOICON);
388#ifdef ROCKBOX_HAS_LOGF 388#ifdef ROCKBOX_HAS_LOGF
389MENUITEM_FUNCTION(logfdisplay_item, 0, "logf", 389MENUITEM_FUNCTION(logfdisplay_item, 0, "logf",
390 (int (*)(void)) logfdisplay, NULL, 0, NULL, Icon_NOICON); 390 (int (*)(void)) logfdisplay, NULL, NULL, Icon_NOICON);
391MENUITEM_FUNCTION(logfdump_item, 0, "logfdump", 391MENUITEM_FUNCTION(logfdump_item, 0, "logfdump",
392 (int (*)(void)) logfdump, NULL, 0, NULL, Icon_NOICON); 392 (int (*)(void)) logfdump, NULL, NULL, Icon_NOICON);
393#endif 393#endif
394#endif 394#endif
395 395
@@ -410,7 +410,7 @@ MAKE_MENU(info_menu, ID2P(LANG_INFO), 0, Icon_Questionmark,
410/* MAIN MENU */ 410/* MAIN MENU */
411 411
412MENUITEM_FUNCTION(browse_themes, MENU_FUNC_USEPARAM, ID2P(LANG_CUSTOM_THEME), 412MENUITEM_FUNCTION(browse_themes, MENU_FUNC_USEPARAM, ID2P(LANG_CUSTOM_THEME),
413 browse_folder, (void*)&theme, 0, NULL, Icon_Folder); 413 browse_folder, (void*)&theme, NULL, Icon_Folder);
414 414
415#ifdef HAVE_LCD_CHARCELLS 415#ifdef HAVE_LCD_CHARCELLS
416int mainmenu_callback(int action,const struct menu_item_ex *this_item) 416int mainmenu_callback(int action,const struct menu_item_ex *this_item)
diff --git a/apps/menus/playlist_menu.c b/apps/menus/playlist_menu.c
index b73341c1d9..4f4b7c9839 100644
--- a/apps/menus/playlist_menu.c
+++ b/apps/menus/playlist_menu.c
@@ -63,15 +63,15 @@ int save_playlist_screen(struct playlist_info* playlist)
63 return 0; 63 return 0;
64} 64}
65MENUITEM_FUNCTION(create_playlist_item, 0, ID2P(LANG_CREATE_PLAYLIST), 65MENUITEM_FUNCTION(create_playlist_item, 0, ID2P(LANG_CREATE_PLAYLIST),
66 (int(*)(void))create_playlist, NULL, 0, NULL, Icon_NOICON); 66 (int(*)(void))create_playlist, NULL, NULL, Icon_NOICON);
67MENUITEM_FUNCTION(view_playlist, 0, ID2P(LANG_VIEW_DYNAMIC_PLAYLIST), 67MENUITEM_FUNCTION(view_playlist, 0, ID2P(LANG_VIEW_DYNAMIC_PLAYLIST),
68 (int(*)(void))playlist_viewer, NULL, 0, NULL, Icon_NOICON); 68 (int(*)(void))playlist_viewer, NULL, NULL, Icon_NOICON);
69MENUITEM_FUNCTION(save_playlist, MENU_FUNC_USEPARAM, ID2P(LANG_SAVE_DYNAMIC_PLAYLIST), 69MENUITEM_FUNCTION(save_playlist, MENU_FUNC_USEPARAM, ID2P(LANG_SAVE_DYNAMIC_PLAYLIST),
70 (int(*)(void*))save_playlist_screen, 70 (int(*)(void*))save_playlist_screen,
71 NULL, 0, NULL, Icon_NOICON); 71 NULL, NULL, Icon_NOICON);
72MENUITEM_FUNCTION(catalog, 0, ID2P(LANG_CATALOG), 72MENUITEM_FUNCTION(catalog, 0, ID2P(LANG_CATALOG),
73 (int(*)(void))catalog_view_playlists, 73 (int(*)(void))catalog_view_playlists,
74 NULL, 0, NULL, Icon_NOICON); 74 NULL, NULL, Icon_NOICON);
75MENUITEM_SETTING(recursive_dir_insert, &global_settings.recursive_dir_insert, NULL); 75MENUITEM_SETTING(recursive_dir_insert, &global_settings.recursive_dir_insert, NULL);
76MENUITEM_SETTING(warn_on_erase, &global_settings.warnon_erase_dynplaylist, NULL); 76MENUITEM_SETTING(warn_on_erase, &global_settings.warnon_erase_dynplaylist, NULL);
77 77
diff --git a/apps/menus/recording_menu.c b/apps/menus/recording_menu.c
index 43bd8a781f..084ade0d33 100644
--- a/apps/menus/recording_menu.c
+++ b/apps/menus/recording_menu.c
@@ -91,7 +91,7 @@ static int recsource_func(void)
91 n_opts, NULL ); 91 n_opts, NULL );
92} 92}
93MENUITEM_FUNCTION(recsource, 0, ID2P(LANG_RECORDING_SOURCE), 93MENUITEM_FUNCTION(recsource, 0, ID2P(LANG_RECORDING_SOURCE),
94 recsource_func, NULL, 0, recmenu_callback, Icon_Menu_setting); 94 recsource_func, NULL, recmenu_callback, Icon_Menu_setting);
95 95
96#if CONFIG_CODEC == SWCODEC 96#if CONFIG_CODEC == SWCODEC
97/* Makes an options list from a source list of options and indexes */ 97/* Makes an options list from a source list of options and indexes */
@@ -206,7 +206,7 @@ static int recfrequency_func(void)
206#endif /* CONFIG_CODEC == SWCODEC */ 206#endif /* CONFIG_CODEC == SWCODEC */
207} /* recfrequency */ 207} /* recfrequency */
208MENUITEM_FUNCTION(recfrequency, 0, ID2P(LANG_RECORDING_FREQUENCY), 208MENUITEM_FUNCTION(recfrequency, 0, ID2P(LANG_RECORDING_FREQUENCY),
209 recfrequency_func, NULL, 0, NULL, Icon_Menu_setting); 209 recfrequency_func, NULL, NULL, Icon_Menu_setting);
210 210
211 211
212static int recchannels_func(void) 212static int recchannels_func(void)
@@ -254,7 +254,7 @@ static int recchannels_func(void)
254#endif /* CONFIG_CODEC == SWCODEC */ 254#endif /* CONFIG_CODEC == SWCODEC */
255} 255}
256MENUITEM_FUNCTION(recchannels, 0, ID2P(LANG_RECORDING_CHANNELS), 256MENUITEM_FUNCTION(recchannels, 0, ID2P(LANG_RECORDING_CHANNELS),
257 recchannels_func, NULL, 0, NULL, Icon_Menu_setting); 257 recchannels_func, NULL, NULL, Icon_Menu_setting);
258 258
259#if CONFIG_CODEC == SWCODEC 259#if CONFIG_CODEC == SWCODEC
260 260
@@ -280,11 +280,11 @@ static int recformat_func(void)
280 return res; 280 return res;
281} /* recformat */ 281} /* recformat */
282MENUITEM_FUNCTION(recformat, 0, ID2P(LANG_RECORDING_FORMAT), 282MENUITEM_FUNCTION(recformat, 0, ID2P(LANG_RECORDING_FORMAT),
283 recformat_func, NULL, 0, NULL, Icon_Menu_setting); 283 recformat_func, NULL, NULL, Icon_Menu_setting);
284 284
285MENUITEM_FUNCTION(enc_global_config_menu_item, 0, ID2P(LANG_ENCODER_SETTINGS), 285MENUITEM_FUNCTION(enc_global_config_menu_item, 0, ID2P(LANG_ENCODER_SETTINGS),
286 (int(*)(void))enc_global_config_menu, 286 (int(*)(void))enc_global_config_menu,
287 NULL, 0, NULL, Icon_Submenu); 287 NULL, NULL, Icon_Submenu);
288 288
289#endif /* CONFIG_CODEC == SWCODEC */ 289#endif /* CONFIG_CODEC == SWCODEC */
290 290
@@ -325,7 +325,7 @@ static int recdirectory_func(void)
325 names, 2, NULL ); 325 names, 2, NULL );
326} 326}
327MENUITEM_FUNCTION(recdirectory, 0, ID2P(LANG_RECORD_DIRECTORY), 327MENUITEM_FUNCTION(recdirectory, 0, ID2P(LANG_RECORD_DIRECTORY),
328 recdirectory_func, NULL, 0, NULL, Icon_Menu_setting); 328 recdirectory_func, NULL, NULL, Icon_Menu_setting);
329 329
330MENUITEM_SETTING(cliplight, &global_settings.cliplight, NULL); 330MENUITEM_SETTING(cliplight, &global_settings.cliplight, NULL);
331 331
@@ -364,9 +364,9 @@ static int agc_cliptime_func(void)
364 INT, names, 5, NULL ); 364 INT, names, 5, NULL );
365} 365}
366MENUITEM_FUNCTION(agc_preset, 0, ID2P(LANG_RECORD_AGC_PRESET), 366MENUITEM_FUNCTION(agc_preset, 0, ID2P(LANG_RECORD_AGC_PRESET),
367 agc_preset_func, NULL, 0, NULL, Icon_Menu_setting); 367 agc_preset_func, NULL, NULL, Icon_Menu_setting);
368MENUITEM_FUNCTION(agc_cliptime, 0, ID2P(LANG_RECORD_AGC_CLIPTIME), 368MENUITEM_FUNCTION(agc_cliptime, 0, ID2P(LANG_RECORD_AGC_CLIPTIME),
369 agc_cliptime_func, NULL, 0, NULL, Icon_Menu_setting); 369 agc_cliptime_func, NULL, NULL, Icon_Menu_setting);
370#endif /* HAVE_AGC */ 370#endif /* HAVE_AGC */
371 371
372/** Rec trigger **/ 372/** Rec trigger **/
@@ -798,7 +798,7 @@ bool rectrigger(void)
798} 798}
799 799
800MENUITEM_FUNCTION(rectrigger_item, 0, ID2P(LANG_RECORD_TRIGGER), 800MENUITEM_FUNCTION(rectrigger_item, 0, ID2P(LANG_RECORD_TRIGGER),
801 (int(*)(void))rectrigger, NULL, 0, NULL, Icon_Menu_setting); 801 (int(*)(void))rectrigger, NULL, NULL, Icon_Menu_setting);
802 802
803 803
804 804
@@ -838,4 +838,4 @@ bool recording_menu(bool no_source)
838}; 838};
839 839
840MENUITEM_FUNCTION(recording_settings, MENU_FUNC_USEPARAM, ID2P(LANG_RECORDING_SETTINGS), 840MENUITEM_FUNCTION(recording_settings, MENU_FUNC_USEPARAM, ID2P(LANG_RECORDING_SETTINGS),
841 (int (*)(void*))recording_menu, 0, 0, NULL, Icon_NOICON); 841 (int (*)(void*))recording_menu, 0, NULL, Icon_NOICON);
diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c
index ace17a2055..939a2f3c8c 100644
--- a/apps/menus/settings_menu.c
+++ b/apps/menus/settings_menu.c
@@ -64,16 +64,16 @@ MENUITEM_SETTING(tagcache_ram, &global_settings.tagcache_ram, NULL);
64MENUITEM_SETTING(tagcache_autoupdate, &global_settings.tagcache_autoupdate, NULL); 64MENUITEM_SETTING(tagcache_autoupdate, &global_settings.tagcache_autoupdate, NULL);
65MENUITEM_FUNCTION(tc_init, 0, ID2P(LANG_TAGCACHE_FORCE_UPDATE), 65MENUITEM_FUNCTION(tc_init, 0, ID2P(LANG_TAGCACHE_FORCE_UPDATE),
66 (int(*)(void))tagcache_rebuild_with_splash, 66 (int(*)(void))tagcache_rebuild_with_splash,
67 NULL, 0, NULL, Icon_NOICON); 67 NULL, NULL, Icon_NOICON);
68MENUITEM_FUNCTION(tc_update, 0, ID2P(LANG_TAGCACHE_UPDATE), 68MENUITEM_FUNCTION(tc_update, 0, ID2P(LANG_TAGCACHE_UPDATE),
69 (int(*)(void))tagcache_update_with_splash, 69 (int(*)(void))tagcache_update_with_splash,
70 NULL, 0, NULL, Icon_NOICON); 70 NULL, NULL, Icon_NOICON);
71MENUITEM_SETTING(runtimedb, &global_settings.runtimedb, NULL); 71MENUITEM_SETTING(runtimedb, &global_settings.runtimedb, NULL);
72MENUITEM_FUNCTION(tc_export, 0, ID2P(LANG_TAGCACHE_EXPORT), 72MENUITEM_FUNCTION(tc_export, 0, ID2P(LANG_TAGCACHE_EXPORT),
73 (int(*)(void))tagtree_export, NULL, 0, 73 (int(*)(void))tagtree_export, NULL,
74 NULL, Icon_NOICON); 74 NULL, Icon_NOICON);
75MENUITEM_FUNCTION(tc_import, 0, ID2P(LANG_TAGCACHE_IMPORT), 75MENUITEM_FUNCTION(tc_import, 0, ID2P(LANG_TAGCACHE_IMPORT),
76 (int(*)(void))tagtree_import, NULL, 0, 76 (int(*)(void))tagtree_import, NULL,
77 NULL, Icon_NOICON); 77 NULL, Icon_NOICON);
78MAKE_MENU(tagcache_menu, ID2P(LANG_TAGCACHE), 0, Icon_NOICON, 78MAKE_MENU(tagcache_menu, ID2P(LANG_TAGCACHE), 0, Icon_NOICON,
79#ifdef HAVE_TC_RAMCACHE 79#ifdef HAVE_TC_RAMCACHE
@@ -221,7 +221,7 @@ static int timedate_set(void)
221} 221}
222 222
223MENUITEM_FUNCTION(time_set, 0, ID2P(LANG_TIME), 223MENUITEM_FUNCTION(time_set, 0, ID2P(LANG_TIME),
224 timedate_set, NULL, 0, NULL, Icon_NOICON); 224 timedate_set, NULL, NULL, Icon_NOICON);
225MENUITEM_SETTING(timeformat, &global_settings.timeformat, NULL); 225MENUITEM_SETTING(timeformat, &global_settings.timeformat, NULL);
226MAKE_MENU(time_menu, ID2P(LANG_TIME_MENU), 0, Icon_NOICON, &time_set, &timeformat); 226MAKE_MENU(time_menu, ID2P(LANG_TIME_MENU), 0, Icon_NOICON, &time_set, &timeformat);
227#endif 227#endif
@@ -231,7 +231,7 @@ MENUITEM_SETTING(poweroff, &global_settings.poweroff, NULL);
231 231
232#ifdef HAVE_RTC_ALARM 232#ifdef HAVE_RTC_ALARM
233MENUITEM_FUNCTION(alarm_screen_call, 0, ID2P(LANG_ALARM_MOD_ALARM_MENU), 233MENUITEM_FUNCTION(alarm_screen_call, 0, ID2P(LANG_ALARM_MOD_ALARM_MENU),
234 (menu_function)alarm_screen, NULL, 0, NULL, Icon_NOICON); 234 (menu_function)alarm_screen, NULL, NULL, Icon_NOICON);
235#if CONFIG_TUNER || defined(HAVE_RECORDING) 235#if CONFIG_TUNER || defined(HAVE_RECORDING)
236 236
237#if CONFIG_TUNER && !defined(HAVE_RECORDING) 237#if CONFIG_TUNER && !defined(HAVE_RECORDING)
@@ -281,7 +281,7 @@ static int alarm_setting(void)
281} 281}
282 282
283MENUITEM_FUNCTION(alarm_wake_up_screen, 0, ID2P(LANG_ALARM_WAKEUP_SCREEN), 283MENUITEM_FUNCTION(alarm_wake_up_screen, 0, ID2P(LANG_ALARM_WAKEUP_SCREEN),
284 alarm_setting, NULL, 0, alarm_callback, Icon_Menu_setting); 284 alarm_setting, NULL, alarm_callback, Icon_Menu_setting);
285#endif /* CONFIG_TUNER || defined(HAVE_RECORDING) */ 285#endif /* CONFIG_TUNER || defined(HAVE_RECORDING) */
286#endif /* HAVE_RTC_ALARM */ 286#endif /* HAVE_RTC_ALARM */
287 287
@@ -415,7 +415,7 @@ static int language_browse(void)
415 return (int)rockbox_browse(LANG_DIR, SHOW_LNG); 415 return (int)rockbox_browse(LANG_DIR, SHOW_LNG);
416} 416}
417MENUITEM_FUNCTION(browse_langs, 0, ID2P(LANG_LANGUAGE), language_browse, 417MENUITEM_FUNCTION(browse_langs, 0, ID2P(LANG_LANGUAGE), language_browse,
418 NULL, 0, NULL, Icon_Language); 418 NULL, NULL, Icon_Language);
419 419
420MAKE_MENU(settings_menu_item, ID2P(LANG_GENERAL_SETTINGS), 0, 420MAKE_MENU(settings_menu_item, ID2P(LANG_GENERAL_SETTINGS), 0,
421 Icon_General_settings_menu, 421 Icon_General_settings_menu,
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index 47acae332f..8d110a7dd2 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -1225,10 +1225,10 @@ static int clear_preset_list(void)
1225 1225
1226MENUITEM_FUNCTION(radio_edit_preset_item, 0, 1226MENUITEM_FUNCTION(radio_edit_preset_item, 0,
1227 ID2P(LANG_FM_EDIT_PRESET), 1227 ID2P(LANG_FM_EDIT_PRESET),
1228 radio_edit_preset, NULL, 0, NULL, Icon_NOICON); 1228 radio_edit_preset, NULL, NULL, Icon_NOICON);
1229MENUITEM_FUNCTION(radio_delete_preset_item, 0, 1229MENUITEM_FUNCTION(radio_delete_preset_item, 0,
1230 ID2P(LANG_FM_DELETE_PRESET), 1230 ID2P(LANG_FM_DELETE_PRESET),
1231 radio_delete_preset, NULL, 0, NULL, Icon_NOICON); 1231 radio_delete_preset, NULL, NULL, Icon_NOICON);
1232int radio_preset_callback(int action, const struct menu_item_ex *this_item) 1232int radio_preset_callback(int action, const struct menu_item_ex *this_item)
1233{ 1233{
1234 if (action == ACTION_STD_OK) 1234 if (action == ACTION_STD_OK)
@@ -1348,7 +1348,7 @@ static int toggle_radio_mode(void)
1348 return 0; 1348 return 0;
1349} 1349}
1350MENUITEM_FUNCTION_DYNTEXT(radio_mode_item, 0, 1350MENUITEM_FUNCTION_DYNTEXT(radio_mode_item, 0,
1351 toggle_radio_mode, NULL, 0, 1351 toggle_radio_mode, NULL,
1352 get_mode_text, NULL, NULL, Icon_NOICON); 1352 get_mode_text, NULL, NULL, Icon_NOICON);
1353#endif 1353#endif
1354 1354
@@ -1476,30 +1476,30 @@ static int fm_recording_settings(void)
1476 1476
1477#ifdef FM_RECORDING_SCREEN 1477#ifdef FM_RECORDING_SCREEN
1478MENUITEM_FUNCTION(recscreen_item, 0, ID2P(LANG_RECORDING_MENU), 1478MENUITEM_FUNCTION(recscreen_item, 0, ID2P(LANG_RECORDING_MENU),
1479 fm_recording_screen, NULL, 0, NULL, Icon_NOICON); 1479 fm_recording_screen, NULL, NULL, Icon_NOICON);
1480#endif 1480#endif
1481#ifdef FM_RECORDING_SETTINGS 1481#ifdef FM_RECORDING_SETTINGS
1482MENUITEM_FUNCTION(recsettings_item, 0, ID2P(LANG_RECORDING_SETTINGS), 1482MENUITEM_FUNCTION(recsettings_item, 0, ID2P(LANG_RECORDING_SETTINGS),
1483 fm_recording_settings, NULL, 0, NULL, Icon_NOICON); 1483 fm_recording_settings, NULL, NULL, Icon_NOICON);
1484#endif 1484#endif
1485#ifndef FM_PRESET 1485#ifndef FM_PRESET
1486MENUITEM_FUNCTION(radio_presets_item, 0, ID2P(LANG_FM_BUTTONBAR_PRESETS), 1486MENUITEM_FUNCTION(radio_presets_item, 0, ID2P(LANG_FM_BUTTONBAR_PRESETS),
1487 handle_radio_presets, NULL, 0, NULL, Icon_NOICON); 1487 handle_radio_presets, NULL, NULL, Icon_NOICON);
1488#endif 1488#endif
1489#ifndef FM_PRESET_ADD 1489#ifndef FM_PRESET_ADD
1490MENUITEM_FUNCTION(radio_addpreset_item, 0, ID2P(LANG_FM_ADD_PRESET), 1490MENUITEM_FUNCTION(radio_addpreset_item, 0, ID2P(LANG_FM_ADD_PRESET),
1491 radio_add_preset, NULL, 0, NULL, Icon_NOICON); 1491 radio_add_preset, NULL, NULL, Icon_NOICON);
1492#endif 1492#endif
1493 1493
1494 1494
1495MENUITEM_FUNCTION(presetload_item, 0, ID2P(LANG_FM_PRESET_LOAD), 1495MENUITEM_FUNCTION(presetload_item, 0, ID2P(LANG_FM_PRESET_LOAD),
1496 load_preset_list, NULL, 0, NULL, Icon_NOICON); 1496 load_preset_list, NULL, NULL, Icon_NOICON);
1497MENUITEM_FUNCTION(presetsave_item, 0, ID2P(LANG_FM_PRESET_SAVE), 1497MENUITEM_FUNCTION(presetsave_item, 0, ID2P(LANG_FM_PRESET_SAVE),
1498 save_preset_list, NULL, 0, NULL, Icon_NOICON); 1498 save_preset_list, NULL, NULL, Icon_NOICON);
1499MENUITEM_FUNCTION(presetclear_item, 0, ID2P(LANG_FM_PRESET_CLEAR), 1499MENUITEM_FUNCTION(presetclear_item, 0, ID2P(LANG_FM_PRESET_CLEAR),
1500 clear_preset_list, NULL, 0, NULL, Icon_NOICON); 1500 clear_preset_list, NULL, NULL, Icon_NOICON);
1501MENUITEM_FUNCTION(scan_presets_item, 0, ID2P(LANG_FM_SCAN_PRESETS), 1501MENUITEM_FUNCTION(scan_presets_item, 0, ID2P(LANG_FM_SCAN_PRESETS),
1502 scan_presets, NULL, 0, NULL, Icon_NOICON); 1502 scan_presets, NULL, NULL, Icon_NOICON);
1503 1503
1504MAKE_MENU(radio_menu_items, ID2P(LANG_FM_MENU), NULL, 1504MAKE_MENU(radio_menu_items, ID2P(LANG_FM_MENU), NULL,
1505 Icon_Radio_screen, 1505 Icon_Radio_screen,