diff options
author | Björn Stenberg <bjorn@haxx.se> | 2002-06-27 01:08:11 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2002-06-27 01:08:11 +0000 |
commit | 60b356ea25dca1b103eec7a59ace90a710db31fe (patch) | |
tree | 042bf8e9e7ee698287fa36f85855c9db861d3e49 /apps/settings.c | |
parent | b45491df8fd4093eb79235cffb2f68c2e2228bfd (diff) | |
download | rockbox-60b356ea25dca1b103eec7a59ace90a710db31fe.tar.gz rockbox-60b356ea25dca1b103eec7a59ace90a710db31fe.zip |
Abstracted settings user interface into set_bool, set_int and set_option.
Removed the unnecessary menu entry ids.
Made playlist_shuffle and scroll_speed proper global settings.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1220 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/settings.c')
-rw-r--r-- | apps/settings.c | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/apps/settings.c b/apps/settings.c index f6566f41a1..61aaf40b66 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -23,6 +23,8 @@ | |||
23 | #include "disk.h" | 23 | #include "disk.h" |
24 | #include "panic.h" | 24 | #include "panic.h" |
25 | #include "debug.h" | 25 | #include "debug.h" |
26 | #include "button.h" | ||
27 | #include "lcd.h" | ||
26 | 28 | ||
27 | struct user_settings global_settings; | 29 | struct user_settings global_settings; |
28 | 30 | ||
@@ -101,3 +103,130 @@ void display_current_settings( struct user_settings *settings ) | |||
101 | settings = settings; | 103 | settings = settings; |
102 | #endif | 104 | #endif |
103 | } | 105 | } |
106 | |||
107 | void set_bool(char* string, bool* variable ) | ||
108 | { | ||
109 | bool done = false; | ||
110 | |||
111 | lcd_clear_display(); | ||
112 | lcd_puts_scroll(0,0,string); | ||
113 | |||
114 | while ( !done ) { | ||
115 | lcd_puts(0, 1, *variable ? "on " : "off"); | ||
116 | lcd_update(); | ||
117 | |||
118 | switch ( button_get(true) ) { | ||
119 | #ifdef HAVE_RECORDER_KEYPAD | ||
120 | case BUTTON_LEFT: | ||
121 | #else | ||
122 | case BUTTON_STOP: | ||
123 | case BUTTON_MENU: | ||
124 | #endif | ||
125 | done = true; | ||
126 | break; | ||
127 | |||
128 | default: | ||
129 | *variable = !*variable; | ||
130 | break; | ||
131 | } | ||
132 | } | ||
133 | lcd_stop_scroll(); | ||
134 | } | ||
135 | |||
136 | void set_int(char* string, | ||
137 | char* unit, | ||
138 | int* variable, | ||
139 | void (*function)(int), | ||
140 | int step, | ||
141 | int min, | ||
142 | int max ) | ||
143 | { | ||
144 | bool done = false; | ||
145 | |||
146 | lcd_clear_display(); | ||
147 | lcd_puts_scroll(0,0,string); | ||
148 | |||
149 | while (!done) { | ||
150 | char str[32]; | ||
151 | snprintf(str,sizeof str,"%d %s ", *variable, unit); | ||
152 | lcd_puts(0,1,str); | ||
153 | lcd_update(); | ||
154 | |||
155 | switch( button_get(true) ) { | ||
156 | #ifdef HAVE_RECORDER_KEYPAD | ||
157 | case BUTTON_UP: | ||
158 | #else | ||
159 | case BUTTON_RIGHT: | ||
160 | #endif | ||
161 | *variable += step; | ||
162 | if(*variable > max ) | ||
163 | *variable = max; | ||
164 | break; | ||
165 | |||
166 | #ifdef HAVE_RECORDER_KEYPAD | ||
167 | case BUTTON_DOWN: | ||
168 | #else | ||
169 | case BUTTON_LEFT: | ||
170 | #endif | ||
171 | *variable -= step; | ||
172 | if(*variable < min ) | ||
173 | *variable = min; | ||
174 | break; | ||
175 | |||
176 | #ifdef HAVE_RECORDER_KEYPAD | ||
177 | case BUTTON_LEFT: | ||
178 | #else | ||
179 | case BUTTON_STOP: | ||
180 | case BUTTON_MENU: | ||
181 | #endif | ||
182 | done = true; | ||
183 | break; | ||
184 | } | ||
185 | if ( function ) | ||
186 | function(*variable); | ||
187 | } | ||
188 | lcd_stop_scroll(); | ||
189 | } | ||
190 | |||
191 | void set_option(char* string, int* variable, char* options[], int numoptions ) | ||
192 | { | ||
193 | bool done = false; | ||
194 | |||
195 | lcd_clear_display(); | ||
196 | lcd_puts_scroll(0,0,string); | ||
197 | |||
198 | while ( !done ) { | ||
199 | lcd_puts(0, 1, options[*variable]); | ||
200 | lcd_update(); | ||
201 | |||
202 | switch ( button_get(true) ) { | ||
203 | #ifdef HAVE_RECORDER_KEYPAD | ||
204 | case BUTTON_UP: | ||
205 | #else | ||
206 | case BUTTON_RIGHT: | ||
207 | #endif | ||
208 | if ( *variable < (numoptions-1) ) | ||
209 | (*variable)++; | ||
210 | break; | ||
211 | |||
212 | #ifdef HAVE_RECORDER_KEYPAD | ||
213 | case BUTTON_DOWN: | ||
214 | #else | ||
215 | case BUTTON_LEFT: | ||
216 | #endif | ||
217 | if ( *variable > 0 ) | ||
218 | (*variable)--; | ||
219 | break; | ||
220 | |||
221 | #ifdef HAVE_RECORDER_KEYPAD | ||
222 | case BUTTON_LEFT: | ||
223 | #else | ||
224 | case BUTTON_STOP: | ||
225 | case BUTTON_MENU: | ||
226 | #endif | ||
227 | done = true; | ||
228 | break; | ||
229 | } | ||
230 | } | ||
231 | lcd_stop_scroll(); | ||
232 | } | ||