summaryrefslogtreecommitdiff
path: root/apps/menus/sound_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/menus/sound_menu.c')
-rw-r--r--apps/menus/sound_menu.c41
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
41static int32_t get_dec_talkid(int value, int unit)
42{
43 return TALK_ID_DECIMAL(value, 1, unit);
44}
45
46static 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 */
40MENUITEM_SETTING(volume, &global_settings.volume, NULL); 79MENUITEM_SETTING(volume, &global_settings.volume, NULL);
80MENUITEM_SETTING(volume_limit, &global_settings.volume_limit, volume_limit_callback);
41#ifdef AUDIOHW_HAVE_BASS 81#ifdef AUDIOHW_HAVE_BASS
42MENUITEM_SETTING(bass, &global_settings.bass, 82MENUITEM_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
172MAKE_MENU(sound_settings, ID2P(LANG_SOUND_SETTINGS), NULL, Icon_Audio, 212MAKE_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