diff options
Diffstat (limited to 'apps/sound_menu.c')
-rw-r--r-- | apps/sound_menu.c | 72 |
1 files changed, 6 insertions, 66 deletions
diff --git a/apps/sound_menu.c b/apps/sound_menu.c index 21b98ab7ef..183c3439a3 100644 --- a/apps/sound_menu.c +++ b/apps/sound_menu.c | |||
@@ -19,92 +19,32 @@ | |||
19 | #include "config.h" | 19 | #include "config.h" |
20 | #include <stdio.h> | 20 | #include <stdio.h> |
21 | #include <stdbool.h> | 21 | #include <stdbool.h> |
22 | #include "lcd.h" | ||
23 | #include "menu.h" | 22 | #include "menu.h" |
24 | #include "sound_menu.h" | ||
25 | #include "mpeg.h" | 23 | #include "mpeg.h" |
26 | #include "button.h" | ||
27 | #include "kernel.h" | ||
28 | #include "sprintf.h" | ||
29 | #include "settings.h" | 24 | #include "settings.h" |
30 | 25 | ||
31 | typedef void (*settingfunc)(int); | ||
32 | enum { Volume, Bass, Treble, numsettings }; | ||
33 | |||
34 | static const char* names[] = { "Volume", "Bass", "Treble" }; | ||
35 | static settingfunc funcs[] = { mpeg_volume, mpeg_bass, mpeg_treble }; | ||
36 | |||
37 | static void soundsetting(int setting, int *value) | ||
38 | { | ||
39 | char buf[32]; | ||
40 | bool done = false; | ||
41 | |||
42 | lcd_clear_display(); | ||
43 | snprintf(buf,sizeof buf,"[%s]",names[setting]); | ||
44 | lcd_puts(0,0,buf); | ||
45 | |||
46 | while ( !done ) { | ||
47 | snprintf(buf,sizeof buf,"%d %% ", *value); | ||
48 | lcd_puts(0,1,buf); | ||
49 | lcd_update(); | ||
50 | |||
51 | switch ( button_get(true) ) { | ||
52 | #ifdef HAVE_RECORDER_KEYPAD | ||
53 | case BUTTON_UP: | ||
54 | #else | ||
55 | case BUTTON_RIGHT: | ||
56 | #endif | ||
57 | *value += 2; | ||
58 | if ( *value >= 100 ) | ||
59 | *value = 100; | ||
60 | (funcs[setting])(*value); | ||
61 | break; | ||
62 | |||
63 | #ifdef HAVE_RECORDER_KEYPAD | ||
64 | case BUTTON_DOWN: | ||
65 | #else | ||
66 | case BUTTON_LEFT: | ||
67 | #endif | ||
68 | *value -= 2; | ||
69 | if ( *value <= 0 ) | ||
70 | *value = 0; | ||
71 | (funcs[setting])(*value); | ||
72 | break; | ||
73 | |||
74 | #ifdef HAVE_RECORDER_KEYPAD | ||
75 | case BUTTON_LEFT: | ||
76 | #else | ||
77 | case BUTTON_STOP: | ||
78 | case BUTTON_MENU: | ||
79 | #endif | ||
80 | done = true; | ||
81 | break; | ||
82 | } | ||
83 | } | ||
84 | } | ||
85 | |||
86 | static void volume(void) | 26 | static void volume(void) |
87 | { | 27 | { |
88 | soundsetting(Volume, &global_settings.volume); | 28 | set_int("Volume","%", &global_settings.volume, mpeg_volume, 2, 0, 100); |
89 | } | 29 | } |
90 | 30 | ||
91 | static void bass(void) | 31 | static void bass(void) |
92 | { | 32 | { |
93 | soundsetting(Bass, &global_settings.bass); | 33 | set_int("Bass","%", &global_settings.bass, mpeg_bass, 2, 0, 100); |
94 | }; | 34 | }; |
95 | 35 | ||
96 | static void treble(void) | 36 | static void treble(void) |
97 | { | 37 | { |
98 | soundsetting(Treble, &global_settings.treble); | 38 | set_int("Treble","%", &global_settings.treble, mpeg_treble, 2, 0, 100); |
99 | } | 39 | } |
100 | 40 | ||
101 | void sound_menu(void) | 41 | void sound_menu(void) |
102 | { | 42 | { |
103 | int m; | 43 | int m; |
104 | struct menu_items items[] = { | 44 | struct menu_items items[] = { |
105 | { Volume, "Volume", volume }, | 45 | { "Volume", volume }, |
106 | { Bass, "Bass", bass }, | 46 | { "Bass", bass }, |
107 | { Treble, "Treble", treble } | 47 | { "Treble", treble } |
108 | }; | 48 | }; |
109 | 49 | ||
110 | m=menu_init( items, sizeof items / sizeof(struct menu_items) ); | 50 | m=menu_init( items, sizeof items / sizeof(struct menu_items) ); |