summaryrefslogtreecommitdiff
path: root/apps/settings.c
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-06-27 01:08:11 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-06-27 01:08:11 +0000
commit60b356ea25dca1b103eec7a59ace90a710db31fe (patch)
tree042bf8e9e7ee698287fa36f85855c9db861d3e49 /apps/settings.c
parentb45491df8fd4093eb79235cffb2f68c2e2228bfd (diff)
downloadrockbox-60b356ea25dca1b103eec7a59ace90a710db31fe.zip
rockbox-60b356ea25dca1b103eec7a59ace90a710db31fe.tar.gz
rockbox-60b356ea25dca1b103eec7a59ace90a710db31fe.tar.bz2
rockbox-60b356ea25dca1b103eec7a59ace90a710db31fe.tar.xz
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.c129
1 files changed, 129 insertions, 0 deletions
diff --git a/apps/settings.c b/apps/settings.c
index f6566f4..61aaf40 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -23,6 +23,8 @@
#include "disk.h"
#include "panic.h"
#include "debug.h"
+#include "button.h"
+#include "lcd.h"
struct user_settings global_settings;
@@ -101,3 +103,130 @@ void display_current_settings( struct user_settings *settings )
settings = settings;
#endif
}
+
+void set_bool(char* string, bool* variable )
+{
+ bool done = false;
+
+ lcd_clear_display();
+ lcd_puts_scroll(0,0,string);
+
+ while ( !done ) {
+ lcd_puts(0, 1, *variable ? "on " : "off");
+ lcd_update();
+
+ switch ( button_get(true) ) {
+#ifdef HAVE_RECORDER_KEYPAD
+ case BUTTON_LEFT:
+#else
+ case BUTTON_STOP:
+ case BUTTON_MENU:
+#endif
+ done = true;
+ break;
+
+ default:
+ *variable = !*variable;
+ break;
+ }
+ }
+ lcd_stop_scroll();
+}
+
+void set_int(char* string,
+ char* unit,
+ int* variable,
+ void (*function)(int),
+ int step,
+ int min,
+ int max )
+{
+ bool done = false;
+
+ lcd_clear_display();
+ lcd_puts_scroll(0,0,string);
+
+ while (!done) {
+ char str[32];
+ snprintf(str,sizeof str,"%d %s ", *variable, unit);
+ lcd_puts(0,1,str);
+ lcd_update();
+
+ switch( button_get(true) ) {
+#ifdef HAVE_RECORDER_KEYPAD
+ case BUTTON_UP:
+#else
+ case BUTTON_RIGHT:
+#endif
+ *variable += step;
+ if(*variable > max )
+ *variable = max;
+ break;
+
+#ifdef HAVE_RECORDER_KEYPAD
+ case BUTTON_DOWN:
+#else
+ case BUTTON_LEFT:
+#endif
+ *variable -= step;
+ if(*variable < min )
+ *variable = min;
+ break;
+
+#ifdef HAVE_RECORDER_KEYPAD
+ case BUTTON_LEFT:
+#else
+ case BUTTON_STOP:
+ case BUTTON_MENU:
+#endif
+ done = true;
+ break;
+ }
+ if ( function )
+ function(*variable);
+ }
+ lcd_stop_scroll();
+}
+
+void set_option(char* string, int* variable, char* options[], int numoptions )
+{
+ bool done = false;
+
+ lcd_clear_display();
+ lcd_puts_scroll(0,0,string);
+
+ while ( !done ) {
+ lcd_puts(0, 1, options[*variable]);
+ lcd_update();
+
+ switch ( button_get(true) ) {
+#ifdef HAVE_RECORDER_KEYPAD
+ case BUTTON_UP:
+#else
+ case BUTTON_RIGHT:
+#endif
+ if ( *variable < (numoptions-1) )
+ (*variable)++;
+ break;
+
+#ifdef HAVE_RECORDER_KEYPAD
+ case BUTTON_DOWN:
+#else
+ case BUTTON_LEFT:
+#endif
+ if ( *variable > 0 )
+ (*variable)--;
+ break;
+
+#ifdef HAVE_RECORDER_KEYPAD
+ case BUTTON_LEFT:
+#else
+ case BUTTON_STOP:
+ case BUTTON_MENU:
+#endif
+ done = true;
+ break;
+ }
+ }
+ lcd_stop_scroll();
+}