diff options
Diffstat (limited to 'apps/sound_menu.c')
-rw-r--r-- | apps/sound_menu.c | 62 |
1 files changed, 47 insertions, 15 deletions
diff --git a/apps/sound_menu.c b/apps/sound_menu.c index 1b44859a2b..606fc8f3f5 100644 --- a/apps/sound_menu.c +++ b/apps/sound_menu.c | |||
@@ -19,12 +19,16 @@ | |||
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 "kernel.h" | ||
22 | #include "lcd.h" | 23 | #include "lcd.h" |
23 | #include "menu.h" | 24 | #include "menu.h" |
24 | #include "button.h" | 25 | #include "button.h" |
25 | #include "mpeg.h" | 26 | #include "mpeg.h" |
26 | #include "settings.h" | 27 | #include "settings.h" |
27 | #include "status.h" | 28 | #include "status.h" |
29 | #ifdef HAVE_LCD_BITMAP | ||
30 | #include "icons.h" | ||
31 | #endif | ||
28 | 32 | ||
29 | static char *fmt[] = | 33 | static char *fmt[] = |
30 | { | 34 | { |
@@ -38,6 +42,7 @@ void set_sound(char* string, | |||
38 | int setting) | 42 | int setting) |
39 | { | 43 | { |
40 | bool done = false; | 44 | bool done = false; |
45 | bool changed = false; | ||
41 | int min, max; | 46 | int min, max; |
42 | int val; | 47 | int val; |
43 | int numdec; | 48 | int numdec; |
@@ -51,26 +56,35 @@ void set_sound(char* string, | |||
51 | min = mpeg_sound_min(setting); | 56 | min = mpeg_sound_min(setting); |
52 | max = mpeg_sound_max(setting); | 57 | max = mpeg_sound_max(setting); |
53 | 58 | ||
59 | #ifdef HAVE_LCD_BITMAP | ||
60 | if(global_settings.statusbar) | ||
61 | lcd_setmargins(0, STATUSBAR_HEIGHT); | ||
62 | else | ||
63 | lcd_setmargins(0, 0); | ||
64 | #endif | ||
54 | lcd_clear_display(); | 65 | lcd_clear_display(); |
55 | lcd_puts_scroll(0,0,string); | 66 | lcd_puts_scroll(0,0,string); |
56 | 67 | ||
57 | while (!done) { | 68 | while (!done) { |
58 | val = mpeg_val2phys(setting, *variable); | 69 | if (changed) { |
59 | if(numdec) | 70 | val = mpeg_val2phys(setting, *variable); |
60 | { | 71 | if(numdec) |
61 | integer = val / (10 * numdec); | 72 | { |
62 | dec = val % (10 * numdec); | 73 | integer = val / (10 * numdec); |
63 | snprintf(str,sizeof str, fmt[numdec], integer, dec, unit); | 74 | dec = val % (10 * numdec); |
64 | } | 75 | snprintf(str,sizeof str, fmt[numdec], integer, dec, unit); |
65 | else | 76 | } |
66 | { | 77 | else |
67 | snprintf(str,sizeof str,"%d %s ", val, unit); | 78 | { |
79 | snprintf(str,sizeof str,"%d %s ", val, unit); | ||
80 | } | ||
68 | } | 81 | } |
69 | lcd_puts(0,1,str); | 82 | lcd_puts(0,1,str); |
70 | lcd_update(); | ||
71 | status_draw(); | 83 | status_draw(); |
84 | lcd_update(); | ||
72 | 85 | ||
73 | switch( button_get(true) ) { | 86 | changed = false; |
87 | switch( button_get_w_tmo(HZ/2) ) { | ||
74 | #ifdef HAVE_RECORDER_KEYPAD | 88 | #ifdef HAVE_RECORDER_KEYPAD |
75 | case BUTTON_UP: | 89 | case BUTTON_UP: |
76 | case BUTTON_UP | BUTTON_REPEAT: | 90 | case BUTTON_UP | BUTTON_REPEAT: |
@@ -81,6 +95,7 @@ void set_sound(char* string, | |||
81 | (*variable)++; | 95 | (*variable)++; |
82 | if(*variable > max ) | 96 | if(*variable > max ) |
83 | *variable = max; | 97 | *variable = max; |
98 | changed = true; | ||
84 | break; | 99 | break; |
85 | 100 | ||
86 | #ifdef HAVE_RECORDER_KEYPAD | 101 | #ifdef HAVE_RECORDER_KEYPAD |
@@ -93,6 +108,7 @@ void set_sound(char* string, | |||
93 | (*variable)--; | 108 | (*variable)--; |
94 | if(*variable < min ) | 109 | if(*variable < min ) |
95 | *variable = min; | 110 | *variable = min; |
111 | changed = true; | ||
96 | break; | 112 | break; |
97 | 113 | ||
98 | #ifdef HAVE_RECORDER_KEYPAD | 114 | #ifdef HAVE_RECORDER_KEYPAD |
@@ -103,12 +119,28 @@ void set_sound(char* string, | |||
103 | #endif | 119 | #endif |
104 | done = true; | 120 | done = true; |
105 | break; | 121 | break; |
122 | #ifdef HAVE_RECORDER_KEYPAD | ||
123 | case BUTTON_F3: | ||
124 | #ifdef HAVE_LCD_BITMAP | ||
125 | global_settings.statusbar = !global_settings.statusbar; | ||
126 | settings_save(); | ||
127 | if(global_settings.statusbar) | ||
128 | lcd_setmargins(0, STATUSBAR_HEIGHT); | ||
129 | else | ||
130 | lcd_setmargins(0, 0); | ||
131 | lcd_clear_display(); | ||
132 | lcd_puts_scroll(0, 0, string); | ||
133 | #endif | ||
134 | break; | ||
135 | #endif | ||
106 | } | 136 | } |
107 | mpeg_sound_set(setting, *variable); | 137 | if (changed) { |
138 | mpeg_sound_set(setting, *variable); | ||
108 | #ifdef HAVE_MAS3507D | 139 | #ifdef HAVE_MAS3507D |
109 | if(setting == SOUND_BALANCE) | 140 | if(setting == SOUND_BALANCE) |
110 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); | 141 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); |
111 | #endif | 142 | #endif |
143 | } | ||
112 | } | 144 | } |
113 | lcd_stop_scroll(); | 145 | lcd_stop_scroll(); |
114 | } | 146 | } |