summaryrefslogtreecommitdiff
path: root/apps/settings_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/settings_menu.c')
-rw-r--r--apps/settings_menu.c171
1 files changed, 171 insertions, 0 deletions
diff --git a/apps/settings_menu.c b/apps/settings_menu.c
new file mode 100644
index 0000000000..35c25117e7
--- /dev/null
+++ b/apps/settings_menu.c
@@ -0,0 +1,171 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2002 Robert Hak
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20#include "config.h"
21
22#include <stdio.h>
23#include <stdbool.h>
24#include "lcd.h"
25#include "menu.h"
26#include "mpeg.h"
27#include "button.h"
28#include "kernel.h"
29#include "sprintf.h"
30
31#include "settings.h"
32#include "settings_menu.h"
33#include "backlight.h"
34#include "playlist.h" /* for playlist_shuffle */
35
36enum { Shuffle, Backlight, Scroll, numsettings };
37
38static void shuffle(void)
39{
40 bool done = false;
41
42 lcd_clear_display();
43 lcd_puts(0,0,"[Shuffle]");
44
45 while ( !done ) {
46 lcd_puts(0, 1, playlist_shuffle ? "on " : "off");
47 lcd_update();
48
49 switch ( button_get(true) ) {
50#ifdef HAVE_RECORDER_KEYPAD
51 case BUTTON_LEFT:
52#else
53 case BUTTON_STOP:
54#endif
55 done = true;
56 break;
57
58 default:
59 playlist_shuffle = !playlist_shuffle;
60 break;
61 }
62 }
63}
64
65static void backlight_timer(void)
66{
67 bool done = false;
68 int timer = global_settings.backlight;
69 char str[16];
70
71 lcd_clear_display();
72 lcd_puts_scroll(0,0,"Backlight");
73
74 while (!done) {
75 snprintf(str,sizeof str,"Timeout: %d s ", timer);
76 lcd_puts(0,1,str);
77 lcd_update();
78 switch( button_get(true) ) {
79#ifdef HAVE_RECORDER_KEYPAD
80 case BUTTON_UP:
81#else
82 case BUTTON_RIGHT:
83#endif
84 timer++;
85 if(timer > 60)
86 timer = 60;
87 break;
88
89#ifdef HAVE_RECORDER_KEYPAD
90 case BUTTON_DOWN:
91#else
92 case BUTTON_LEFT:
93#endif
94 timer--;
95 if ( timer < 0 )
96 timer = 0;
97 break;
98
99#ifdef HAVE_RECORDER_KEYPAD
100 case BUTTON_LEFT:
101#else
102 case BUTTON_STOP:
103 case BUTTON_MENU:
104#endif
105 done = true;
106 global_settings.backlight = timer;
107 backlight_on();
108 break;
109 }
110 }
111}
112
113static void scroll_speed(void)
114{
115 bool done=false;
116 int speed=10;
117 char str[16];
118
119 lcd_clear_display();
120 lcd_puts_scroll(0,0,"Scroll speed indicator");
121
122 while (!done) {
123 snprintf(str,sizeof str,"Speed: %d ",speed);
124 lcd_puts(0,1,str);
125 lcd_update();
126 lcd_scroll_speed(speed);
127 switch( button_get(true) ) {
128#ifdef HAVE_RECORDER_KEYPAD
129 case BUTTON_UP:
130#else
131 case BUTTON_RIGHT:
132#endif
133 speed++;
134 break;
135
136#ifdef HAVE_RECORDER_KEYPAD
137 case BUTTON_DOWN:
138#else
139 case BUTTON_LEFT:
140#endif
141 speed--;
142 if ( speed < 1 )
143 speed = 1;
144 break;
145
146#ifdef HAVE_RECORDER_KEYPAD
147 case BUTTON_LEFT:
148#else
149 case BUTTON_STOP:
150 case BUTTON_MENU:
151#endif
152 done = true;
153 lcd_stop_scroll();
154 break;
155 }
156 }
157}
158
159void settings_menu(void)
160{
161 int m;
162 struct menu_items items[] = {
163 { Shuffle, "Shuffle", shuffle },
164 { Backlight, "Backlight Timer", backlight_timer },
165 { Scroll, "Scroll speed", scroll_speed },
166 };
167
168 m=menu_init( items, sizeof items / sizeof(struct menu_items) );
169 menu_run(m);
170 menu_exit(m);
171}