summaryrefslogtreecommitdiff
path: root/apps/sound_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/sound_menu.c')
-rw-r--r--apps/sound_menu.c72
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
31typedef void (*settingfunc)(int);
32enum { Volume, Bass, Treble, numsettings };
33
34static const char* names[] = { "Volume", "Bass", "Treble" };
35static settingfunc funcs[] = { mpeg_volume, mpeg_bass, mpeg_treble };
36
37static 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
86static void volume(void) 26static 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
91static void bass(void) 31static 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
96static void treble(void) 36static 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
101void sound_menu(void) 41void 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) );