summaryrefslogtreecommitdiff
path: root/apps/settings.c
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2003-02-14 14:14:55 +0000
committerBjörn Stenberg <bjorn@haxx.se>2003-02-14 14:14:55 +0000
commit9c16e12390fa78fe7acd1ebbb2454f31221cce8a (patch)
tree5316bae501231d517ad96fe23d1f2a14abb89707 /apps/settings.c
parentc4d8d970f6602c80d7362a41da8851dbbf59ae1b (diff)
downloadrockbox-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/settings.c')
-rw-r--r--apps/settings.c174
1 files changed, 174 insertions, 0 deletions
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
522static 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
783static 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
792static 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
803static 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
779bool settings_load_config(char* file) 816bool 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}