summaryrefslogtreecommitdiff
path: root/apps/settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/settings.c')
-rw-r--r--apps/settings.c101
1 files changed, 72 insertions, 29 deletions
diff --git a/apps/settings.c b/apps/settings.c
index 0a00fc71ad..40513bf4b3 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -762,6 +762,35 @@ static bool settings_parseline(char* line, char** name, char** value)
762 return true; 762 return true;
763} 763}
764 764
765void set_file(char* filename, char* setting, int maxlen)
766{
767 char* fptr = strrchr(filename,'/');
768 int len;
769 int extlen = 0;
770 char* ptr;
771
772 if (!fptr)
773 return;
774
775 *fptr = 0;
776 fptr++;
777
778 len = strlen(fptr);
779 ptr = fptr + len;
780 while (*ptr != '.') {
781 extlen++;
782 ptr--;
783 }
784
785 if (strcmp(ROCKBOX_DIR, filename) || (len-extlen > maxlen))
786 return;
787
788 strncpy(setting, fptr, len-extlen);
789 setting[len-extlen]=0;
790
791 settings_save();
792}
793
765static void set_sound(char* value, int type, int* setting) 794static void set_sound(char* value, int type, int* setting)
766{ 795{
767 int num = atoi(value); 796 int num = atoi(value);
@@ -842,12 +871,20 @@ bool settings_load_config(char* file)
842 set_sound(value, SOUND_TREBLE, &global_settings.treble); 871 set_sound(value, SOUND_TREBLE, &global_settings.treble);
843 else if (!strcasecmp(name, "balance")) 872 else if (!strcasecmp(name, "balance"))
844 set_sound(value, SOUND_BALANCE, &global_settings.balance); 873 set_sound(value, SOUND_BALANCE, &global_settings.balance);
845 else if (!strcasecmp(name, "channels")) 874 else if (!strcasecmp(name, "channels")) {
846 set_sound(value, SOUND_CHANNELS, &global_settings.channel_config); 875 static char* options[] = {
847 else if (!strcasecmp(name, "wps")) 876 "stereo","mono","mono left","mono right"};
848 strncpy(global_settings.wps_file, value, MAX_FILENAME); 877 set_cfg_option(&global_settings.channel_config, value,
849 else if (!strcasecmp(name, "lang")) 878 options, 4);
850 strncpy(global_settings.lang_file, value, MAX_FILENAME); 879 }
880 else if (!strcasecmp(name, "wps")) {
881 if (wps_load(value,true))
882 set_file(value, global_settings.wps_file, MAX_FILENAME);
883 }
884 else if (!strcasecmp(name, "lang")) {
885 if (!lang_load(value))
886 set_file(value, global_settings.lang_file, MAX_FILENAME);
887 }
851#ifdef HAVE_LCD_BITMAP 888#ifdef HAVE_LCD_BITMAP
852 else if (!strcasecmp(name, "font")) 889 else if (!strcasecmp(name, "font"))
853 strncpy(global_settings.font_file, value, MAX_FILENAME); 890 strncpy(global_settings.font_file, value, MAX_FILENAME);
@@ -884,6 +921,20 @@ bool settings_load_config(char* file)
884 set_cfg_int(&global_settings.peak_meter_max, value, 0, 100); 921 set_cfg_int(&global_settings.peak_meter_max, value, 0, 100);
885 else if (!strcasecmp(name, "peak meter busy")) 922 else if (!strcasecmp(name, "peak meter busy"))
886 set_cfg_bool(&global_settings.peak_meter_performance, value); 923 set_cfg_bool(&global_settings.peak_meter_performance, value);
924 else if (!strcasecmp(name, "volume display")) {
925 static char* options[] = {"graphic", "numeric"};
926 set_cfg_option(&global_settings.volume_type, value, options, 2);
927 }
928 else if (!strcasecmp(name, "battery display")) {
929 static char* options[] = {"graphic", "numeric"};
930 set_cfg_option(&global_settings.battery_type, value, options, 2);
931 }
932 else if (!strcasecmp(name, "time format")) {
933 static char* options[] = {"24hour", "12hour"};
934 set_cfg_option(&global_settings.timeformat, value, options, 2);
935 }
936 else if (!strcasecmp(name, "scrollbar"))
937 set_cfg_bool(&global_settings.scrollbar, value);
887#endif 938#endif
888 else if (!strcasecmp(name, "shuffle")) 939 else if (!strcasecmp(name, "shuffle"))
889 set_cfg_bool(&global_settings.playlist_shuffle, value); 940 set_cfg_bool(&global_settings.playlist_shuffle, value);
@@ -891,45 +942,34 @@ bool settings_load_config(char* file)
891 static char* options[] = {"off", "all", "one"}; 942 static char* options[] = {"off", "all", "one"};
892 set_cfg_option(&global_settings.repeat_mode, value, options, 3); 943 set_cfg_option(&global_settings.repeat_mode, value, options, 3);
893 } 944 }
894 else if (!strcasecmp(name, "resume")) 945 else if (!strcasecmp(name, "resume")) {
895 set_cfg_int(&global_settings.resume, value, 0, 3); 946 static char* options[] = {"off", "ask", "ask once", "on"};
947 set_cfg_option(&global_settings.resume, value, options, 4);
948 }
896 else if (!strcasecmp(name, "sort case")) 949 else if (!strcasecmp(name, "sort case"))
897 set_cfg_bool(&global_settings.sort_case, value); 950 set_cfg_bool(&global_settings.sort_case, value);
898 else if (!strcasecmp(name, "show files")) { 951 else if (!strcasecmp(name, "show files")) {
899 static char* options[] = {"all", "supported","music"}; 952 static char* options[] = {"all", "supported","music", "playlists"};
900 set_cfg_option(&global_settings.dirfilter, value, options, 3); 953 set_cfg_option(&global_settings.dirfilter, value, options, 4);
901 } 954 }
902 else if (!strcasecmp(name, "follow playlist")) 955 else if (!strcasecmp(name, "follow playlist"))
903 set_cfg_bool(&global_settings.browse_current, value); 956 set_cfg_bool(&global_settings.browse_current, value);
904 else if (!strcasecmp(name, "play selected")) 957 else if (!strcasecmp(name, "play selected"))
905 set_cfg_bool(&global_settings.play_selected, value); 958 set_cfg_bool(&global_settings.play_selected, value);
906 else if (!strcasecmp(name, "volume display")) {
907 static char* options[] = {"graphic", "numeric"};
908 set_cfg_option(&global_settings.volume_type, value, options, 2);
909 }
910 else if (!strcasecmp(name, "battery display")) {
911 static char* options[] = {"graphic", "numeric"};
912 set_cfg_option(&global_settings.battery_type, value, options, 2);
913 }
914 else if (!strcasecmp(name, "time format")) {
915 static char* options[] = {"24hour", "12hour"};
916 set_cfg_option(&global_settings.timeformat, value, options, 2);
917 }
918 else if (!strcasecmp(name, "contrast")) 959 else if (!strcasecmp(name, "contrast"))
919 set_cfg_int(&global_settings.contrast, value, 960 set_cfg_int(&global_settings.contrast, value,
920 0, MAX_CONTRAST_SETTING); 961 0, MAX_CONTRAST_SETTING);
921 else if (!strcasecmp(name, "scrollbar"))
922 set_cfg_bool(&global_settings.scrollbar, value);
923 else if (!strcasecmp(name, "scroll speed")) 962 else if (!strcasecmp(name, "scroll speed"))
924 set_cfg_int(&global_settings.scroll_speed, value, 1, 10); 963 set_cfg_int(&global_settings.scroll_speed, value, 1, 10);
925 else if (!strcasecmp(name, "scan min step")) { 964 else if (!strcasecmp(name, "scan min step")) {
926 static char* options[] = 965 static char* options[] =
927 {"1","2","3","4","5","6","8","10","15","20","25"}; 966 {"1","2","3","4","5","6","8","10",
967 "15","20","25","30","45","60"};
928 set_cfg_option(&global_settings.ff_rewind_min_step, value, 968 set_cfg_option(&global_settings.ff_rewind_min_step, value,
929 options, 11); 969 options, 14);
930 } 970 }
931 else if (!strcasecmp(name, "scan accel")) 971 else if (!strcasecmp(name, "scan accel"))
932 set_cfg_int(&global_settings.ff_rewind_min_step, value, 0, 15); 972 set_cfg_int(&global_settings.ff_rewind_accel, value, 0, 15);
933 else if (!strcasecmp(name, "scroll delay")) 973 else if (!strcasecmp(name, "scroll delay"))
934 set_cfg_int(&global_settings.scroll_delay, value, 0, 250); 974 set_cfg_int(&global_settings.scroll_delay, value, 0, 250);
935 else if (!strcasecmp(name, "backlight timeout")) { 975 else if (!strcasecmp(name, "backlight timeout")) {
@@ -977,8 +1017,11 @@ bool settings_load_config(char* file)
977 set_cfg_option(&global_settings.rec_channels, value, options, 2); 1017 set_cfg_option(&global_settings.rec_channels, value, options, 2);
978 } 1018 }
979#endif 1019#endif
980 else if (!strcasecmp(name, "poweroff")) 1020 else if (!strcasecmp(name, "idle poweroff")) {
981 set_cfg_int(&global_settings.poweroff, value, 0, 15); 1021 static char* options[] = {"off","1","2","3","4","5","6","7","8",
1022 "9","10","15","30","45","60"};
1023 set_cfg_option(&global_settings.poweroff, value, options, 15);
1024 }
982 else if (!strcasecmp(name, "battery capacity")) 1025 else if (!strcasecmp(name, "battery capacity"))
983 set_cfg_int(&global_settings.battery_capacity, value, 1026 set_cfg_int(&global_settings.battery_capacity, value,
984 1500, BATTERY_CAPACITY_MAX); 1027 1500, BATTERY_CAPACITY_MAX);