diff options
author | Björn Stenberg <bjorn@haxx.se> | 2003-02-14 14:14:55 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2003-02-14 14:14:55 +0000 |
commit | 9c16e12390fa78fe7acd1ebbb2454f31221cce8a (patch) | |
tree | 5316bae501231d517ad96fe23d1f2a14abb89707 /apps | |
parent | c4d8d970f6602c80d7362a41da8851dbbf59ae1b (diff) | |
download | rockbox-9c16e12390fa78fe7acd1ebbb2454f31221cce8a.tar.gz rockbox-9c16e12390fa78fe7acd1ebbb2454f31221cce8a.zip |
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
Diffstat (limited to 'apps')
-rw-r--r-- | apps/lang/english.lang | 10 | ||||
-rw-r--r-- | apps/settings.c | 174 | ||||
-rw-r--r-- | apps/settings.h | 4 | ||||
-rw-r--r-- | apps/tree.c | 32 |
4 files changed, 205 insertions, 15 deletions
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 | |||
1381 | desc: in system_settings_menu() | 1381 | desc: in system_settings_menu() |
1382 | eng: "Power Saving" | 1382 | eng: "Power Saving" |
1383 | new: | 1383 | new: |
1384 | |||
1385 | id: LANG_SETTINGS_LOADED1 | ||
1386 | desc: Feedback shown when a .cfg file is loaded | ||
1387 | eng: "Settings" | ||
1388 | new: | ||
1389 | |||
1390 | id: LANG_SETTINGS_LOADED2 | ||
1391 | desc: Feedback shown when a .cfg file is loaded | ||
1392 | eng: "loaded" | ||
1393 | 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) | |||
519 | cpu_sleep(global_settings.cpu_sleep); | 519 | cpu_sleep(global_settings.cpu_sleep); |
520 | } | 520 | } |
521 | 521 | ||
522 | static void set_cfg_bool(bool* variable, char* value); | ||
523 | |||
522 | /* | 524 | /* |
523 | * load settings from disk or RTC RAM | 525 | * load settings from disk or RTC RAM |
524 | */ | 526 | */ |
@@ -527,6 +529,8 @@ void settings_load(void) | |||
527 | 529 | ||
528 | DEBUGF( "reload_all_settings()\n" ); | 530 | DEBUGF( "reload_all_settings()\n" ); |
529 | 531 | ||
532 | // set_cfg_bool(&global_settings.playlist_shuffle, "off"); | ||
533 | |||
530 | /* populate settings with default values */ | 534 | /* populate settings with default values */ |
531 | settings_reset(); | 535 | settings_reset(); |
532 | 536 | ||
@@ -776,6 +780,39 @@ static void set_sound(char* value, int type, int* setting) | |||
776 | #endif | 780 | #endif |
777 | } | 781 | } |
778 | 782 | ||
783 | static void set_cfg_bool(bool* variable, char* value) | ||
784 | { | ||
785 | /* look for the 'n' in 'on' */ | ||
786 | if ((value[1] & 0xdf) == 'N') | ||
787 | *variable = true; | ||
788 | else | ||
789 | *variable = false; | ||
790 | } | ||
791 | |||
792 | static void set_cfg_int(int* variable, char* value, int min, int max ) | ||
793 | { | ||
794 | *variable = atoi(value); | ||
795 | |||
796 | if (*variable < min) | ||
797 | *variable = min; | ||
798 | else | ||
799 | if (*variable > max) | ||
800 | *variable = max; | ||
801 | } | ||
802 | |||
803 | static void set_cfg_option(int* variable, char* value, | ||
804 | char* options[], int numoptions ) | ||
805 | { | ||
806 | int i; | ||
807 | |||
808 | for (i=0; i<numoptions; i++) { | ||
809 | if (!strcasecmp(options[i], value)) { | ||
810 | *variable = i; | ||
811 | break; | ||
812 | } | ||
813 | } | ||
814 | } | ||
815 | |||
779 | bool settings_load_config(char* file) | 816 | bool settings_load_config(char* file) |
780 | { | 817 | { |
781 | int fd; | 818 | int fd; |
@@ -803,6 +840,111 @@ bool settings_load_config(char* file) | |||
803 | set_sound(value, SOUND_BALANCE, &global_settings.balance); | 840 | set_sound(value, SOUND_BALANCE, &global_settings.balance); |
804 | else if (!strcasecmp(name, "channels")) | 841 | else if (!strcasecmp(name, "channels")) |
805 | set_sound(value, SOUND_CHANNELS, &global_settings.channel_config); | 842 | set_sound(value, SOUND_CHANNELS, &global_settings.channel_config); |
843 | else if (!strcasecmp(name, "wps")) | ||
844 | strncpy(global_settings.wps_file, value, MAX_FILENAME); | ||
845 | else if (!strcasecmp(name, "lang")) | ||
846 | strncpy(global_settings.lang_file, value, MAX_FILENAME); | ||
847 | #ifdef HAVE_LCD_BITMAP | ||
848 | else if (!strcasecmp(name, "font")) | ||
849 | strncpy(global_settings.font_file, value, MAX_FILENAME); | ||
850 | else if (!strcasecmp(name, "scroll step")) | ||
851 | set_cfg_int(&global_settings.scroll_step, value, 1, LCD_WIDTH); | ||
852 | else if (!strcasecmp(name, "bidir limit")) | ||
853 | set_cfg_int(&global_settings.bidir_limit, value, 0, 200); | ||
854 | else if (!strcasecmp(name, "statusbar")) | ||
855 | set_cfg_bool(&global_settings.statusbar, value); | ||
856 | else if (!strcasecmp(name, "peak meter release")) | ||
857 | set_cfg_int(&global_settings.peak_meter_release, value, 1, 0x7e); | ||
858 | else if (!strcasecmp(name, "peak meter hold")) { | ||
859 | static char* options[] = { | ||
860 | "off","200ms","300ms","500ms", | ||
861 | "1","2","3","4","5","6","7","8","9","10", | ||
862 | "15","20","25","30","45","60","90", | ||
863 | "2min","3min","5min","10min","20min","45min","90min"}; | ||
864 | set_cfg_option(&global_settings.peak_meter_hold, value, | ||
865 | options, 28); | ||
866 | } | ||
867 | else if (!strcasecmp(name, "peak meter clip hold")) { | ||
868 | static char* options[] = { | ||
869 | "on","1","2","3","4","5","6","7","8","9","10", | ||
870 | "15","20","25","30","45","60","90", | ||
871 | "2min","3min","5min","10min","20min","45min","90min"}; | ||
872 | set_cfg_option(&global_settings.peak_meter_clip_hold, value, | ||
873 | options, 25); | ||
874 | } | ||
875 | else if (!strcasecmp(name, "peak meter dbfs")) | ||
876 | set_cfg_bool(&global_settings.peak_meter_dbfs, value); | ||
877 | else if (!strcasecmp(name, "peak meter min")) | ||
878 | set_cfg_int(&global_settings.peak_meter_min, value, 0, 100); | ||
879 | else if (!strcasecmp(name, "peak meter max")) | ||
880 | set_cfg_int(&global_settings.peak_meter_max, value, 0, 100); | ||
881 | else if (!strcasecmp(name, "peak meter busy")) | ||
882 | set_cfg_bool(&global_settings.peak_meter_performance, value); | ||
883 | #endif | ||
884 | else if (!strcasecmp(name, "shuffle")) | ||
885 | set_cfg_bool(&global_settings.playlist_shuffle, value); | ||
886 | else if (!strcasecmp(name, "repeat")) { | ||
887 | static char* options[] = {"off", "all", "one"}; | ||
888 | set_cfg_option(&global_settings.repeat_mode, value, options, 3); | ||
889 | } | ||
890 | else if (!strcasecmp(name, "resume")) | ||
891 | set_cfg_int(&global_settings.resume, value, 0, 3); | ||
892 | else if (!strcasecmp(name, "sort case")) | ||
893 | set_cfg_bool(&global_settings.sort_case, value); | ||
894 | else if (!strcasecmp(name, "show files")) { | ||
895 | static char* options[] = {"all", "supported","music"}; | ||
896 | set_cfg_option(&global_settings.dirfilter, value, options, 3); | ||
897 | } | ||
898 | else if (!strcasecmp(name, "follow playlist")) | ||
899 | set_cfg_bool(&global_settings.browse_current, value); | ||
900 | else if (!strcasecmp(name, "play selected")) | ||
901 | set_cfg_bool(&global_settings.play_selected, value); | ||
902 | else if (!strcasecmp(name, "volume display")) { | ||
903 | static char* options[] = {"numeric", "graphic"}; | ||
904 | set_cfg_option(&global_settings.volume_type, value, options, 2); | ||
905 | } | ||
906 | else if (!strcasecmp(name, "battery display")) { | ||
907 | static char* options[] = {"numeric", "graphic"}; | ||
908 | set_cfg_option(&global_settings.battery_type, value, options, 2); | ||
909 | } | ||
910 | else if (!strcasecmp(name, "time format")) { | ||
911 | static char* options[] = {"24hour", "12hour"}; | ||
912 | set_cfg_option(&global_settings.timeformat, value, options, 2); | ||
913 | } | ||
914 | else if (!strcasecmp(name, "contrast")) | ||
915 | set_cfg_int(&global_settings.contrast, value, | ||
916 | 0, MAX_CONTRAST_SETTING); | ||
917 | else if (!strcasecmp(name, "scrollbar")) | ||
918 | set_cfg_bool(&global_settings.scrollbar, value); | ||
919 | else if (!strcasecmp(name, "scroll speed")) | ||
920 | set_cfg_int(&global_settings.scroll_speed, value, 1, 10); | ||
921 | else if (!strcasecmp(name, "scan min step")) { | ||
922 | static char* options[] = | ||
923 | {"1","2","3","4","5","6","8","10","15","20","25"}; | ||
924 | set_cfg_option(&global_settings.ff_rewind_min_step, value, | ||
925 | options, 11); | ||
926 | } | ||
927 | else if (!strcasecmp(name, "scan accel")) | ||
928 | set_cfg_int(&global_settings.ff_rewind_min_step, value, 0, 15); | ||
929 | else if (!strcasecmp(name, "scroll delay")) | ||
930 | set_cfg_int(&global_settings.scroll_delay, value, 0, 250); | ||
931 | else if (!strcasecmp(name, "backlight timeout")) { | ||
932 | static char* options[] = { | ||
933 | "off","on","1","2","3","4","5","6","7","8","9", | ||
934 | "10","15","20","30","45","60","90"}; | ||
935 | set_cfg_option(&global_settings.backlight_timeout, value, | ||
936 | options, 18); | ||
937 | } | ||
938 | else if (!strcasecmp(name, "backlight when plugged")) | ||
939 | set_cfg_bool(&global_settings.backlight_on_when_charging, value); | ||
940 | else if (!strcasecmp(name, "antiskip")) | ||
941 | set_cfg_int(&global_settings.buffer_margin, value, 0, 7); | ||
942 | else if (!strcasecmp(name, "disk spindown")) | ||
943 | set_cfg_int(&global_settings.disk_spindown, value, 3, 254); | ||
944 | #ifdef HAVE_ATA_POWER_OFF | ||
945 | else if (!strcasecmp(name, "disk poweroff")) | ||
946 | set_cfg_bool(&global_settings.disk_poweroff, value); | ||
947 | #endif | ||
806 | #ifdef HAVE_MAS3587F | 948 | #ifdef HAVE_MAS3587F |
807 | else if (!strcasecmp(name, "loudness")) | 949 | else if (!strcasecmp(name, "loudness")) |
808 | set_sound(value, SOUND_LOUDNESS, &global_settings.loudness); | 950 | set_sound(value, SOUND_LOUDNESS, &global_settings.loudness); |
@@ -810,10 +952,42 @@ bool settings_load_config(char* file) | |||
810 | set_sound(value, SOUND_SUPERBASS, &global_settings.bass_boost); | 952 | set_sound(value, SOUND_SUPERBASS, &global_settings.bass_boost); |
811 | else if (!strcasecmp(name, "auto volume")) | 953 | else if (!strcasecmp(name, "auto volume")) |
812 | set_sound(value, SOUND_AVC, &global_settings.avc); | 954 | set_sound(value, SOUND_AVC, &global_settings.avc); |
955 | else if (!strcasecmp(name, "rec mic gain")) | ||
956 | set_sound(value, SOUND_MIC_GAIN, &global_settings.rec_mic_gain); | ||
957 | else if (!strcasecmp(name, "rec left gain")) | ||
958 | set_sound(value, SOUND_LEFT_GAIN, &global_settings.rec_left_gain); | ||
959 | else if (!strcasecmp(name, "rec right gain")) | ||
960 | set_sound(value, SOUND_RIGHT_GAIN, &global_settings.rec_right_gain); | ||
961 | else if (!strcasecmp(name, "rec quality")) | ||
962 | set_cfg_int(&global_settings.rec_quality, value, 0, 7); | ||
963 | else if (!strcasecmp(name, "rec source")) { | ||
964 | static char* options[] = {"mic", "line", "spdif"}; | ||
965 | set_cfg_option(&global_settings.rec_source, value, options, 3); | ||
966 | } | ||
967 | else if (!strcasecmp(name, "rec frequency")) { | ||
968 | static char* options[] = {"44", "48", "32", "22", "24", "16"}; | ||
969 | set_cfg_option(&global_settings.rec_frequency, value, options, 6); | ||
970 | } | ||
971 | else if (!strcasecmp(name, "rec channels")) { | ||
972 | static char* options[] = {"stereo", "mono"}; | ||
973 | set_cfg_option(&global_settings.rec_channels, value, options, 2); | ||
974 | } | ||
975 | #endif | ||
976 | else if (!strcasecmp(name, "poweroff")) | ||
977 | set_cfg_int(&global_settings.poweroff, value, 0, 15); | ||
978 | else if (!strcasecmp(name, "battery capacity")) | ||
979 | set_cfg_int(&global_settings.battery_capacity, value, | ||
980 | 1500, BATTERY_CAPACITY_MAX); | ||
981 | #ifdef HAVE_CHARGE_CTRL | ||
982 | else if (!strcasecmp(name, "deep discharge")) | ||
983 | set_cfg_bool(&global_settings.discharge, value); | ||
984 | else if (!strcasecmp(name, "trickle charge")) | ||
985 | set_cfg_bool(&global_settings.trickle_charge, value); | ||
813 | #endif | 986 | #endif |
814 | } | 987 | } |
815 | 988 | ||
816 | close(fd); | 989 | close(fd); |
990 | settings_apply(); | ||
817 | settings_save(); | 991 | settings_save(); |
818 | return true; | 992 | return true; |
819 | } | 993 | } |
diff --git a/apps/settings.h b/apps/settings.h index 529797ced3..d1679cee10 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -128,8 +128,8 @@ struct user_settings | |||
128 | int peak_meter_clip_hold; /* hold time for clips */ | 128 | int peak_meter_clip_hold; /* hold time for clips */ |
129 | bool peak_meter_dbfs; /* show linear or dbfs values */ | 129 | bool peak_meter_dbfs; /* show linear or dbfs values */ |
130 | bool peak_meter_performance; /* true: high performance, else save energy*/ | 130 | bool peak_meter_performance; /* true: high performance, else save energy*/ |
131 | unsigned char peak_meter_min; /* range minimum */ | 131 | int peak_meter_min; /* range minimum */ |
132 | unsigned char peak_meter_max; /* range maximum */ | 132 | int peak_meter_max; /* range maximum */ |
133 | 133 | ||
134 | /* show status bar */ | 134 | /* show status bar */ |
135 | bool statusbar; /* 0=hide, 1=show */ | 135 | bool statusbar; /* 0=hide, 1=show */ |
diff --git a/apps/tree.c b/apps/tree.c index fcab64f49d..bd2f8c2a2b 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -1114,8 +1114,6 @@ bool dirbrowse(char *root) | |||
1114 | 1114 | ||
1115 | /* wps config file */ | 1115 | /* wps config file */ |
1116 | case TREE_ATTR_WPS: | 1116 | case TREE_ATTR_WPS: |
1117 | snprintf(buf, sizeof buf, "%s/%s", | ||
1118 | currdir, file->name); | ||
1119 | wps_load(buf,true); | 1117 | wps_load(buf,true); |
1120 | storefile(file->name, global_settings.wps_file, | 1118 | storefile(file->name, global_settings.wps_file, |
1121 | MAX_FILENAME); | 1119 | MAX_FILENAME); |
@@ -1123,22 +1121,34 @@ bool dirbrowse(char *root) | |||
1123 | break; | 1121 | break; |
1124 | 1122 | ||
1125 | case TREE_ATTR_CFG: | 1123 | case TREE_ATTR_CFG: |
1126 | snprintf(buf, sizeof buf, "%s/%s", | 1124 | if (!settings_load_config(buf)) |
1127 | currdir, file->name); | 1125 | break; |
1128 | settings_load_config(buf); | 1126 | lcd_clear_display(); |
1127 | lcd_puts(0,0,str(LANG_SETTINGS_LOADED1)); | ||
1128 | lcd_puts(0,1,str(LANG_SETTINGS_LOADED2)); | ||
1129 | #ifdef HAVE_LCD_BITMAP | ||
1130 | lcd_update(); | ||
1131 | |||
1132 | /* maybe we have a new font */ | ||
1133 | lcd_getstringsize("A", &fw, &fh); | ||
1134 | tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; | ||
1135 | /* make sure cursor is on screen */ | ||
1136 | while ( dircursor > tree_max_on_screen ) | ||
1137 | { | ||
1138 | dircursor--; | ||
1139 | dirstart++; | ||
1140 | } | ||
1141 | #endif | ||
1142 | sleep(HZ/2); | ||
1129 | restore = true; | 1143 | restore = true; |
1130 | break; | 1144 | break; |
1131 | 1145 | ||
1132 | case TREE_ATTR_TXT: | 1146 | case TREE_ATTR_TXT: |
1133 | snprintf(buf, sizeof buf, "%s/%s", | ||
1134 | currdir, file->name); | ||
1135 | viewer_run(buf); | 1147 | viewer_run(buf); |
1136 | restore = true; | 1148 | restore = true; |
1137 | break; | 1149 | break; |
1138 | 1150 | ||
1139 | case TREE_ATTR_LNG: | 1151 | case TREE_ATTR_LNG: |
1140 | snprintf(buf, sizeof buf, "%s/%s", | ||
1141 | currdir, file->name); | ||
1142 | if(!lang_load(buf)) { | 1152 | if(!lang_load(buf)) { |
1143 | storefile(file->name, | 1153 | storefile(file->name, |
1144 | global_settings.lang_file, | 1154 | global_settings.lang_file, |
@@ -1166,8 +1176,6 @@ bool dirbrowse(char *root) | |||
1166 | 1176 | ||
1167 | #ifdef HAVE_LCD_BITMAP | 1177 | #ifdef HAVE_LCD_BITMAP |
1168 | case TREE_ATTR_FONT: | 1178 | case TREE_ATTR_FONT: |
1169 | snprintf(buf, sizeof buf, "%s/%s", | ||
1170 | currdir, file->name); | ||
1171 | font_load(buf); | 1179 | font_load(buf); |
1172 | storefile(file->name, global_settings.font_file, | 1180 | storefile(file->name, global_settings.font_file, |
1173 | MAX_FILENAME); | 1181 | MAX_FILENAME); |
@@ -1186,8 +1194,6 @@ bool dirbrowse(char *root) | |||
1186 | #ifndef SIMULATOR | 1194 | #ifndef SIMULATOR |
1187 | /* firmware file */ | 1195 | /* firmware file */ |
1188 | case TREE_ATTR_MOD: | 1196 | case TREE_ATTR_MOD: |
1189 | snprintf(buf, sizeof buf, "%s/%s", | ||
1190 | currdir, file->name); | ||
1191 | rolo_load(buf); | 1197 | rolo_load(buf); |
1192 | break; | 1198 | break; |
1193 | #endif | 1199 | #endif |