summaryrefslogtreecommitdiff
path: root/apps/settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/settings.c')
-rw-r--r--apps/settings.c129
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
27struct user_settings global_settings; 29struct 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
107void 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
136void 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
191void 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}