forked from len0rd/rockbox
Fixed a number of .cfg loader bugs
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3280 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
5eb6384878
commit
bda4ec10fc
4 changed files with 95 additions and 65 deletions
107
apps/settings.c
107
apps/settings.c
|
|
@ -762,6 +762,35 @@ static bool settings_parseline(char* line, char** name, char** value)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void set_file(char* filename, char* setting, int maxlen)
|
||||||
|
{
|
||||||
|
char* fptr = strrchr(filename,'/');
|
||||||
|
int len;
|
||||||
|
int extlen = 0;
|
||||||
|
char* ptr;
|
||||||
|
|
||||||
|
if (!fptr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
*fptr = 0;
|
||||||
|
fptr++;
|
||||||
|
|
||||||
|
len = strlen(fptr);
|
||||||
|
ptr = fptr + len;
|
||||||
|
while (*ptr != '.') {
|
||||||
|
extlen++;
|
||||||
|
ptr--;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(ROCKBOX_DIR, filename) || (len-extlen > maxlen))
|
||||||
|
return;
|
||||||
|
|
||||||
|
strncpy(setting, fptr, len-extlen);
|
||||||
|
setting[len-extlen]=0;
|
||||||
|
|
||||||
|
settings_save();
|
||||||
|
}
|
||||||
|
|
||||||
static void set_sound(char* value, int type, int* setting)
|
static void set_sound(char* value, int type, int* setting)
|
||||||
{
|
{
|
||||||
int num = atoi(value);
|
int num = atoi(value);
|
||||||
|
|
@ -842,12 +871,20 @@ bool settings_load_config(char* file)
|
||||||
set_sound(value, SOUND_TREBLE, &global_settings.treble);
|
set_sound(value, SOUND_TREBLE, &global_settings.treble);
|
||||||
else if (!strcasecmp(name, "balance"))
|
else if (!strcasecmp(name, "balance"))
|
||||||
set_sound(value, SOUND_BALANCE, &global_settings.balance);
|
set_sound(value, SOUND_BALANCE, &global_settings.balance);
|
||||||
else if (!strcasecmp(name, "channels"))
|
else if (!strcasecmp(name, "channels")) {
|
||||||
set_sound(value, SOUND_CHANNELS, &global_settings.channel_config);
|
static char* options[] = {
|
||||||
else if (!strcasecmp(name, "wps"))
|
"stereo","mono","mono left","mono right"};
|
||||||
strncpy(global_settings.wps_file, value, MAX_FILENAME);
|
set_cfg_option(&global_settings.channel_config, value,
|
||||||
else if (!strcasecmp(name, "lang"))
|
options, 4);
|
||||||
strncpy(global_settings.lang_file, value, MAX_FILENAME);
|
}
|
||||||
|
else if (!strcasecmp(name, "wps")) {
|
||||||
|
if (wps_load(value,true))
|
||||||
|
set_file(value, global_settings.wps_file, MAX_FILENAME);
|
||||||
|
}
|
||||||
|
else if (!strcasecmp(name, "lang")) {
|
||||||
|
if (!lang_load(value))
|
||||||
|
set_file(value, global_settings.lang_file, MAX_FILENAME);
|
||||||
|
}
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
else if (!strcasecmp(name, "font"))
|
else if (!strcasecmp(name, "font"))
|
||||||
strncpy(global_settings.font_file, value, MAX_FILENAME);
|
strncpy(global_settings.font_file, value, MAX_FILENAME);
|
||||||
|
|
@ -884,25 +921,6 @@ bool settings_load_config(char* file)
|
||||||
set_cfg_int(&global_settings.peak_meter_max, value, 0, 100);
|
set_cfg_int(&global_settings.peak_meter_max, value, 0, 100);
|
||||||
else if (!strcasecmp(name, "peak meter busy"))
|
else if (!strcasecmp(name, "peak meter busy"))
|
||||||
set_cfg_bool(&global_settings.peak_meter_performance, value);
|
set_cfg_bool(&global_settings.peak_meter_performance, value);
|
||||||
#endif
|
|
||||||
else if (!strcasecmp(name, "shuffle"))
|
|
||||||
set_cfg_bool(&global_settings.playlist_shuffle, value);
|
|
||||||
else if (!strcasecmp(name, "repeat")) {
|
|
||||||
static char* options[] = {"off", "all", "one"};
|
|
||||||
set_cfg_option(&global_settings.repeat_mode, value, options, 3);
|
|
||||||
}
|
|
||||||
else if (!strcasecmp(name, "resume"))
|
|
||||||
set_cfg_int(&global_settings.resume, value, 0, 3);
|
|
||||||
else if (!strcasecmp(name, "sort case"))
|
|
||||||
set_cfg_bool(&global_settings.sort_case, value);
|
|
||||||
else if (!strcasecmp(name, "show files")) {
|
|
||||||
static char* options[] = {"all", "supported","music"};
|
|
||||||
set_cfg_option(&global_settings.dirfilter, value, options, 3);
|
|
||||||
}
|
|
||||||
else if (!strcasecmp(name, "follow playlist"))
|
|
||||||
set_cfg_bool(&global_settings.browse_current, value);
|
|
||||||
else if (!strcasecmp(name, "play selected"))
|
|
||||||
set_cfg_bool(&global_settings.play_selected, value);
|
|
||||||
else if (!strcasecmp(name, "volume display")) {
|
else if (!strcasecmp(name, "volume display")) {
|
||||||
static char* options[] = {"graphic", "numeric"};
|
static char* options[] = {"graphic", "numeric"};
|
||||||
set_cfg_option(&global_settings.volume_type, value, options, 2);
|
set_cfg_option(&global_settings.volume_type, value, options, 2);
|
||||||
|
|
@ -915,21 +933,43 @@ bool settings_load_config(char* file)
|
||||||
static char* options[] = {"24hour", "12hour"};
|
static char* options[] = {"24hour", "12hour"};
|
||||||
set_cfg_option(&global_settings.timeformat, value, options, 2);
|
set_cfg_option(&global_settings.timeformat, value, options, 2);
|
||||||
}
|
}
|
||||||
|
else if (!strcasecmp(name, "scrollbar"))
|
||||||
|
set_cfg_bool(&global_settings.scrollbar, value);
|
||||||
|
#endif
|
||||||
|
else if (!strcasecmp(name, "shuffle"))
|
||||||
|
set_cfg_bool(&global_settings.playlist_shuffle, value);
|
||||||
|
else if (!strcasecmp(name, "repeat")) {
|
||||||
|
static char* options[] = {"off", "all", "one"};
|
||||||
|
set_cfg_option(&global_settings.repeat_mode, value, options, 3);
|
||||||
|
}
|
||||||
|
else if (!strcasecmp(name, "resume")) {
|
||||||
|
static char* options[] = {"off", "ask", "ask once", "on"};
|
||||||
|
set_cfg_option(&global_settings.resume, value, options, 4);
|
||||||
|
}
|
||||||
|
else if (!strcasecmp(name, "sort case"))
|
||||||
|
set_cfg_bool(&global_settings.sort_case, value);
|
||||||
|
else if (!strcasecmp(name, "show files")) {
|
||||||
|
static char* options[] = {"all", "supported","music", "playlists"};
|
||||||
|
set_cfg_option(&global_settings.dirfilter, value, options, 4);
|
||||||
|
}
|
||||||
|
else if (!strcasecmp(name, "follow playlist"))
|
||||||
|
set_cfg_bool(&global_settings.browse_current, value);
|
||||||
|
else if (!strcasecmp(name, "play selected"))
|
||||||
|
set_cfg_bool(&global_settings.play_selected, value);
|
||||||
else if (!strcasecmp(name, "contrast"))
|
else if (!strcasecmp(name, "contrast"))
|
||||||
set_cfg_int(&global_settings.contrast, value,
|
set_cfg_int(&global_settings.contrast, value,
|
||||||
0, MAX_CONTRAST_SETTING);
|
0, MAX_CONTRAST_SETTING);
|
||||||
else if (!strcasecmp(name, "scrollbar"))
|
|
||||||
set_cfg_bool(&global_settings.scrollbar, value);
|
|
||||||
else if (!strcasecmp(name, "scroll speed"))
|
else if (!strcasecmp(name, "scroll speed"))
|
||||||
set_cfg_int(&global_settings.scroll_speed, value, 1, 10);
|
set_cfg_int(&global_settings.scroll_speed, value, 1, 10);
|
||||||
else if (!strcasecmp(name, "scan min step")) {
|
else if (!strcasecmp(name, "scan min step")) {
|
||||||
static char* options[] =
|
static char* options[] =
|
||||||
{"1","2","3","4","5","6","8","10","15","20","25"};
|
{"1","2","3","4","5","6","8","10",
|
||||||
|
"15","20","25","30","45","60"};
|
||||||
set_cfg_option(&global_settings.ff_rewind_min_step, value,
|
set_cfg_option(&global_settings.ff_rewind_min_step, value,
|
||||||
options, 11);
|
options, 14);
|
||||||
}
|
}
|
||||||
else if (!strcasecmp(name, "scan accel"))
|
else if (!strcasecmp(name, "scan accel"))
|
||||||
set_cfg_int(&global_settings.ff_rewind_min_step, value, 0, 15);
|
set_cfg_int(&global_settings.ff_rewind_accel, value, 0, 15);
|
||||||
else if (!strcasecmp(name, "scroll delay"))
|
else if (!strcasecmp(name, "scroll delay"))
|
||||||
set_cfg_int(&global_settings.scroll_delay, value, 0, 250);
|
set_cfg_int(&global_settings.scroll_delay, value, 0, 250);
|
||||||
else if (!strcasecmp(name, "backlight timeout")) {
|
else if (!strcasecmp(name, "backlight timeout")) {
|
||||||
|
|
@ -977,8 +1017,11 @@ bool settings_load_config(char* file)
|
||||||
set_cfg_option(&global_settings.rec_channels, value, options, 2);
|
set_cfg_option(&global_settings.rec_channels, value, options, 2);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else if (!strcasecmp(name, "poweroff"))
|
else if (!strcasecmp(name, "idle poweroff")) {
|
||||||
set_cfg_int(&global_settings.poweroff, value, 0, 15);
|
static char* options[] = {"off","1","2","3","4","5","6","7","8",
|
||||||
|
"9","10","15","30","45","60"};
|
||||||
|
set_cfg_option(&global_settings.poweroff, value, options, 15);
|
||||||
|
}
|
||||||
else if (!strcasecmp(name, "battery capacity"))
|
else if (!strcasecmp(name, "battery capacity"))
|
||||||
set_cfg_int(&global_settings.battery_capacity, value,
|
set_cfg_int(&global_settings.battery_capacity, value,
|
||||||
1500, BATTERY_CAPACITY_MAX);
|
1500, BATTERY_CAPACITY_MAX);
|
||||||
|
|
|
||||||
|
|
@ -171,6 +171,7 @@ bool set_option(char* string, int* variable, char* options[],
|
||||||
bool set_int(char* string, char* unit, int* variable,
|
bool set_int(char* string, char* unit, int* variable,
|
||||||
void (*function)(int), int step, int min, int max );
|
void (*function)(int), int step, int min, int max );
|
||||||
bool set_time(char* string, int timedate[]);
|
bool set_time(char* string, int timedate[]);
|
||||||
|
void set_file(char* filename, char* setting, int maxlen);
|
||||||
|
|
||||||
/* global settings */
|
/* global settings */
|
||||||
extern struct user_settings global_settings;
|
extern struct user_settings global_settings;
|
||||||
|
|
|
||||||
36
apps/tree.c
36
apps/tree.c
|
|
@ -947,26 +947,6 @@ static bool handle_on(int* ds, int* dc, int numentries, int tree_max_on_screen)
|
||||||
return used;
|
return used;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void storefile(char* filename, char* setting, int maxlen)
|
|
||||||
{
|
|
||||||
int len = strlen(filename);
|
|
||||||
int extlen = 0;
|
|
||||||
char* ptr = filename + len;
|
|
||||||
|
|
||||||
while (*ptr != '.') {
|
|
||||||
extlen++;
|
|
||||||
ptr--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp(ROCKBOX_DIR, currdir) || (len-extlen > maxlen))
|
|
||||||
return;
|
|
||||||
|
|
||||||
strncpy(setting, filename, len-extlen);
|
|
||||||
setting[len-extlen]=0;
|
|
||||||
|
|
||||||
settings_save();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool dirbrowse(char *root)
|
bool dirbrowse(char *root)
|
||||||
{
|
{
|
||||||
int numentries=0;
|
int numentries=0;
|
||||||
|
|
@ -1117,8 +1097,8 @@ bool dirbrowse(char *root)
|
||||||
/* wps config file */
|
/* wps config file */
|
||||||
case TREE_ATTR_WPS:
|
case TREE_ATTR_WPS:
|
||||||
wps_load(buf,true);
|
wps_load(buf,true);
|
||||||
storefile(file->name, global_settings.wps_file,
|
set_file(buf, global_settings.wps_file,
|
||||||
MAX_FILENAME);
|
MAX_FILENAME);
|
||||||
restore = true;
|
restore = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -1152,10 +1132,10 @@ bool dirbrowse(char *root)
|
||||||
|
|
||||||
case TREE_ATTR_LNG:
|
case TREE_ATTR_LNG:
|
||||||
if(!lang_load(buf)) {
|
if(!lang_load(buf)) {
|
||||||
storefile(file->name,
|
set_file(file->name,
|
||||||
global_settings.lang_file,
|
global_settings.lang_file,
|
||||||
MAX_FILENAME);
|
MAX_FILENAME);
|
||||||
|
|
||||||
lcd_clear_display();
|
lcd_clear_display();
|
||||||
#ifdef HAVE_LCD_CHARCELLS
|
#ifdef HAVE_LCD_CHARCELLS
|
||||||
lcd_puts(0, 0, str(LANG_LANGUAGE_LOADED));
|
lcd_puts(0, 0, str(LANG_LANGUAGE_LOADED));
|
||||||
|
|
@ -1179,8 +1159,8 @@ bool dirbrowse(char *root)
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
case TREE_ATTR_FONT:
|
case TREE_ATTR_FONT:
|
||||||
font_load(buf);
|
font_load(buf);
|
||||||
storefile(file->name, global_settings.font_file,
|
set_file(file->name, global_settings.font_file,
|
||||||
MAX_FILENAME);
|
MAX_FILENAME);
|
||||||
|
|
||||||
lcd_getstringsize("A", &fw, &fh);
|
lcd_getstringsize("A", &fw, &fh);
|
||||||
tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh;
|
tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh;
|
||||||
|
|
|
||||||
|
|
@ -18,23 +18,24 @@ volume (0 - 100)
|
||||||
bass (-15 - 15)
|
bass (-15 - 15)
|
||||||
treble (-15 - 15)
|
treble (-15 - 15)
|
||||||
balance (-100 - 100)
|
balance (-100 - 100)
|
||||||
|
channels (stereo, mono, mono left, mono right)
|
||||||
|
|
||||||
shuffle (on, off)
|
shuffle (on, off)
|
||||||
repeat (off, all, one)
|
repeat (off, all, one)
|
||||||
play selected (on, off)
|
play selected (on, off)
|
||||||
resume (off, ask, on)
|
resume (off, ask, ask once, on)
|
||||||
scan min step (1, 2, 3, 4, 5, 6, 8, 10, 15, 20, 25) [seconds]
|
scan min step (1, 2, 3, 4, 5, 6, 8, 10, 15, 20, 25, 30, 45, 60) [seconds]
|
||||||
scan accel (0 - 15) [double scan speed every X seconds]
|
scan accel (0 - 15) [double scan speed every X seconds]
|
||||||
antiskip (0 - 7) [seconds]
|
antiskip (0 - 7) [seconds]
|
||||||
volume fade (on, off)
|
volume fade (on, off)
|
||||||
|
|
||||||
sort case (on, off)
|
sort case (on, off)
|
||||||
show files (all, supported, music)
|
show files (all, supported, music, playlists)
|
||||||
follow playlist (on, off)
|
follow playlist (on, off)
|
||||||
|
|
||||||
scroll speed (1 - 10) [Hz]
|
scroll speed (1 - 10) [Hz]
|
||||||
start delay (0 - 250) [1/10s]
|
start delay (0 - 250) [1/10s]
|
||||||
scroll step (1 - 112) [pixel]
|
scroll step (1 - 112) [pixels]
|
||||||
bidir limit (0 - 200) [% of screen width]
|
bidir limit (0 - 200) [% of screen width]
|
||||||
contrast (0 - 63)
|
contrast (0 - 63)
|
||||||
backlight timeout (off, on, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
|
backlight timeout (off, on, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
|
||||||
|
|
@ -42,11 +43,13 @@ backlight timeout (off, on, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
|
||||||
backlight when plugged (on, off)
|
backlight when plugged (on, off)
|
||||||
|
|
||||||
disk spindown (3 - 254) [seconds]
|
disk spindown (3 - 254) [seconds]
|
||||||
disk poweroff (on, off)
|
|
||||||
battery capacity (1500 - 2400) [mAh]
|
battery capacity (1500 - 2400) [mAh]
|
||||||
idle poweroff (off, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
idle poweroff (off, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
||||||
10, 15, 30, 45, 60) [minutes]
|
10, 15, 30, 45, 60) [minutes]
|
||||||
|
|
||||||
|
lang (/path/filename.lng)
|
||||||
|
wps (/path/filename.wps)
|
||||||
|
|
||||||
Recorder-specific settings (allowed values) [unit]
|
Recorder-specific settings (allowed values) [unit]
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
loudness (0 - 17)
|
loudness (0 - 17)
|
||||||
|
|
@ -66,12 +69,15 @@ peak meter dbfs (on, off) (on = dbfs, off = linear)
|
||||||
peak meter min (0 - 89) [dB] or (0 - 100) [%]
|
peak meter min (0 - 89) [dB] or (0 - 100) [%]
|
||||||
peak meter max (0 - 89) [dB] or (0 - 100) [%]
|
peak meter max (0 - 89) [dB] or (0 - 100) [%]
|
||||||
|
|
||||||
|
statusbar (on, off)
|
||||||
|
scrollbar (on, off)
|
||||||
volume display (graphic, numeric)
|
volume display (graphic, numeric)
|
||||||
battery display (graphic, numeric)
|
battery display (graphic, numeric)
|
||||||
time format (12hour, 24hour)
|
time format (12hour, 24hour)
|
||||||
|
|
||||||
deep discharge (on, off)
|
deep discharge (on, off)
|
||||||
trickle charge (on, off)
|
trickle charge (on, off)
|
||||||
|
disk poweroff (on, off)
|
||||||
|
|
||||||
rec quality (0 - 7) (0=smallest size, 7=highest quality)
|
rec quality (0 - 7) (0=smallest size, 7=highest quality)
|
||||||
rec frequency (48, 44, 32, 24, 22, 16) [kHz]
|
rec frequency (48, 44, 32, 24, 22, 16) [kHz]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue