diff options
Diffstat (limited to 'apps/menus')
-rw-r--r-- | apps/menus/sound_menu.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/apps/menus/sound_menu.c b/apps/menus/sound_menu.c index 28cc257193..8913266a5f 100644 --- a/apps/menus/sound_menu.c +++ b/apps/menus/sound_menu.c | |||
@@ -34,10 +34,50 @@ | |||
34 | #include "menu_common.h" | 34 | #include "menu_common.h" |
35 | #include "splash.h" | 35 | #include "splash.h" |
36 | #include "kernel.h" | 36 | #include "kernel.h" |
37 | #include "talk.h" | ||
38 | #include "option_select.h" | ||
39 | #include "misc.h" | ||
40 | |||
41 | static int32_t get_dec_talkid(int value, int unit) | ||
42 | { | ||
43 | return TALK_ID_DECIMAL(value, 1, unit); | ||
44 | } | ||
45 | |||
46 | static int volume_limit_callback(int action,const struct menu_item_ex *this_item) | ||
47 | { | ||
48 | (void)this_item; | ||
49 | |||
50 | static struct int_setting volume_limit_int_setting; | ||
51 | volume_limit_int_setting.option_callback = NULL; | ||
52 | volume_limit_int_setting.unit = UNIT_DB; | ||
53 | volume_limit_int_setting.min = sound_min(SOUND_VOLUME); | ||
54 | volume_limit_int_setting.max = sound_max(SOUND_VOLUME); | ||
55 | volume_limit_int_setting.step = sound_steps(SOUND_VOLUME); | ||
56 | volume_limit_int_setting.formatter = NULL; | ||
57 | volume_limit_int_setting.get_talk_id = get_dec_talkid; | ||
58 | |||
59 | struct settings_list setting; | ||
60 | setting.flags = F_BANFROMQS|F_INT_SETTING|F_T_INT|F_NO_WRAP; | ||
61 | setting.lang_id = LANG_VOLUME_LIMIT; | ||
62 | setting.default_val.int_ = sound_max(SOUND_VOLUME); | ||
63 | setting.int_setting = &volume_limit_int_setting; | ||
64 | |||
65 | switch (action) | ||
66 | { | ||
67 | case ACTION_ENTER_MENUITEM: | ||
68 | setting.setting = &global_settings.volume_limit; | ||
69 | option_screen(&setting, NULL, false, ID2P(LANG_VOLUME_LIMIT)); | ||
70 | case ACTION_EXIT_MENUITEM: /* on exit */ | ||
71 | setvol(); | ||
72 | break; | ||
73 | } | ||
74 | return action; | ||
75 | } | ||
37 | 76 | ||
38 | /***********************************/ | 77 | /***********************************/ |
39 | /* SOUND MENU */ | 78 | /* SOUND MENU */ |
40 | MENUITEM_SETTING(volume, &global_settings.volume, NULL); | 79 | MENUITEM_SETTING(volume, &global_settings.volume, NULL); |
80 | MENUITEM_SETTING(volume_limit, &global_settings.volume_limit, volume_limit_callback); | ||
41 | #ifdef AUDIOHW_HAVE_BASS | 81 | #ifdef AUDIOHW_HAVE_BASS |
42 | MENUITEM_SETTING(bass, &global_settings.bass, | 82 | MENUITEM_SETTING(bass, &global_settings.bass, |
43 | #ifdef HAVE_SW_TONE_CONTROLS | 83 | #ifdef HAVE_SW_TONE_CONTROLS |
@@ -171,6 +211,7 @@ static int timestretch_callback(int action,const struct menu_item_ex *this_item) | |||
171 | 211 | ||
172 | MAKE_MENU(sound_settings, ID2P(LANG_SOUND_SETTINGS), NULL, Icon_Audio, | 212 | MAKE_MENU(sound_settings, ID2P(LANG_SOUND_SETTINGS), NULL, Icon_Audio, |
173 | &volume | 213 | &volume |
214 | ,&volume_limit | ||
174 | #ifdef AUDIOHW_HAVE_BASS | 215 | #ifdef AUDIOHW_HAVE_BASS |
175 | ,&bass | 216 | ,&bass |
176 | #endif | 217 | #endif |