From 9c16e12390fa78fe7acd1ebbb2454f31221cce8a Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Fri, 14 Feb 2003 14:14:55 +0000 Subject: Expanded .cfg loader to include most settings. Based on Christian Determann's patch. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3260 a1c6a512-1295-4272-9138-f99709370657 --- apps/lang/english.lang | 10 +++ apps/settings.c | 174 +++++++++++++++++++++++++++++++++++++++++++++++++ apps/settings.h | 4 +- apps/tree.c | 32 +++++---- 4 files changed, 205 insertions(+), 15 deletions(-) (limited to 'apps') diff --git a/apps/lang/english.lang b/apps/lang/english.lang index f272bea888..4539e21aca 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -1381,3 +1381,13 @@ id: LANG_CPU_SLEEP desc: in system_settings_menu() eng: "Power Saving" new: + +id: LANG_SETTINGS_LOADED1 +desc: Feedback shown when a .cfg file is loaded +eng: "Settings" +new: + +id: LANG_SETTINGS_LOADED2 +desc: Feedback shown when a .cfg file is loaded +eng: "loaded" +new: diff --git a/apps/settings.c b/apps/settings.c index c7ab9e411c..946286dc75 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -519,6 +519,8 @@ void settings_apply(void) cpu_sleep(global_settings.cpu_sleep); } +static void set_cfg_bool(bool* variable, char* value); + /* * load settings from disk or RTC RAM */ @@ -527,6 +529,8 @@ void settings_load(void) DEBUGF( "reload_all_settings()\n" ); + // set_cfg_bool(&global_settings.playlist_shuffle, "off"); + /* populate settings with default values */ settings_reset(); @@ -776,6 +780,39 @@ static void set_sound(char* value, int type, int* setting) #endif } +static void set_cfg_bool(bool* variable, char* value) +{ + /* look for the 'n' in 'on' */ + if ((value[1] & 0xdf) == 'N') + *variable = true; + else + *variable = false; +} + +static void set_cfg_int(int* variable, char* value, int min, int max ) +{ + *variable = atoi(value); + + if (*variable < min) + *variable = min; + else + if (*variable > max) + *variable = max; +} + +static void set_cfg_option(int* variable, char* value, + char* options[], int numoptions ) +{ + int i; + + for (i=0; iname); wps_load(buf,true); storefile(file->name, global_settings.wps_file, MAX_FILENAME); @@ -1123,22 +1121,34 @@ bool dirbrowse(char *root) break; case TREE_ATTR_CFG: - snprintf(buf, sizeof buf, "%s/%s", - currdir, file->name); - settings_load_config(buf); + if (!settings_load_config(buf)) + break; + lcd_clear_display(); + lcd_puts(0,0,str(LANG_SETTINGS_LOADED1)); + lcd_puts(0,1,str(LANG_SETTINGS_LOADED2)); +#ifdef HAVE_LCD_BITMAP + lcd_update(); + + /* maybe we have a new font */ + lcd_getstringsize("A", &fw, &fh); + tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; + /* make sure cursor is on screen */ + while ( dircursor > tree_max_on_screen ) + { + dircursor--; + dirstart++; + } +#endif + sleep(HZ/2); restore = true; break; case TREE_ATTR_TXT: - snprintf(buf, sizeof buf, "%s/%s", - currdir, file->name); viewer_run(buf); restore = true; break; case TREE_ATTR_LNG: - snprintf(buf, sizeof buf, "%s/%s", - currdir, file->name); if(!lang_load(buf)) { storefile(file->name, global_settings.lang_file, @@ -1166,8 +1176,6 @@ bool dirbrowse(char *root) #ifdef HAVE_LCD_BITMAP case TREE_ATTR_FONT: - snprintf(buf, sizeof buf, "%s/%s", - currdir, file->name); font_load(buf); storefile(file->name, global_settings.font_file, MAX_FILENAME); @@ -1186,8 +1194,6 @@ bool dirbrowse(char *root) #ifndef SIMULATOR /* firmware file */ case TREE_ATTR_MOD: - snprintf(buf, sizeof buf, "%s/%s", - currdir, file->name); rolo_load(buf); break; #endif -- cgit v1.2.3