diff --git a/apps/settings_list.c b/apps/settings_list.c index 94210ffbca..2ef90afc94 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -64,7 +64,7 @@ /* in all the following macros the args are: - flags: bitwise | or the F_ bits in settings_list.h - var: pointer to the variable being changed (usually in global_settings) - - lang_ig: LANG_* id to display in menus and setting screens for the settings + - lang_id: LANG_* id to display in menus and setting screens for the setting - default: the default value for the variable, set if settings are reset - name: the name of the setting in config files - cfg_vals: comma seperated list of legal values in cfg files. @@ -73,18 +73,18 @@ */ /* Use for int settings which use the set_sound() function to set them */ -#define SOUND_SETTING(flags,var,lang_id,name,setting) \ +#define SOUND_SETTING(flags,var,lang_id,name,setting) \ {flags|F_T_INT|F_T_SOUND|F_SOUNDSETTING, &global_settings.var, \ - lang_id, NODEFAULT,name,NULL, \ + lang_id, NODEFAULT,name,NULL, \ {.sound_setting=(struct sound_setting[]){{setting}}} } -/* Use for bool variables which don't use LANG_SET_BOOL_YES and LANG_SET_BOOL_NO, +/* Use for bool variables which don't use LANG_SET_BOOL_YES and LANG_SET_BOOL_NO or dont save as "off" or "on" in the cfg */ #define BOOL_SETTING(flags,var,lang_id,default,name,cfgvals,yes,no,cb) \ {flags|F_BOOL_SETTING, &global_settings.var, \ lang_id, BOOL(default),name,cfgvals, \ {.bool_setting=(struct bool_setting[]){{cb,yes,no}}} } - + /* bool setting which does use LANG_YES and _NO and save as "off,on" */ #define OFFON_SETTING(flags,var,lang_id,default,name,cb) \ {flags|F_BOOL_SETTING, &global_settings.var, \ @@ -94,12 +94,12 @@ /* int variable which is NOT saved to .cfg files, (Use NVRAM() in the flags to save to the nvram (or nvram.bin file) */ -#define SYSTEM_SETTING(flags,var,default) \ +#define SYSTEM_SETTING(flags,var,default) \ {flags|F_T_INT, &global_status.var,-1, INT(default), \ NULL, NULL, UNUSED} /* setting which stores as a filename in the .cfgvals - prefix: The absolute path to not save in the variable, e.g /.rockbox/wps_file + prefix: The absolute path to not save in the variable, ex /.rockbox/wps_file suffx: The file extention (usually...) e.g .wps_file */ #define FILENAME_SETTING(flags,var,name,default,prefix,suffix,len) \ {flags|F_T_UCHARPTR, &global_settings.var,-1, \ @@ -108,32 +108,34 @@ (struct filename_setting[]){{prefix,suffix,len}}} } /* Used for settings which use the set_option() setting screen. - the ... arg is a list of pointers to strings to display in the setting screen. - These can either be literal strings, or ID2P(LANG_*) */ -#define CHOICE_SETTING(flags,var,lang_id,default,name,cfg_vals,cb,count,...) \ + The ... arg is a list of pointers to strings to display in the setting + screen. These can either be literal strings, or ID2P(LANG_*) */ +#define CHOICE_SETTING(flags,var,lang_id,default,name,cfg_vals,cb,count,...) \ {flags|F_CHOICE_SETTING|F_T_INT, &global_settings.var, lang_id, \ - INT(default), name, cfg_vals, \ - {.choice_setting = (struct choice_setting[]){ \ - {cb, count, {.desc = (const unsigned char*[]){__VA_ARGS__}}}}}} - + INT(default), name, cfg_vals, \ + {.choice_setting = (struct choice_setting[]){ \ + {cb, count, {.desc = (const unsigned char*[]) \ + {__VA_ARGS__}}}}}} + /* Similar to above, except the strings to display are taken from cfg_vals, - the ... arg is a list of ID's to talk for the strings... can use TALK_ID()'s */ -#define STRINGCHOICE_SETTING(flags,var,lang_id,default,name,cfg_vals,cb,count,...) \ - {flags|F_CHOICE_SETTING|F_T_INT|F_CHOICETALKS, \ - &global_settings.var, lang_id, \ - INT(default), name, cfg_vals, \ - {.choice_setting = (struct choice_setting[]){ \ + the ... arg is a list of ID's to talk for the strings, can use TALK_ID()'s */ +#define STRINGCHOICE_SETTING(flags,var,lang_id,default,name,cfg_vals, \ + cb,count,...) \ + {flags|F_CHOICE_SETTING|F_T_INT|F_CHOICETALKS, \ + &global_settings.var, lang_id, \ + INT(default), name, cfg_vals, \ + {.choice_setting = (struct choice_setting[]){ \ {cb, count, {.talks = (const int[]){__VA_ARGS__}}}}}} - + /* for settings which use the set_int() setting screen. unit is the UNIT_ define to display/talk. the first one saves a string to the config file, the second one saves the variable value to the config file */ #define INT_SETTING_W_CFGVALS(flags, var, lang_id, default, name, cfg_vals, \ - unit, min, max, step, formatter, get_talk_id, cb) \ - {flags|F_INT_SETTING|F_T_INT, &global_settings.var, \ - lang_id, INT(default), name, cfg_vals, \ - {.int_setting = (struct int_setting[]){ \ + unit, min, max, step, formatter, get_talk_id, cb) \ + {flags|F_INT_SETTING|F_T_INT, &global_settings.var, \ + lang_id, INT(default), name, cfg_vals, \ + {.int_setting = (struct int_setting[]){ \ {cb, unit, min, max, step, formatter, get_talk_id}}}} #define INT_SETTING(flags, var, lang_id, default, name, \ unit, min, max, step, formatter, get_talk_id, cb) \ @@ -141,8 +143,8 @@ lang_id, INT(default), name, NULL, \ {.int_setting = (struct int_setting[]){ \ {cb, unit, min, max, step, formatter, get_talk_id}}}} -#define INT_SETTING_NOWRAP(flags, var, lang_id, default, name, \ - unit, min, max, step, formatter, get_talk_id, cb) \ +#define INT_SETTING_NOWRAP(flags, var, lang_id, default, name, \ + unit, min, max, step, formatter, get_talk_id, cb) \ {flags|F_INT_SETTING|F_T_INT|F_NO_WRAP, &global_settings.var, \ lang_id, INT(default), name, NULL, \ {.int_setting = (struct int_setting[]){ \ @@ -178,7 +180,7 @@ static const char graphic_numeric[] = "graphic,numeric"; #elif LCD_HEIGHT <= 320 #define DEFAULT_FONTNAME "helvR12" #else - #define DEFAULT_FONTNAME "helvR10" + #define DEFAULT_FONTNAME "helvR10" #endif #else @@ -240,7 +242,7 @@ static const char trig_durations_conf [] = #endif /* HAVE_RECORDING */ -static void formatter_unit_0_is_off(char *buffer, size_t buffer_size, +static void formatter_unit_0_is_off(char *buffer, size_t buffer_size, int val, const char *unit) { if (val == 0) @@ -259,7 +261,7 @@ static int32_t getlang_unit_0_is_off(int value, int unit) #ifdef HAVE_BACKLIGHT static void backlight_formatter(char *buffer, size_t buffer_size, - int val, const char *unit) + int val, const char *unit) { if (val == -1) strcpy(buffer, str(LANG_OFF)); @@ -299,12 +301,12 @@ static void crossfeed_cross_set(int val) } static void db_format(char* buffer, size_t buffer_size, int value, - const char* unit) + const char* unit) { int v = abs(value); snprintf(buffer, buffer_size, "%s%d.%d %s", value < 0 ? "-" : "", - v / 10, v % 10, unit); + v / 10, v % 10, unit); } static int32_t get_dec_talkid(int value, int unit) @@ -331,7 +333,7 @@ static void set_superbass(bool value) #ifdef HAVE_LCD_CHARCELLS static void jumpscroll_format(char* buffer, size_t buffer_size, int value, - const char* unit) + const char* unit) { (void)unit; switch (value) @@ -371,62 +373,63 @@ static int32_t jumpscroll_getlang(int value, int unit) } #endif /* HAVE_LCD_CHARCELLS */ - const struct settings_list settings[] = { /* sound settings */ SOUND_SETTING(F_NO_WRAP,volume, LANG_VOLUME, "volume", SOUND_VOLUME), SOUND_SETTING(0, balance, LANG_BALANCE, "balance", SOUND_BALANCE), SOUND_SETTING(F_NO_WRAP,bass, LANG_BASS, "bass", SOUND_BASS), SOUND_SETTING(F_NO_WRAP,treble, LANG_TREBLE, "treble", SOUND_TREBLE), - + #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) SOUND_SETTING(0,loudness, LANG_LOUDNESS, "loudness", SOUND_LOUDNESS), STRINGCHOICE_SETTING(F_SOUNDSETTING,avc,LANG_AUTOVOL,0,"auto volume", - "off,20ms,2,4,8,", sound_set_avc, 5, - LANG_OFF,TALK_ID(20, UNIT_MS),TALK_ID(2, UNIT_SEC), - TALK_ID(4, UNIT_SEC),TALK_ID(8, UNIT_SEC)), - OFFON_SETTING(F_SOUNDSETTING, superbass, LANG_SUPERBASS, false, "superbass", set_superbass), + "off,20ms,2,4,8,", sound_set_avc, 5, + LANG_OFF,TALK_ID(20, UNIT_MS),TALK_ID(2, UNIT_SEC), + TALK_ID(4, UNIT_SEC),TALK_ID(8, UNIT_SEC)), + OFFON_SETTING(F_SOUNDSETTING, superbass, LANG_SUPERBASS, false, "superbass", + set_superbass), #endif - + CHOICE_SETTING(F_SOUNDSETTING, channel_config, LANG_CHANNEL_CONFIGURATION, - 0,"channels", - "stereo,mono,custom,mono left,mono right,karaoke", - sound_set_channels, - 6, ID2P(LANG_CHANNEL_STEREO), ID2P(LANG_CHANNEL_MONO), - ID2P(LANG_CHANNEL_CUSTOM), ID2P(LANG_CHANNEL_LEFT), - ID2P(LANG_CHANNEL_RIGHT), ID2P(LANG_CHANNEL_KARAOKE)), + 0,"channels", + "stereo,mono,custom,mono left,mono right,karaoke", + sound_set_channels, 6, + ID2P(LANG_CHANNEL_STEREO), ID2P(LANG_CHANNEL_MONO), + ID2P(LANG_CHANNEL_CUSTOM), ID2P(LANG_CHANNEL_LEFT), + ID2P(LANG_CHANNEL_RIGHT), ID2P(LANG_CHANNEL_KARAOKE)), SOUND_SETTING(F_SOUNDSETTING, stereo_width, LANG_STEREO_WIDTH, - "stereo_width", SOUND_STEREO_WIDTH), + "stereo_width", SOUND_STEREO_WIDTH), /* playback */ OFFON_SETTING(0, playlist_shuffle, LANG_SHUFFLE, false, "shuffle", NULL), - SYSTEM_SETTING(NVRAM(4),resume_index,-1), - SYSTEM_SETTING(NVRAM(4),resume_first_index,0), - SYSTEM_SETTING(NVRAM(4),resume_offset,-1), - SYSTEM_SETTING(NVRAM(4),resume_seed,-1), + SYSTEM_SETTING(NVRAM(4), resume_index, -1), + SYSTEM_SETTING(NVRAM(4), resume_first_index, 0), + SYSTEM_SETTING(NVRAM(4), resume_offset, -1), + SYSTEM_SETTING(NVRAM(4), resume_seed, -1), CHOICE_SETTING(0, repeat_mode, LANG_REPEAT, REPEAT_ALL, "repeat", - "off,all,one,shuffle" + "off,all,one,shuffle" #ifdef AB_REPEAT_ENABLE - ",ab" + ",ab" #endif - , NULL, + , NULL, #ifdef AB_REPEAT_ENABLE - 5, + 5, #else - 4, + 4, #endif - ID2P(LANG_OFF), ID2P(LANG_ALL), ID2P(LANG_REPEAT_ONE), ID2P(LANG_SHUFFLE) + ID2P(LANG_OFF), ID2P(LANG_ALL), ID2P(LANG_REPEAT_ONE), + ID2P(LANG_SHUFFLE) #ifdef AB_REPEAT_ENABLE - ,ID2P(LANG_REPEAT_AB) + ,ID2P(LANG_REPEAT_AB) #endif - ), /* CHOICE_SETTING( repeat_mode ) */ + ), /* CHOICE_SETTING( repeat_mode ) */ /* LCD */ #ifdef HAVE_LCD_CONTRAST /* its easier to leave this one un-macro()ed for the time being */ - {F_T_INT|F_DEF_ISFUNC|F_INT_SETTING, &global_settings.contrast, - LANG_CONTRAST, FUNCTYPE(lcd_default_contrast), - "contrast", NULL , {.int_setting = (struct int_setting[]){ - { lcd_set_contrast, UNIT_INT, MIN_CONTRAST_SETTING, - MAX_CONTRAST_SETTING, 1, NULL, NULL}}}}, + { F_T_INT|F_DEF_ISFUNC|F_INT_SETTING, &global_settings.contrast, + LANG_CONTRAST, FUNCTYPE(lcd_default_contrast), "contrast", NULL , { + .int_setting = (struct int_setting[]) { + { lcd_set_contrast, UNIT_INT, MIN_CONTRAST_SETTING, + MAX_CONTRAST_SETTING, 1, NULL, NULL }}}}, #endif #ifdef HAVE_BACKLIGHT TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, backlight_timeout, LANG_BACKLIGHT, 5, @@ -445,21 +448,25 @@ const struct settings_list settings[] = { #ifdef HAVE_LCD_BITMAP #ifdef HAVE_LCD_INVERT BOOL_SETTING(0, invert, LANG_INVERT, false ,"invert", off_on, - LANG_INVERT_LCD_INVERSE, LANG_NORMAL, lcd_set_invert_display), + LANG_INVERT_LCD_INVERSE, LANG_NORMAL, lcd_set_invert_display), #endif #ifdef HAVE_LCD_FLIP - OFFON_SETTING(0,flip_display, LANG_FLIP_DISPLAY, false,"flip display", NULL), + OFFON_SETTING(0, flip_display, LANG_FLIP_DISPLAY, false, "flip display", + NULL), #endif /* display */ CHOICE_SETTING(F_TEMPVAR|F_THEMESETTING, cursor_style, LANG_INVERT_CURSOR, #ifdef HAVE_LCD_COLOR - 3, "selector type", "pointer,bar (inverse),bar (color),bar (gradient)", - NULL, 4, - ID2P(LANG_INVERT_CURSOR_POINTER), ID2P(LANG_INVERT_CURSOR_BAR), - ID2P(LANG_INVERT_CURSOR_COLOR), ID2P(LANG_INVERT_CURSOR_GRADIENT)), + 3, "selector type", + "pointer,bar (inverse),bar (color),bar (gradient)", NULL, 4, + ID2P(LANG_INVERT_CURSOR_POINTER), + ID2P(LANG_INVERT_CURSOR_BAR), + ID2P(LANG_INVERT_CURSOR_COLOR), + ID2P(LANG_INVERT_CURSOR_GRADIENT)), #else - 1, "selector type", "pointer,bar (inverse)", NULL, 2, - ID2P(LANG_INVERT_CURSOR_POINTER), ID2P(LANG_INVERT_CURSOR_BAR)), + 1, "selector type", "pointer,bar (inverse)", NULL, 2, + ID2P(LANG_INVERT_CURSOR_POINTER), + ID2P(LANG_INVERT_CURSOR_BAR)), #endif OFFON_SETTING(F_THEMESETTING|F_TEMPVAR, statusbar, LANG_STATUS_BAR, true,"statusbar", NULL), @@ -468,11 +475,12 @@ const struct settings_list settings[] = { OFFON_SETTING(0,buttonbar, LANG_BUTTON_BAR ,true,"buttonbar", NULL), #endif CHOICE_SETTING(0, volume_type, LANG_VOLUME_DISPLAY, 0, - "volume display", graphic_numeric, NULL, 2, - ID2P(LANG_DISPLAY_GRAPHIC), ID2P(LANG_DISPLAY_NUMERIC)), + "volume display", graphic_numeric, NULL, 2, + ID2P(LANG_DISPLAY_GRAPHIC), + ID2P(LANG_DISPLAY_NUMERIC)), CHOICE_SETTING(0, battery_display, LANG_BATTERY_DISPLAY, 0, - "battery display", graphic_numeric, NULL, 2, - ID2P(LANG_DISPLAY_GRAPHIC), ID2P(LANG_DISPLAY_NUMERIC)), + "battery display", graphic_numeric, NULL, 2, + ID2P(LANG_DISPLAY_GRAPHIC), ID2P(LANG_DISPLAY_NUMERIC)), #if CONFIG_RTC CHOICE_SETTING(0, timeformat, LANG_TIMEFORMAT, 0, "time format", "24hour,12hour", NULL, 2, @@ -485,58 +493,62 @@ const struct settings_list settings[] = { "idle poweroff", "off", UNIT_MIN, formatter_unit_0_is_off, getlang_unit_0_is_off, set_poweroff_timeout, 15, 0,1,2,3,4,5,6,7,8,9,10,15,30,45,60), - SYSTEM_SETTING(NVRAM(4),runtime,0), - SYSTEM_SETTING(NVRAM(4),topruntime,0), - - INT_SETTING(0,max_files_in_playlist,LANG_MAX_FILES_IN_PLAYLIST, + SYSTEM_SETTING(NVRAM(4), runtime, 0), + SYSTEM_SETTING(NVRAM(4), topruntime, 0), + INT_SETTING(0, max_files_in_playlist, + LANG_MAX_FILES_IN_PLAYLIST, #if MEM > 1 - 10000, + 10000, #else - 400, + 400, #endif - "max files in playlist", UNIT_INT,1000,32000,1000,NULL,NULL,NULL), - INT_SETTING(0,max_files_in_dir,LANG_MAX_FILES_IN_DIR, + "max files in playlist", UNIT_INT, 1000, 32000, 1000, + NULL, NULL, NULL), + INT_SETTING(0, max_files_in_dir, LANG_MAX_FILES_IN_DIR, #if MEM > 1 - 1000, + 1000, #else - 200, + 200, #endif - "max files in dir", UNIT_INT,50,10000,50,NULL,NULL,NULL), + "max files in dir", UNIT_INT, 50, 10000, 50, + NULL, NULL, NULL), #if BATTERY_CAPACITY_INC > 0 - INT_SETTING(0, battery_capacity, LANG_BATTERY_CAPACITY, BATTERY_CAPACITY_DEFAULT, - "battery capacity", UNIT_MAH, - BATTERY_CAPACITY_MIN, BATTERY_CAPACITY_MAX, BATTERY_CAPACITY_INC, - NULL, NULL, NULL), + INT_SETTING(0, battery_capacity, LANG_BATTERY_CAPACITY, + BATTERY_CAPACITY_DEFAULT, "battery capacity", UNIT_MAH, + BATTERY_CAPACITY_MIN, BATTERY_CAPACITY_MAX, + BATTERY_CAPACITY_INC, NULL, NULL, NULL), #endif #if CONFIG_CHARGING OFFON_SETTING(NVRAM(1), car_adapter_mode, - LANG_CAR_ADAPTER_MODE, false, "car adapter mode", NULL), + LANG_CAR_ADAPTER_MODE, false, "car adapter mode", NULL), #endif #ifdef HAVE_ACCESSORY_SUPPLY - OFFON_SETTING(0, accessory_supply, LANG_ACCESSORY_SUPPLY, - true, "accessory power supply", accessory_supply_set), + OFFON_SETTING(0, accessory_supply, LANG_ACCESSORY_SUPPLY, + true, "accessory power supply", accessory_supply_set), #endif /* tuner */ #if CONFIG_TUNER OFFON_SETTING(0,fm_force_mono, LANG_FM_MONO_MODE, - false, "force fm mono", toggle_mono_mode), - SYSTEM_SETTING(NVRAM(4),last_frequency,0), + false, "force fm mono", toggle_mono_mode), + SYSTEM_SETTING(NVRAM(4),last_frequency,0), #endif #if BATTERY_TYPES_COUNT > 1 - CHOICE_SETTING(0, battery_type, LANG_BATTERY_TYPE, 0, - "battery type","alkaline,nimh", NULL, 2, - ID2P(LANG_BATTERY_TYPE_ALKALINE), ID2P(LANG_BATTERY_TYPE_NIMH)), + CHOICE_SETTING(0, battery_type, LANG_BATTERY_TYPE, 0, "battery type", + "alkaline,nimh", NULL, 2, ID2P(LANG_BATTERY_TYPE_ALKALINE), + ID2P(LANG_BATTERY_TYPE_NIMH)), #endif #ifdef HAVE_REMOTE_LCD /* remote lcd */ - INT_SETTING(0, remote_contrast, LANG_CONTRAST, DEFAULT_REMOTE_CONTRAST_SETTING, - "remote contrast", UNIT_INT, MIN_REMOTE_CONTRAST_SETTING, - MAX_REMOTE_CONTRAST_SETTING, 1, NULL, NULL, lcd_remote_set_contrast), + INT_SETTING(0, remote_contrast, LANG_CONTRAST, + DEFAULT_REMOTE_CONTRAST_SETTING, "remote contrast", UNIT_INT, + MIN_REMOTE_CONTRAST_SETTING, MAX_REMOTE_CONTRAST_SETTING, 1, + NULL, NULL, lcd_remote_set_contrast), BOOL_SETTING(0, remote_invert, LANG_INVERT, false ,"remote invert", off_on, - LANG_INVERT_LCD_INVERSE, LANG_NORMAL, lcd_remote_set_invert_display), + LANG_INVERT_LCD_INVERSE, LANG_NORMAL, + lcd_remote_set_invert_display), OFFON_SETTING(0,remote_flip_display, LANG_FLIP_DISPLAY, - false,"remote flip display", NULL), + false,"remote flip display", NULL), TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, remote_backlight_timeout, LANG_BACKLIGHT, 5, "remote backlight timeout", off_on, UNIT_SEC, backlight_formatter, backlight_getlang, @@ -551,36 +563,37 @@ const struct settings_list settings[] = { -1,0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,120), #endif #ifdef HAVE_REMOTE_LCD_TICKING - OFFON_SETTING(0,remote_reduce_ticking, LANG_REDUCE_TICKING, - false,"remote reduce ticking", NULL), + OFFON_SETTING(0, remote_reduce_ticking, LANG_REDUCE_TICKING, + false,"remote reduce ticking", NULL), #endif #endif #ifdef HAVE_BACKLIGHT - OFFON_SETTING(0,bl_filter_first_keypress, - LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS, false, - "backlight filters first keypress", NULL), + OFFON_SETTING(0, bl_filter_first_keypress, + LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS, false, + "backlight filters first keypress", NULL), #ifdef HAVE_REMOTE_LCD - OFFON_SETTING(0,remote_bl_filter_first_keypress, - LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS, false, - "backlight filters first remote keypress", NULL), + OFFON_SETTING(0, remote_bl_filter_first_keypress, + LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS, false, + "backlight filters first remote keypress", NULL), #endif #endif /* HAVE_BACKLIGHT */ /** End of old RTC config block **/ #ifdef HAVE_BACKLIGHT - OFFON_SETTING(0,caption_backlight, LANG_CAPTION_BACKLIGHT, - false,"caption backlight",NULL), + OFFON_SETTING(0, caption_backlight, LANG_CAPTION_BACKLIGHT, + false, "caption backlight", NULL), #ifdef HAVE_REMOTE_LCD - OFFON_SETTING(0,remote_caption_backlight, LANG_CAPTION_BACKLIGHT, - false,"remote caption backlight",NULL), + OFFON_SETTING(0, remote_caption_backlight, LANG_CAPTION_BACKLIGHT, + false, "remote caption backlight", NULL), #endif #endif /* HAVE_BACKLIGHT */ #ifdef HAVE_BACKLIGHT_BRIGHTNESS - INT_SETTING(F_NO_WRAP, brightness, LANG_BRIGHTNESS, DEFAULT_BRIGHTNESS_SETTING, - "brightness",UNIT_INT, MIN_BRIGHTNESS_SETTING, MAX_BRIGHTNESS_SETTING, 1, - NULL, NULL, backlight_set_brightness), + INT_SETTING(F_NO_WRAP, brightness, LANG_BRIGHTNESS, + DEFAULT_BRIGHTNESS_SETTING, "brightness",UNIT_INT, + MIN_BRIGHTNESS_SETTING, MAX_BRIGHTNESS_SETTING, 1, + NULL, NULL, backlight_set_brightness), #endif #if defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR) /* backlight fading */ @@ -594,52 +607,60 @@ const struct settings_list settings[] = { backlight_set_fade_out, 10, 0,100,200,300,500,1000,2000,3000,5000,10000), #endif - INT_SETTING(F_PADTITLE, scroll_speed, LANG_SCROLL_SPEED, 9,"scroll speed", + INT_SETTING(F_PADTITLE, scroll_speed, LANG_SCROLL_SPEED, 9,"scroll speed", UNIT_INT, 0, 15, 1, NULL, NULL, lcd_scroll_speed), - INT_SETTING(F_PADTITLE, scroll_delay, LANG_SCROLL_DELAY, 1000, "scroll delay", - UNIT_MS, 0, 2500, 100, NULL, - NULL, lcd_scroll_delay) , - INT_SETTING(0, bidir_limit, LANG_BIDIR_SCROLL, 50, "bidir limit", + INT_SETTING(F_PADTITLE, scroll_delay, LANG_SCROLL_DELAY, 1000, + "scroll delay", UNIT_MS, 0, 2500, 100, NULL, + NULL, lcd_scroll_delay), + INT_SETTING(0, bidir_limit, LANG_BIDIR_SCROLL, 50, "bidir limit", UNIT_PERCENT, 0, 200, 25, NULL, NULL, lcd_bidir_scroll), #ifdef HAVE_REMOTE_LCD - INT_SETTING(0, remote_scroll_speed, LANG_SCROLL_SPEED, 9, "remote scroll speed", - UNIT_INT, 0,15, 1, NULL, NULL, lcd_remote_scroll_speed), - INT_SETTING(0, remote_scroll_step, LANG_SCROLL_STEP, 6, "remote scroll step", - UNIT_PIXEL, 1, LCD_REMOTE_WIDTH, 1, NULL, NULL, lcd_remote_scroll_step), - INT_SETTING(0, remote_scroll_delay, LANG_SCROLL_DELAY, 1000, "remote scroll delay", - UNIT_MS, 0, 2500, 100, NULL, NULL, lcd_remote_scroll_delay), - INT_SETTING(0, remote_bidir_limit, LANG_BIDIR_SCROLL, 50, "remote bidir limit", - UNIT_PERCENT, 0, 200, 25, NULL, NULL, lcd_remote_bidir_scroll), + INT_SETTING(0, remote_scroll_speed, LANG_SCROLL_SPEED, 9, + "remote scroll speed", UNIT_INT, 0,15, 1, + NULL, NULL, lcd_remote_scroll_speed), + INT_SETTING(0, remote_scroll_step, LANG_SCROLL_STEP, 6, + "remote scroll step", UNIT_PIXEL, 1, LCD_REMOTE_WIDTH, 1, NULL, + NULL, lcd_remote_scroll_step), + INT_SETTING(0, remote_scroll_delay, LANG_SCROLL_DELAY, 1000, + "remote scroll delay", UNIT_MS, 0, 2500, 100, NULL, NULL, + lcd_remote_scroll_delay), + INT_SETTING(0, remote_bidir_limit, LANG_BIDIR_SCROLL, 50, + "remote bidir limit", UNIT_PERCENT, 0, 200, 25, NULL, NULL, + lcd_remote_bidir_scroll), #endif #ifdef HAVE_LCD_BITMAP OFFON_SETTING(0, offset_out_of_view, LANG_SCREEN_SCROLL_VIEW, - false, "Screen Scrolls Out Of View", gui_list_screen_scroll_out_of_view), - INT_SETTING(F_PADTITLE, scroll_step, LANG_SCROLL_STEP, 6, "scroll step", - UNIT_PIXEL, 1, LCD_WIDTH, 1, NULL, NULL, lcd_scroll_step), - INT_SETTING(F_PADTITLE, screen_scroll_step, LANG_SCREEN_SCROLL_STEP, - 16, "screen scroll step", - UNIT_PIXEL, 1, LCD_WIDTH, 1, NULL, NULL, gui_list_screen_scroll_step), + false, "Screen Scrolls Out Of View", + gui_list_screen_scroll_out_of_view), + INT_SETTING(F_PADTITLE, scroll_step, LANG_SCROLL_STEP, 6, "scroll step", + UNIT_PIXEL, 1, LCD_WIDTH, 1, NULL, NULL, lcd_scroll_step), + INT_SETTING(F_PADTITLE, screen_scroll_step, LANG_SCREEN_SCROLL_STEP, 16, + "screen scroll step", UNIT_PIXEL, 1, LCD_WIDTH, 1, NULL, NULL, + gui_list_screen_scroll_step), #endif /* HAVE_LCD_BITMAP */ #ifdef HAVE_LCD_CHARCELLS - INT_SETTING(0, jump_scroll, LANG_JUMP_SCROLL, 0, "jump scroll", - UNIT_INT, 0, 5, 1, jumpscroll_format, jumpscroll_getlang, lcd_jump_scroll), - INT_SETTING(0, jump_scroll_delay, LANG_JUMP_SCROLL_DELAY, 500, "jump scroll delay", - UNIT_MS, 0, 2500, 100, NULL, NULL, lcd_jump_scroll_delay), + INT_SETTING(0, jump_scroll, LANG_JUMP_SCROLL, 0, "jump scroll", UNIT_INT, 0, + 5, 1, jumpscroll_format, jumpscroll_getlang, lcd_jump_scroll), + INT_SETTING(0, jump_scroll_delay, LANG_JUMP_SCROLL_DELAY, 500, + "jump scroll delay", UNIT_MS, 0, 2500, 100, NULL, NULL, + lcd_jump_scroll_delay), #endif OFFON_SETTING(0,scroll_paginated,LANG_SCROLL_PAGINATED, - false,"scroll paginated",NULL), + false,"scroll paginated",NULL), #ifdef HAVE_LCD_COLOR - {F_T_INT|F_RGB|F_THEMESETTING ,&global_settings.fg_color,-1,INT(DEFAULT_THEME_FOREGROUND), - "foreground color",NULL,UNUSED}, - {F_T_INT|F_RGB|F_THEMESETTING ,&global_settings.bg_color,-1,INT(DEFAULT_THEME_BACKGROUND), - "background color",NULL,UNUSED}, - {F_T_INT|F_RGB|F_THEMESETTING ,&global_settings.lss_color,-1,INT(DEFAULT_THEME_SELECTOR_START), - "line selector start color",NULL,UNUSED}, - {F_T_INT|F_RGB|F_THEMESETTING ,&global_settings.lse_color,-1,INT(DEFAULT_THEME_SELECTOR_END), - "line selector end color",NULL,UNUSED}, - {F_T_INT|F_RGB|F_THEMESETTING ,&global_settings.lst_color,-1,INT(DEFAULT_THEME_SELECTOR_TEXT), - "line selector text color",NULL,UNUSED}, + {F_T_INT|F_RGB|F_THEMESETTING ,&global_settings.fg_color,-1, + INT(DEFAULT_THEME_FOREGROUND),"foreground color",NULL,UNUSED}, + {F_T_INT|F_RGB|F_THEMESETTING ,&global_settings.bg_color,-1, + INT(DEFAULT_THEME_BACKGROUND),"background color",NULL,UNUSED}, + {F_T_INT|F_RGB|F_THEMESETTING ,&global_settings.lss_color,-1, + INT(DEFAULT_THEME_SELECTOR_START),"line selector start color",NULL, + UNUSED}, + {F_T_INT|F_RGB|F_THEMESETTING ,&global_settings.lse_color,-1, + INT(DEFAULT_THEME_SELECTOR_END),"line selector end color",NULL,UNUSED}, + {F_T_INT|F_RGB|F_THEMESETTING ,&global_settings.lst_color,-1, + INT(DEFAULT_THEME_SELECTOR_TEXT),"line selector text color",NULL, + UNUSED}, #endif /* more playback */ @@ -649,17 +670,18 @@ const struct settings_list settings[] = { TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, ff_rewind_min_step, LANG_FFRW_STEP, 1, "scan min step", NULL, UNIT_SEC, NULL, NULL, NULL, 14, 1,2,3,4,5,6,8,10,15,20,25,30,45,60), - INT_SETTING(0, ff_rewind_accel, LANG_FFRW_ACCEL, 3, "scan accel", - UNIT_SEC, 16, 0, -1, scanaccel_formatter, getlang_unit_0_is_off, NULL), + INT_SETTING(0, ff_rewind_accel, LANG_FFRW_ACCEL, 3, "scan accel", UNIT_SEC, + 16, 0, -1, scanaccel_formatter, getlang_unit_0_is_off, NULL), #if (CONFIG_CODEC == SWCODEC) && !defined(HAVE_FLASH_STORAGE) STRINGCHOICE_SETTING(0, buffer_margin, LANG_MP3BUFFER_MARGIN, 0,"antiskip", - "5s,15s,30s,1min,2min,3min,5min,10min",NULL, 8, - TALK_ID(5, UNIT_SEC), TALK_ID(15, UNIT_SEC), - TALK_ID(30, UNIT_SEC), TALK_ID(1, UNIT_MIN), TALK_ID(2, UNIT_MIN), - TALK_ID(3, UNIT_MIN), TALK_ID(5, UNIT_MIN), TALK_ID(10, UNIT_MIN)), + "5s,15s,30s,1min,2min,3min,5min,10min", NULL, 8, + TALK_ID(5, UNIT_SEC), TALK_ID(15, UNIT_SEC), + TALK_ID(30, UNIT_SEC), TALK_ID(1, UNIT_MIN), + TALK_ID(2, UNIT_MIN), TALK_ID(3, UNIT_MIN), + TALK_ID(5, UNIT_MIN), TALK_ID(10, UNIT_MIN)), #elif !defined(HAVE_FLASH_STORAGE) INT_SETTING(0, buffer_margin, LANG_MP3BUFFER_MARGIN, 0, "antiskip", - UNIT_SEC, 0, 7, 1, NULL, NULL, audio_set_buffer_margin), + UNIT_SEC, 0, 7, 1, NULL, NULL, audio_set_buffer_margin), #endif /* disk */ #ifndef HAVE_FLASH_STORAGE @@ -668,84 +690,96 @@ const struct settings_list settings[] = { #endif /* HAVE_FLASH_STORAGE */ /* browser */ CHOICE_SETTING(0, dirfilter, LANG_FILTER, SHOW_SUPPORTED, "show files", - "all,supported,music,playlists", NULL, 4, ID2P(LANG_ALL), - ID2P(LANG_FILTER_SUPPORTED), ID2P(LANG_FILTER_MUSIC), ID2P(LANG_PLAYLISTS)), - OFFON_SETTING(0,sort_case,LANG_SORT_CASE,false,"sort case",NULL), + "all,supported,music,playlists", NULL, 4, ID2P(LANG_ALL), + ID2P(LANG_FILTER_SUPPORTED), ID2P(LANG_FILTER_MUSIC), + ID2P(LANG_PLAYLISTS)), + OFFON_SETTING(0, sort_case, LANG_SORT_CASE, false, "sort case", NULL), CHOICE_SETTING(0, show_filename_ext, LANG_SHOW_FILENAME_EXT, 3, - "show filename exts", "off,on,unknown,view_all", NULL , 4 , - ID2P(LANG_OFF), ID2P(LANG_ON), ID2P(LANG_UNKNOWN_TYPES), - ID2P(LANG_EXT_ONLY_VIEW_ALL)), + "show filename exts", "off,on,unknown,view_all", NULL , 4 , + ID2P(LANG_OFF), ID2P(LANG_ON), ID2P(LANG_UNKNOWN_TYPES), + ID2P(LANG_EXT_ONLY_VIEW_ALL)), OFFON_SETTING(0,browse_current,LANG_FOLLOW,false,"follow playlist",NULL), OFFON_SETTING(0,playlist_viewer_icons,LANG_SHOW_ICONS,true, - "playlist viewer icons",NULL), + "playlist viewer icons",NULL), OFFON_SETTING(0,playlist_viewer_indices,LANG_SHOW_INDICES,true, - "playlist viewer indices",NULL), + "playlist viewer indices",NULL), CHOICE_SETTING(0, playlist_viewer_track_display, LANG_TRACK_DISPLAY, 0, - "playlist viewer track display","track name,full path", NULL, 2, - ID2P(LANG_DISPLAY_TRACK_NAME_ONLY), ID2P(LANG_DISPLAY_FULL_PATH)), + "playlist viewer track display","track name,full path", + NULL, 2, ID2P(LANG_DISPLAY_TRACK_NAME_ONLY), + ID2P(LANG_DISPLAY_FULL_PATH)), CHOICE_SETTING(0, recursive_dir_insert, LANG_RECURSE_DIRECTORY , RECURSE_ON, - "recursive directory insert", off_on_ask, NULL , 3 , - ID2P(LANG_OFF), ID2P(LANG_ON), ID2P(LANG_ASK)), + "recursive directory insert", off_on_ask, NULL , 3 , + ID2P(LANG_OFF), ID2P(LANG_ON), ID2P(LANG_ASK)), /* bookmarks */ CHOICE_SETTING(0, autocreatebookmark, LANG_BOOKMARK_SETTINGS_AUTOCREATE, - BOOKMARK_NO, "autocreate bookmarks", - "off,on,ask,recent only - on,recent only - ask", NULL, 5, - ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES), - ID2P(LANG_ASK), ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES), - ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK)), - CHOICE_SETTING(0, autoloadbookmark, LANG_BOOKMARK_SETTINGS_AUTOLOAD, - BOOKMARK_NO, "autoload bookmarks", off_on_ask, NULL, 3, - ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES), ID2P(LANG_ASK)), + BOOKMARK_NO, "autocreate bookmarks", + "off,on,ask,recent only - on,recent only - ask", NULL, 5, + ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES), + ID2P(LANG_ASK), ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES), + ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK)), + CHOICE_SETTING(0, autoloadbookmark, LANG_BOOKMARK_SETTINGS_AUTOLOAD, + BOOKMARK_NO, "autoload bookmarks", off_on_ask, NULL, 3, + ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES), + ID2P(LANG_ASK)), CHOICE_SETTING(0, usemrb, LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS, - BOOKMARK_NO, "use most-recent-bookmarks", "off,on,unique only", NULL, 3, - ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES), - ID2P(LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY)), + BOOKMARK_NO, "use most-recent-bookmarks", + "off,on,unique only", NULL, 3, ID2P(LANG_SET_BOOL_NO), + ID2P(LANG_SET_BOOL_YES), + ID2P(LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY)), #ifdef HAVE_LCD_BITMAP /* peak meter */ STRINGCHOICE_SETTING(0, peak_meter_clip_hold, LANG_PM_CLIP_HOLD, 16, - "peak meter clip hold", - "on,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,2min" - ",3min,5min,10min,20min,45min,90min", peak_meter_set_clip_hold, - 25, LANG_PM_ETERNAL, - TALK_ID(1, UNIT_SEC), TALK_ID(2, UNIT_SEC), TALK_ID(3, UNIT_SEC), - TALK_ID(4, UNIT_SEC), TALK_ID(5, UNIT_SEC), TALK_ID(6, UNIT_SEC), - TALK_ID(7, UNIT_SEC), TALK_ID(8, UNIT_SEC), TALK_ID(9, UNIT_SEC), - TALK_ID(10, UNIT_SEC), TALK_ID(15, UNIT_SEC), TALK_ID(20, UNIT_SEC), - TALK_ID(25, UNIT_SEC), TALK_ID(30, UNIT_SEC), TALK_ID(45, UNIT_SEC), - TALK_ID(60, UNIT_SEC), TALK_ID(90, UNIT_SEC), TALK_ID(2, UNIT_MIN), - TALK_ID(3, UNIT_MIN), TALK_ID(5, UNIT_MIN), TALK_ID(10, UNIT_MIN), - TALK_ID(20, UNIT_MIN), TALK_ID(45, UNIT_MIN), TALK_ID(90, UNIT_MIN)), + "peak meter clip hold", + "on,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,2min" + ",3min,5min,10min,20min,45min,90min", + peak_meter_set_clip_hold, 25, LANG_PM_ETERNAL, + TALK_ID(1, UNIT_SEC), TALK_ID(2, UNIT_SEC), + TALK_ID(3, UNIT_SEC), TALK_ID(4, UNIT_SEC), + TALK_ID(5, UNIT_SEC), TALK_ID(6, UNIT_SEC), + TALK_ID(7, UNIT_SEC), TALK_ID(8, UNIT_SEC), + TALK_ID(9, UNIT_SEC), TALK_ID(10, UNIT_SEC), + TALK_ID(15, UNIT_SEC), TALK_ID(20, UNIT_SEC), + TALK_ID(25, UNIT_SEC), TALK_ID(30, UNIT_SEC), + TALK_ID(45, UNIT_SEC), TALK_ID(60, UNIT_SEC), + TALK_ID(90, UNIT_SEC), TALK_ID(2, UNIT_MIN), + TALK_ID(3, UNIT_MIN), TALK_ID(5, UNIT_MIN), + TALK_ID(10, UNIT_MIN), TALK_ID(20, UNIT_MIN), + TALK_ID(45, UNIT_MIN), TALK_ID(90, UNIT_MIN)), STRINGCHOICE_SETTING(0, peak_meter_hold, LANG_PM_PEAK_HOLD, 3, - "peak meter hold", - "off,200ms,300ms,500ms,1,2,3,4,5,6,7,8,9,10,15,20,30,1min", - NULL, 18, LANG_OFF, - TALK_ID(200, UNIT_MS), TALK_ID(300, UNIT_MS), TALK_ID(500, UNIT_MS), - TALK_ID(1, UNIT_SEC), TALK_ID(2, UNIT_SEC), TALK_ID(3, UNIT_SEC), - TALK_ID(4, UNIT_SEC), TALK_ID(5, UNIT_SEC), TALK_ID(6, UNIT_SEC), - TALK_ID(7, UNIT_SEC), TALK_ID(8, UNIT_SEC), TALK_ID(9, UNIT_SEC), - TALK_ID(10, UNIT_SEC), TALK_ID(15, UNIT_SEC), TALK_ID(20, UNIT_SEC), - TALK_ID(30, UNIT_SEC), TALK_ID(60, UNIT_SEC)), - INT_SETTING(0, peak_meter_release, LANG_PM_RELEASE, 8, "peak meter release", - UNIT_PM_TICK, 1, 0x7e, 1, NULL, NULL,NULL), + "peak meter hold", + "off,200ms,300ms,500ms,1,2,3,4,5,6,7,8,9,10,15,20,30,1min", + NULL, 18, LANG_OFF, TALK_ID(200, UNIT_MS), + TALK_ID(300, UNIT_MS), TALK_ID(500, UNIT_MS), + TALK_ID(1, UNIT_SEC), TALK_ID(2, UNIT_SEC), + TALK_ID(3, UNIT_SEC), TALK_ID(4, UNIT_SEC), + TALK_ID(5, UNIT_SEC), TALK_ID(6, UNIT_SEC), + TALK_ID(7, UNIT_SEC), TALK_ID(8, UNIT_SEC), + TALK_ID(9, UNIT_SEC), TALK_ID(10, UNIT_SEC), + TALK_ID(15, UNIT_SEC), TALK_ID(20, UNIT_SEC), + TALK_ID(30, UNIT_SEC), TALK_ID(60, UNIT_SEC)), + INT_SETTING(0, peak_meter_release, LANG_PM_RELEASE, 8, "peak meter release", + UNIT_PM_TICK, 1, 0x7e, 1, NULL, NULL,NULL), OFFON_SETTING(0,peak_meter_dbfs,LANG_PM_DBFS,true,"peak meter dbfs",NULL), - {F_T_INT,&global_settings.peak_meter_min,LANG_PM_MIN,INT(60),"peak meter min",NULL,UNUSED}, - {F_T_INT,&global_settings.peak_meter_max,LANG_PM_MAX,INT(0),"peak meter max",NULL,UNUSED}, + {F_T_INT, &global_settings.peak_meter_min, LANG_PM_MIN,INT(60), + "peak meter min", NULL, UNUSED}, + {F_T_INT, &global_settings.peak_meter_max, LANG_PM_MAX,INT(0), + "peak meter max", NULL, UNUSED}, #ifdef HAVE_RECORDING - OFFON_SETTING(0,peak_meter_clipcounter,LANG_PM_CLIPCOUNTER,false, - "peak meter clipcounter",NULL), + OFFON_SETTING(0, peak_meter_clipcounter, LANG_PM_CLIPCOUNTER, false, + "peak meter clipcounter", NULL), #endif /* HAVE_RECORDING */ #endif /* HAVE_LCD_BITMAP */ #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) SOUND_SETTING(F_SOUNDSETTING, mdb_strength, LANG_MDB_STRENGTH, - "mdb strength", SOUND_MDB_STRENGTH), + "mdb strength", SOUND_MDB_STRENGTH), SOUND_SETTING(F_SOUNDSETTING, mdb_harmonics, LANG_MDB_HARMONICS, - "mdb harmonics", SOUND_MDB_HARMONICS), + "mdb harmonics", SOUND_MDB_HARMONICS), SOUND_SETTING(F_SOUNDSETTING, mdb_center, LANG_MDB_CENTER, - "mdb center", SOUND_MDB_CENTER), + "mdb center", SOUND_MDB_CENTER), SOUND_SETTING(F_SOUNDSETTING, mdb_shape, LANG_MDB_SHAPE, - "mdb shape", SOUND_MDB_SHAPE), + "mdb shape", SOUND_MDB_SHAPE), OFFON_SETTING(F_SOUNDSETTING, mdb_enable, LANG_MDB_ENABLE, - false, "mdb enable", set_mdb_enable), + false, "mdb enable", set_mdb_enable), #endif #if CONFIG_CODEC == MAS3507D OFFON_SETTING(F_SOUNDSETTING, line_in,LANG_LINE_IN,false,"line in",NULL), @@ -753,87 +787,91 @@ const struct settings_list settings[] = { /* voice */ OFFON_SETTING(F_TEMPVAR, talk_menu, LANG_VOICE_MENU, true, "talk menu", NULL), CHOICE_SETTING(0, talk_dir, LANG_VOICE_DIR, 0, - "talk dir", off_number_spell, NULL, 3, - ID2P(LANG_OFF), ID2P(LANG_VOICE_NUMBER), - ID2P(LANG_VOICE_SPELL)), - OFFON_SETTING(F_TEMPVAR, talk_dir_clip, LANG_VOICE_DIR_TALK, false, "talk dir clip", NULL), + "talk dir", off_number_spell, NULL, 3, + ID2P(LANG_OFF), ID2P(LANG_VOICE_NUMBER), + ID2P(LANG_VOICE_SPELL)), + OFFON_SETTING(F_TEMPVAR, talk_dir_clip, LANG_VOICE_DIR_TALK, false, + "talk dir clip", NULL), CHOICE_SETTING(0, talk_file, LANG_VOICE_FILE, 0, - "talk file", off_number_spell, NULL, 3, - ID2P(LANG_OFF), ID2P(LANG_VOICE_NUMBER), - ID2P(LANG_VOICE_SPELL)), - OFFON_SETTING(F_TEMPVAR, talk_file_clip, LANG_VOICE_FILE_TALK, false, "talk file clip", NULL), - OFFON_SETTING(F_TEMPVAR, talk_filetype, LANG_VOICE_FILETYPE, - false, "talk filetype", NULL), - OFFON_SETTING(F_TEMPVAR, talk_battery_level, - LANG_TALK_BATTERY_LEVEL, false, + "talk file", off_number_spell, NULL, 3, + ID2P(LANG_OFF), ID2P(LANG_VOICE_NUMBER), + ID2P(LANG_VOICE_SPELL)), + OFFON_SETTING(F_TEMPVAR, talk_file_clip, LANG_VOICE_FILE_TALK, false, + "talk file clip", NULL), + OFFON_SETTING(F_TEMPVAR, talk_filetype, LANG_VOICE_FILETYPE, false, + "talk filetype", NULL), + OFFON_SETTING(F_TEMPVAR, talk_battery_level, LANG_TALK_BATTERY_LEVEL, false, "Announce Battery Level", NULL), /* file sorting */ CHOICE_SETTING(0, sort_file, LANG_SORT_FILE, 0 , - "sort files", "alpha,oldest,newest,type", NULL, 4, - ID2P(LANG_SORT_ALPHA), ID2P(LANG_SORT_DATE), - ID2P(LANG_SORT_DATE_REVERSE) , ID2P(LANG_SORT_TYPE)), + "sort files", "alpha,oldest,newest,type", NULL, 4, + ID2P(LANG_SORT_ALPHA), ID2P(LANG_SORT_DATE), + ID2P(LANG_SORT_DATE_REVERSE) , ID2P(LANG_SORT_TYPE)), CHOICE_SETTING(0, sort_dir, LANG_SORT_DIR, 0 , - "sort dirs", "alpha,oldest,newest", NULL, 3, - ID2P(LANG_SORT_ALPHA), ID2P(LANG_SORT_DATE), - ID2P(LANG_SORT_DATE_REVERSE)), + "sort dirs", "alpha,oldest,newest", NULL, 3, + ID2P(LANG_SORT_ALPHA), ID2P(LANG_SORT_DATE), + ID2P(LANG_SORT_DATE_REVERSE)), #ifdef HAVE_RECORDING /* recording */ STRINGCHOICE_SETTING(F_RECSETTING, rec_timesplit, LANG_SPLIT_TIME, 0, - "rec timesplit", - "off,00:05,00:10,00:15,00:30,01:00,01:14,01:20,02:00," - "04:00,06:00,08:00,10:00,12:00,18:00,24:00", - NULL, 16, LANG_OFF, - TALK_ID(5, UNIT_MIN), TALK_ID(10, UNIT_MIN), TALK_ID(15, UNIT_MIN), - TALK_ID(30, UNIT_MIN), TALK_ID(60, UNIT_MIN), TALK_ID(74, UNIT_MIN), - TALK_ID(80, UNIT_MIN), TALK_ID(2, UNIT_HOUR), TALK_ID(4, UNIT_HOUR), - TALK_ID(6, UNIT_HOUR), TALK_ID(8, UNIT_HOUR), TALK_ID(10, UNIT_HOUR), - TALK_ID(12, UNIT_HOUR), TALK_ID(18, UNIT_HOUR), TALK_ID(20, UNIT_HOUR), - TALK_ID(24, UNIT_HOUR)), + "rec timesplit", + "off,00:05,00:10,00:15,00:30,01:00,01:14,01:20,02:00," + "04:00,06:00,08:00,10:00,12:00,18:00,24:00", + NULL, 16, LANG_OFF, + TALK_ID(5, UNIT_MIN), TALK_ID(10, UNIT_MIN), + TALK_ID(15, UNIT_MIN), TALK_ID(30, UNIT_MIN), + TALK_ID(60, UNIT_MIN), TALK_ID(74, UNIT_MIN), + TALK_ID(80, UNIT_MIN), TALK_ID(2, UNIT_HOUR), + TALK_ID(4, UNIT_HOUR), TALK_ID(6, UNIT_HOUR), + TALK_ID(8, UNIT_HOUR), TALK_ID(10, UNIT_HOUR), + TALK_ID(12, UNIT_HOUR), TALK_ID(18, UNIT_HOUR), + TALK_ID(20, UNIT_HOUR), TALK_ID(24, UNIT_HOUR)), STRINGCHOICE_SETTING(F_RECSETTING, rec_sizesplit, LANG_SPLIT_SIZE, 0, - "rec sizesplit", - "off,5MB,10MB,15MB,32MB,64MB,75MB,100MB,128MB," - "256MB,512MB,650MB,700MB,1GB,1.5GB,1.75GB", - NULL, 16, LANG_OFF, - TALK_ID(5, UNIT_MB), TALK_ID(10, UNIT_MB), TALK_ID(15, UNIT_MB), - TALK_ID(32, UNIT_MB), TALK_ID(64, UNIT_MB), TALK_ID(75, UNIT_MB), - TALK_ID(100, UNIT_MB), TALK_ID(128, UNIT_MB), TALK_ID(256, UNIT_MB), - TALK_ID(512, UNIT_MB), TALK_ID(650, UNIT_MB), TALK_ID(700, UNIT_MB), - TALK_ID(1024, UNIT_MB), TALK_ID(1536, UNIT_MB), TALK_ID(1792, UNIT_MB)), - {F_T_INT|F_RECSETTING, &global_settings.rec_channels, - LANG_CHANNELS, INT(0), - "rec channels","stereo,mono",UNUSED}, - CHOICE_SETTING(F_RECSETTING, rec_split_type, LANG_SPLIT_TYPE, 0 , - "rec split type", "Split,Stop", NULL, 2, - ID2P(LANG_START_NEW_FILE), ID2P(LANG_STOP_RECORDING)), - CHOICE_SETTING(F_RECSETTING, rec_split_method, LANG_SPLIT_MEASURE, 0 , - "rec split method", "Time,Filesize", NULL, 2, - ID2P(LANG_TIME), ID2P(LANG_REC_SIZE)), - {F_T_INT|F_RECSETTING, &global_settings.rec_source, - LANG_RECORDING_SOURCE, INT(0), - "rec source", - &HAVE_MIC_REC_(",mic") - HAVE_LINE_REC_(",line") - HAVE_SPDIF_REC_(",spdif") - HAVE_FMRADIO_REC_(",fmradio")[1] - ,UNUSED}, - INT_SETTING(F_RECSETTING, rec_prerecord_time, LANG_RECORD_PRERECORD_TIME, - 0, "prerecording time", UNIT_SEC, 0, 30, 1, - formatter_unit_0_is_off, getlang_unit_0_is_off, NULL), - - FILENAME_SETTING(F_RECSETTING, rec_directory, "rec path", + "rec sizesplit", + "off,5MB,10MB,15MB,32MB,64MB,75MB,100MB,128MB," + "256MB,512MB,650MB,700MB,1GB,1.5GB,1.75GB", + NULL, 16, LANG_OFF, + TALK_ID(5, UNIT_MB), TALK_ID(10, UNIT_MB), + TALK_ID(15, UNIT_MB), TALK_ID(32, UNIT_MB), + TALK_ID(64, UNIT_MB), TALK_ID(75, UNIT_MB), + TALK_ID(100, UNIT_MB), TALK_ID(128, UNIT_MB), + TALK_ID(256, UNIT_MB), TALK_ID(512, UNIT_MB), + TALK_ID(650, UNIT_MB), TALK_ID(700, UNIT_MB), + TALK_ID(1024, UNIT_MB), TALK_ID(1536, UNIT_MB), + TALK_ID(1792, UNIT_MB)), + {F_T_INT|F_RECSETTING, &global_settings.rec_channels, LANG_CHANNELS, INT(0), + "rec channels","stereo,mono",UNUSED}, + CHOICE_SETTING(F_RECSETTING, rec_split_type, LANG_SPLIT_TYPE, 0, + "rec split type", "Split,Stop", NULL, 2, + ID2P(LANG_START_NEW_FILE), ID2P(LANG_STOP_RECORDING)), + CHOICE_SETTING(F_RECSETTING, rec_split_method, LANG_SPLIT_MEASURE, 0, + "rec split method", "Time,Filesize", NULL, 2, + ID2P(LANG_TIME), ID2P(LANG_REC_SIZE)), + {F_T_INT|F_RECSETTING, &global_settings.rec_source, LANG_RECORDING_SOURCE, + INT(0), "rec source", + &HAVE_MIC_REC_(",mic") + HAVE_LINE_REC_(",line") + HAVE_SPDIF_REC_(",spdif") + HAVE_FMRADIO_REC_(",fmradio")[1], + UNUSED}, + INT_SETTING(F_RECSETTING, rec_prerecord_time, LANG_RECORD_PRERECORD_TIME, 0, + "prerecording time", UNIT_SEC, 0, 30, 1, + formatter_unit_0_is_off, getlang_unit_0_is_off, NULL), + + FILENAME_SETTING(F_RECSETTING, rec_directory, "rec path", REC_BASE_DIR, NULL, NULL, MAX_FILENAME+1), #ifdef HAVE_BACKLIGHT - CHOICE_SETTING(F_RECSETTING, cliplight, LANG_CLIP_LIGHT, 0 , - "cliplight", "off,main,both,remote", NULL, + CHOICE_SETTING(F_RECSETTING, cliplight, LANG_CLIP_LIGHT, 0, + "cliplight", "off,main,both,remote", NULL, #ifdef HAVE_REMOTE_LCD - 4, ID2P(LANG_OFF), ID2P(LANG_MAIN_UNIT), ID2P(LANG_REMOTE_MAIN), - ID2P(LANG_REMOTE_UNIT) + 4, ID2P(LANG_OFF), ID2P(LANG_MAIN_UNIT), + ID2P(LANG_REMOTE_MAIN), ID2P(LANG_REMOTE_UNIT) #else - 2, ID2P(LANG_OFF), ID2P(LANG_ON) + 2, ID2P(LANG_OFF), ID2P(LANG_ON) #endif - ), + ), #endif #ifdef DEFAULT_REC_MIC_GAIN {F_T_INT|F_RECSETTING,&global_settings.rec_mic_gain, @@ -852,13 +890,12 @@ const struct settings_list settings[] = { #endif /* DEFAULT_REC_RIGHT_GAIN */ #if CONFIG_CODEC == MAS3587F {F_T_INT|F_RECSETTING,&global_settings.rec_frequency, - LANG_RECORDING_FREQUENCY, - INT(0),"rec frequency","44,48,32,22,24,16",UNUSED}, - INT_SETTING(F_RECSETTING, rec_quality, LANG_RECORDING_QUALITY, - 5, "rec quality", - UNIT_INT, 0, 7, 1, NULL, NULL, NULL), - OFFON_SETTING(F_RECSETTING,rec_editable,LANG_RECORDING_EDITABLE, - false,"editable recordings",NULL), + LANG_RECORDING_FREQUENCY, INT(0), + "rec frequency","44,48,32,22,24,16", UNUSED}, + INT_SETTING(F_RECSETTING, rec_quality, LANG_RECORDING_QUALITY, 5, + "rec quality", UNIT_INT, 0, 7, 1, NULL, NULL, NULL), + OFFON_SETTING(F_RECSETTING, rec_editable, LANG_RECORDING_EDITABLE, false, + "editable recordings", NULL), #endif /* CONFIG_CODEC == MAS3587F */ #if CONFIG_CODEC == SWCODEC {F_T_INT|F_RECSETTING,&global_settings.rec_frequency, @@ -903,125 +940,142 @@ const struct settings_list settings[] = { #ifdef HAVE_SPDIF_POWER OFFON_SETTING(F_SOUNDSETTING, spdif_enable, LANG_SPDIF_ENABLE, false, - "spdif enable", spdif_power_enable), + "spdif enable", spdif_power_enable), #endif CHOICE_SETTING(0, next_folder, LANG_NEXT_FOLDER, FOLDER_ADVANCE_OFF, - "folder navigation", "off,on,random",NULL ,3, - ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES), ID2P(LANG_RANDOM)), - OFFON_SETTING(0,runtimedb,LANG_RUNTIMEDB_ACTIVE,false,"gather runtime data",NULL), + "folder navigation", "off,on,random",NULL ,3, + ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES), + ID2P(LANG_RANDOM)), + OFFON_SETTING(0, runtimedb, LANG_RUNTIMEDB_ACTIVE, false, + "gather runtime data", NULL), #if CONFIG_CODEC == SWCODEC /* replay gain */ - OFFON_SETTING(F_SOUNDSETTING, replaygain, LANG_REPLAYGAIN_ENABLE, false, "replaygain", NULL), - CHOICE_SETTING(F_SOUNDSETTING, replaygain_type, LANG_REPLAYGAIN_MODE, REPLAYGAIN_ALBUM, - "replaygain type", "track,album,track shuffle", NULL, 3, - ID2P(LANG_TRACK_GAIN), ID2P(LANG_ALBUM_GAIN), ID2P(LANG_SHUFFLE_GAIN)), + OFFON_SETTING(F_SOUNDSETTING, replaygain, LANG_REPLAYGAIN_ENABLE, false, + "replaygain", NULL), + CHOICE_SETTING(F_SOUNDSETTING, replaygain_type, LANG_REPLAYGAIN_MODE, + REPLAYGAIN_ALBUM, "replaygain type", + "track,album,track shuffle", NULL, 3, ID2P(LANG_TRACK_GAIN), + ID2P(LANG_ALBUM_GAIN), ID2P(LANG_SHUFFLE_GAIN)), OFFON_SETTING(F_SOUNDSETTING, replaygain_noclip, LANG_REPLAYGAIN_NOCLIP, - false, "replaygain noclip", NULL), - INT_SETTING_NOWRAP(F_SOUNDSETTING, replaygain_preamp, LANG_REPLAYGAIN_PREAMP, 0, "replaygain preamp", - UNIT_DB, -120, 120, 5, db_format, get_dec_talkid, NULL), - - CHOICE_SETTING(0, beep, LANG_BEEP, 0, - "beep", "off,weak,moderate,strong", NULL, 4, - ID2P(LANG_OFF), ID2P(LANG_WEAK), ID2P(LANG_MODERATE), ID2P(LANG_STRONG)), + false, "replaygain noclip", NULL), + INT_SETTING_NOWRAP(F_SOUNDSETTING, replaygain_preamp, + LANG_REPLAYGAIN_PREAMP, 0, "replaygain preamp", + UNIT_DB, -120, 120, 5, db_format, get_dec_talkid, NULL), + + CHOICE_SETTING(0, beep, LANG_BEEP, 0, "beep", "off,weak,moderate,strong", + NULL, 4, ID2P(LANG_OFF), ID2P(LANG_WEAK), + ID2P(LANG_MODERATE), ID2P(LANG_STRONG)), /* crossfade */ - CHOICE_SETTING(F_SOUNDSETTING, crossfade, LANG_CROSSFADE_ENABLE, 0, "crossfade", - "off,shuffle,track skip,shuffle and track skip,always",NULL, 5, - ID2P(LANG_OFF), ID2P(LANG_SHUFFLE), ID2P(LANG_TRACKSKIP), - ID2P(LANG_SHUFFLE_TRACKSKIP), ID2P(LANG_ALWAYS)), - INT_SETTING(F_SOUNDSETTING, crossfade_fade_in_delay, LANG_CROSSFADE_FADE_IN_DELAY, 0, - "crossfade fade in delay", UNIT_SEC, 0, 7, 1, NULL, NULL, NULL), - INT_SETTING(F_SOUNDSETTING, crossfade_fade_out_delay, LANG_CROSSFADE_FADE_OUT_DELAY, 0, - "crossfade fade out delay", UNIT_SEC, 0, 7, 1, NULL, NULL, NULL), - INT_SETTING(F_SOUNDSETTING, crossfade_fade_in_duration, LANG_CROSSFADE_FADE_IN_DURATION, 2, - "crossfade fade in duration", UNIT_SEC, 0, 15, 1, NULL, NULL, NULL), - INT_SETTING(F_SOUNDSETTING, crossfade_fade_out_duration, LANG_CROSSFADE_FADE_OUT_DURATION, 2, - "crossfade fade out duration", UNIT_SEC, 0, 15, 1, NULL, NULL, NULL), - CHOICE_SETTING(F_SOUNDSETTING, crossfade_fade_out_mixmode, LANG_CROSSFADE_FADE_OUT_MODE, - 0, "crossfade fade out mode", "crossfade,mix", NULL, 2, - ID2P(LANG_CROSSFADE), ID2P(LANG_MIX)), - + CHOICE_SETTING(F_SOUNDSETTING, crossfade, LANG_CROSSFADE_ENABLE, 0, + "crossfade", + "off,shuffle,track skip,shuffle and track skip,always", NULL, + 5, ID2P(LANG_OFF), ID2P(LANG_SHUFFLE), ID2P(LANG_TRACKSKIP), + ID2P(LANG_SHUFFLE_TRACKSKIP), ID2P(LANG_ALWAYS)), + INT_SETTING(F_SOUNDSETTING, crossfade_fade_in_delay, + LANG_CROSSFADE_FADE_IN_DELAY, 0, + "crossfade fade in delay", UNIT_SEC, 0, 7, 1, NULL, NULL, NULL), + INT_SETTING(F_SOUNDSETTING, crossfade_fade_out_delay, + LANG_CROSSFADE_FADE_OUT_DELAY, 0, + "crossfade fade out delay", UNIT_SEC, 0, 7, 1, NULL, NULL,NULL), + INT_SETTING(F_SOUNDSETTING, crossfade_fade_in_duration, + LANG_CROSSFADE_FADE_IN_DURATION, 2, + "crossfade fade in duration", UNIT_SEC, 0, 15, 1, NULL, NULL, + NULL), + INT_SETTING(F_SOUNDSETTING, crossfade_fade_out_duration, + LANG_CROSSFADE_FADE_OUT_DURATION, 2, + "crossfade fade out duration", UNIT_SEC, 0, 15, 1, NULL, NULL, + NULL), + CHOICE_SETTING(F_SOUNDSETTING, crossfade_fade_out_mixmode, + LANG_CROSSFADE_FADE_OUT_MODE, 0, + "crossfade fade out mode", "crossfade,mix", NULL, 2, + ID2P(LANG_CROSSFADE), ID2P(LANG_MIX)), + /* crossfeed */ OFFON_SETTING(F_SOUNDSETTING, crossfeed, LANG_CROSSFEED, false, - "crossfeed", dsp_set_crossfeed), - INT_SETTING_NOWRAP(F_SOUNDSETTING, crossfeed_direct_gain, LANG_CROSSFEED_DIRECT_GAIN, - -15, "crossfeed direct gain", UNIT_DB, -60, 0, 5, - db_format, get_dec_talkid, dsp_set_crossfeed_direct_gain), - INT_SETTING_NOWRAP(F_SOUNDSETTING, crossfeed_cross_gain, LANG_CROSSFEED_CROSS_GAIN, -60, - "crossfeed cross gain", UNIT_DB, -120, -30, 5, - db_format, get_dec_talkid, crossfeed_cross_set), - INT_SETTING_NOWRAP(F_SOUNDSETTING, crossfeed_hf_attenuation, LANG_CROSSFEED_HF_ATTENUATION, -160, - "crossfeed hf attenuation", UNIT_DB, -240, -60, 5, - db_format, get_dec_talkid, crossfeed_cross_set), - INT_SETTING_NOWRAP(F_SOUNDSETTING, crossfeed_hf_cutoff, LANG_CROSSFEED_HF_CUTOFF, 700, - "crossfeed hf cutoff", UNIT_HERTZ, 500, 2000, 100, - NULL, NULL, crossfeed_cross_set), + "crossfeed", dsp_set_crossfeed), + INT_SETTING_NOWRAP(F_SOUNDSETTING, crossfeed_direct_gain, + LANG_CROSSFEED_DIRECT_GAIN, -15, + "crossfeed direct gain", UNIT_DB, -60, 0, 5, + db_format, get_dec_talkid,dsp_set_crossfeed_direct_gain), + INT_SETTING_NOWRAP(F_SOUNDSETTING, crossfeed_cross_gain, + LANG_CROSSFEED_CROSS_GAIN, -60, + "crossfeed cross gain", UNIT_DB, -120, -30, 5, + db_format, get_dec_talkid, crossfeed_cross_set), + INT_SETTING_NOWRAP(F_SOUNDSETTING, crossfeed_hf_attenuation, + LANG_CROSSFEED_HF_ATTENUATION, -160, + "crossfeed hf attenuation", UNIT_DB, -240, -60, 5, + db_format, get_dec_talkid, crossfeed_cross_set), + INT_SETTING_NOWRAP(F_SOUNDSETTING, crossfeed_hf_cutoff, + LANG_CROSSFEED_HF_CUTOFF, 700, + "crossfeed hf cutoff", UNIT_HERTZ, 500, 2000, 100, + NULL, NULL, crossfeed_cross_set), /* equalizer */ OFFON_SETTING(F_EQSETTING, eq_enabled, LANG_EQUALIZER_ENABLED, false, - "eq enabled", NULL), + "eq enabled", NULL), INT_SETTING_NOWRAP(F_EQSETTING, eq_precut, LANG_EQUALIZER_PRECUT, 0, - "eq precut", UNIT_DB, 0, 240, 5, eq_precut_format, get_precut_talkid, - dsp_set_eq_precut), + "eq precut", UNIT_DB, 0, 240, 5, eq_precut_format, + get_precut_talkid, dsp_set_eq_precut), /* 0..32768 Hz */ INT_SETTING_NOWRAP(F_EQSETTING, eq_band0_cutoff, LANG_EQUALIZER_BAND_CUTOFF, - 60, "eq band 0 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, - EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), + 60, "eq band 0 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, + EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), INT_SETTING_NOWRAP(F_EQSETTING, eq_band1_cutoff, LANG_EQUALIZER_BAND_CENTER, - 200, "eq band 1 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, - EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), + 200, "eq band 1 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, + EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), INT_SETTING_NOWRAP(F_EQSETTING, eq_band2_cutoff, LANG_EQUALIZER_BAND_CENTER, - 800, "eq band 2 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, - EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), + 800, "eq band 2 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, + EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), INT_SETTING_NOWRAP(F_EQSETTING, eq_band3_cutoff, LANG_EQUALIZER_BAND_CENTER, - 4000, "eq band 3 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, - EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), + 4000, "eq band 3 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, + EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), INT_SETTING_NOWRAP(F_EQSETTING, eq_band4_cutoff, LANG_EQUALIZER_BAND_CUTOFF, - 12000, "eq band 4 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, - EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), + 12000, "eq band 4 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, + EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), /* 0..64 (or 0.0 to 6.4) */ INT_SETTING_NOWRAP(F_EQSETTING, eq_band0_q, LANG_EQUALIZER_BAND_Q, 7, - "eq band 0 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, - eq_q_format, get_dec_talkid, NULL), + "eq band 0 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, + eq_q_format, get_dec_talkid, NULL), INT_SETTING_NOWRAP(F_EQSETTING, eq_band1_q, LANG_EQUALIZER_BAND_Q, 10, - "eq band 1 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, - eq_q_format, get_dec_talkid, NULL), + "eq band 1 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, + eq_q_format, get_dec_talkid, NULL), INT_SETTING_NOWRAP(F_EQSETTING, eq_band2_q, LANG_EQUALIZER_BAND_Q, 10, - "eq band 2 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, - eq_q_format, get_dec_talkid, NULL), + "eq band 2 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, + eq_q_format, get_dec_talkid, NULL), INT_SETTING_NOWRAP(F_EQSETTING, eq_band3_q, LANG_EQUALIZER_BAND_Q, 10, - "eq band 3 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, - eq_q_format, get_dec_talkid, NULL), + "eq band 3 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, + eq_q_format, get_dec_talkid, NULL), INT_SETTING_NOWRAP(F_EQSETTING, eq_band4_q, LANG_EQUALIZER_BAND_Q, 7, - "eq band 4 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, - eq_q_format, get_dec_talkid, NULL), + "eq band 4 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, + eq_q_format, get_dec_talkid, NULL), /* -240..240 (or -24db to +24db) */ INT_SETTING_NOWRAP(F_EQSETTING, eq_band0_gain, LANG_GAIN, 0, - "eq band 0 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, - EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), + "eq band 0 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, + EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), INT_SETTING_NOWRAP(F_EQSETTING, eq_band1_gain, LANG_GAIN, 0, - "eq band 1 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, - EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), + "eq band 1 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, + EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), INT_SETTING_NOWRAP(F_EQSETTING, eq_band2_gain, LANG_GAIN, 0, - "eq band 2 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, - EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), + "eq band 2 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, + EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), INT_SETTING_NOWRAP(F_EQSETTING, eq_band3_gain, LANG_GAIN, 0, - "eq band 3 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, - EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), + "eq band 3 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, + EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), INT_SETTING_NOWRAP(F_EQSETTING, eq_band4_gain, LANG_GAIN, 0, - "eq band 4 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, - EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), + "eq band 4 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, + EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), /* dithering */ - OFFON_SETTING(F_SOUNDSETTING, dithering_enabled, LANG_DITHERING, - false, "dithering enabled", dsp_dither_enable), + OFFON_SETTING(F_SOUNDSETTING, dithering_enabled, LANG_DITHERING, false, + "dithering enabled", dsp_dither_enable), #endif #ifdef HAVE_WM8758 - SOUND_SETTING(F_NO_WRAP, bass_cutoff, LANG_BASS_CUTOFF, "bass cutoff", - SOUND_BASS_CUTOFF), - SOUND_SETTING(F_NO_WRAP, treble_cutoff, LANG_TREBLE_CUTOFF, "treble cutoff", - SOUND_TREBLE_CUTOFF), + SOUND_SETTING(F_NO_WRAP, bass_cutoff, LANG_BASS_CUTOFF, + "bass cutoff", SOUND_BASS_CUTOFF), + SOUND_SETTING(F_NO_WRAP, treble_cutoff, LANG_TREBLE_CUTOFF, + "treble cutoff", SOUND_TREBLE_CUTOFF), #endif #ifdef HAVE_DIRCACHE OFFON_SETTING(0,dircache,LANG_DIRCACHE_ENABLE,false,"dircache",NULL), @@ -1032,61 +1086,67 @@ const struct settings_list settings[] = { #ifdef HAVE_TC_RAMCACHE OFFON_SETTING(0,tagcache_ram,LANG_TAGCACHE_RAM,false,"tagcache_ram",NULL), #endif - OFFON_SETTING(0,tagcache_autoupdate, - LANG_TAGCACHE_AUTOUPDATE,false,"tagcache_autoupdate",NULL), + OFFON_SETTING(0, tagcache_autoupdate, LANG_TAGCACHE_AUTOUPDATE, false, + "tagcache_autoupdate", NULL), #endif CHOICE_SETTING(0, default_codepage, LANG_DEFAULT_CODEPAGE, 0, - "default codepage", + "default codepage", #ifdef HAVE_LCD_BITMAP - /* The order must match with that in unicode.c */ - "iso8859-1,iso8859-7,iso8859-8,cp1251,iso8859-11,cp1256," - "iso8859-9,iso8859-2,cp1250,sjis,gb2312,ksx1001,big5,utf-8", - set_codepage, 14, - ID2P(LANG_CODEPAGE_LATIN1), ID2P(LANG_CODEPAGE_GREEK), - ID2P(LANG_CODEPAGE_HEBREW), ID2P(LANG_CODEPAGE_CYRILLIC), - ID2P(LANG_CODEPAGE_THAI), ID2P(LANG_CODEPAGE_ARABIC), - ID2P(LANG_CODEPAGE_TURKISH), ID2P(LANG_CODEPAGE_LATIN_EXTENDED), - ID2P(LANG_CODEPAGE_CENTRAL_EUROPEAN), ID2P(LANG_CODEPAGE_JAPANESE), - ID2P(LANG_CODEPAGE_SIMPLIFIED), ID2P(LANG_CODEPAGE_KOREAN), - ID2P(LANG_CODEPAGE_TRADITIONAL), ID2P(LANG_CODEPAGE_UTF8)), + /* The order must match with that in unicode.c */ + "iso8859-1,iso8859-7,iso8859-8,cp1251,iso8859-11,cp1256," + "iso8859-9,iso8859-2,cp1250,sjis,gb2312,ksx1001,big5,utf-8", + set_codepage, 14, + ID2P(LANG_CODEPAGE_LATIN1), ID2P(LANG_CODEPAGE_GREEK), + ID2P(LANG_CODEPAGE_HEBREW), ID2P(LANG_CODEPAGE_CYRILLIC), + ID2P(LANG_CODEPAGE_THAI), ID2P(LANG_CODEPAGE_ARABIC), + ID2P(LANG_CODEPAGE_TURKISH), + ID2P(LANG_CODEPAGE_LATIN_EXTENDED), + ID2P(LANG_CODEPAGE_CENTRAL_EUROPEAN), + ID2P(LANG_CODEPAGE_JAPANESE), + ID2P(LANG_CODEPAGE_SIMPLIFIED), ID2P(LANG_CODEPAGE_KOREAN), + ID2P(LANG_CODEPAGE_TRADITIONAL), ID2P(LANG_CODEPAGE_UTF8)), #else /* !HAVE_LCD_BITMAP */ - /* The order must match with that in unicode.c */ - "iso8859-1,iso8859-7,cp1251,iso8859-9,iso8859-2,cp1250,utf-8", - set_codepage, 7, - ID2P(LANG_CODEPAGE_LATIN1), ID2P(LANG_CODEPAGE_GREEK), - ID2P(LANG_CODEPAGE_CYRILLIC), ID2P(LANG_CODEPAGE_TURKISH), - ID2P(LANG_CODEPAGE_LATIN_EXTENDED), ID2P(LANG_CODEPAGE_CENTRAL_EUROPEAN), - ID2P(LANG_CODEPAGE_UTF8)), + /* The order must match with that in unicode.c */ + "iso8859-1,iso8859-7,cp1251,iso8859-9,iso8859-2,cp1250,utf-8", + set_codepage, 7, + ID2P(LANG_CODEPAGE_LATIN1), ID2P(LANG_CODEPAGE_GREEK), + ID2P(LANG_CODEPAGE_CYRILLIC), ID2P(LANG_CODEPAGE_TURKISH), + ID2P(LANG_CODEPAGE_LATIN_EXTENDED), + ID2P(LANG_CODEPAGE_CENTRAL_EUROPEAN), + ID2P(LANG_CODEPAGE_UTF8)), #endif - OFFON_SETTING(0,warnon_erase_dynplaylist, - LANG_WARN_ERASEDYNPLAYLIST_MENU,false, - "warn when erasing dynamic playlist",NULL), + OFFON_SETTING(0, warnon_erase_dynplaylist, LANG_WARN_ERASEDYNPLAYLIST_MENU, + false, "warn when erasing dynamic playlist",NULL), #ifdef HAVE_BACKLIGHT #ifdef HAS_BUTTON_HOLD - CHOICE_SETTING(0, backlight_on_button_hold, - LANG_BACKLIGHT_ON_BUTTON_HOLD, 0, "backlight on button hold", - "normal,off,on", backlight_set_on_button_hold, 3, - ID2P(LANG_NORMAL), ID2P(LANG_OFF), ID2P(LANG_ON)), + CHOICE_SETTING(0, backlight_on_button_hold, LANG_BACKLIGHT_ON_BUTTON_HOLD, + 0, "backlight on button hold", "normal,off,on", + backlight_set_on_button_hold, 3, + ID2P(LANG_NORMAL), ID2P(LANG_OFF), ID2P(LANG_ON)), #endif #ifdef HAVE_LCD_SLEEP STRINGCHOICE_SETTING(0, lcd_sleep_after_backlight_off, - LANG_LCD_SLEEP_AFTER_BACKLIGHT_OFF, 3, - "lcd sleep after backlight off", - "always,never,5,10,15,20,30,45,60,90", lcd_set_sleep_after_backlight_off, - 10, LANG_ALWAYS, LANG_NEVER, TALK_ID(5, UNIT_SEC), TALK_ID(10, UNIT_SEC), - TALK_ID(15, UNIT_SEC), TALK_ID(20, UNIT_SEC), TALK_ID(30, UNIT_SEC), - TALK_ID(45, UNIT_SEC),TALK_ID(60, UNIT_SEC), TALK_ID(90, UNIT_SEC)), + LANG_LCD_SLEEP_AFTER_BACKLIGHT_OFF, 3, + "lcd sleep after backlight off", + "always,never,5,10,15,20,30,45,60,90", + lcd_set_sleep_after_backlight_off, 10, + LANG_ALWAYS, LANG_NEVER, TALK_ID(5, UNIT_SEC), + TALK_ID(10, UNIT_SEC), TALK_ID(15, UNIT_SEC), + TALK_ID(20, UNIT_SEC), TALK_ID(30, UNIT_SEC), + TALK_ID(45, UNIT_SEC),TALK_ID(60, UNIT_SEC), + TALK_ID(90, UNIT_SEC)), #endif #endif /* HAVE_BACKLIGHT */ - OFFON_SETTING(0,hold_lr_for_scroll_in_list,-1,true, - "hold_lr_for_scroll_in_list",NULL), + OFFON_SETTING(0, hold_lr_for_scroll_in_list, -1, true, + "hold_lr_for_scroll_in_list",NULL), #ifdef HAVE_LCD_BITMAP CHOICE_SETTING(0, show_path_in_browser, LANG_SHOW_PATH, SHOW_PATH_OFF, - "show path in browser", "off,current directory,full path", NULL, 3, - ID2P(LANG_OFF), ID2P(LANG_SHOW_PATH_CURRENT), ID2P(LANG_DISPLAY_FULL_PATH)), + "show path in browser", "off,current directory,full path", + NULL, 3, ID2P(LANG_OFF), ID2P(LANG_SHOW_PATH_CURRENT), + ID2P(LANG_DISPLAY_FULL_PATH)), #endif #ifdef HAVE_AGC @@ -1105,54 +1165,59 @@ const struct settings_list settings[] = { #ifdef HAVE_REMOTE_LCD #ifdef HAS_REMOTE_BUTTON_HOLD CHOICE_SETTING(0, remote_backlight_on_button_hold, - LANG_BACKLIGHT_ON_BUTTON_HOLD, 0, "remote backlight on button hold", - "normal,off,on", remote_backlight_set_on_button_hold, 3, - ID2P(LANG_NORMAL), ID2P(LANG_OFF), ID2P(LANG_ON)), + LANG_BACKLIGHT_ON_BUTTON_HOLD, 0, + "remote backlight on button hold", + "normal,off,on", remote_backlight_set_on_button_hold, 3, + ID2P(LANG_NORMAL), ID2P(LANG_OFF), ID2P(LANG_ON)), #endif #endif #ifdef HAVE_HEADPHONE_DETECTION CHOICE_SETTING(0, unplug_mode, LANG_HEADPHONE_UNPLUG, 0, - "pause on headphone unplug", "off,pause,pause and resume", NULL, 3, - ID2P(LANG_OFF), ID2P(LANG_PAUSE), ID2P(LANG_HEADPHONE_UNPLUG_RESUME)), - INT_SETTING(0, unplug_rw, LANG_HEADPHONE_UNPLUG_RW, 0, "rewind duration on pause", - UNIT_SEC, 0, 15, 1, NULL, NULL,NULL) , - OFFON_SETTING(0,unplug_autoresume,LANG_HEADPHONE_UNPLUG_DISABLE_AUTORESUME,false, - "disable autoresume if phones not present",NULL), + "pause on headphone unplug", "off,pause,pause and resume", + NULL, 3, ID2P(LANG_OFF), ID2P(LANG_PAUSE), + ID2P(LANG_HEADPHONE_UNPLUG_RESUME)), + INT_SETTING(0, unplug_rw, LANG_HEADPHONE_UNPLUG_RW, 0, + "rewind duration on pause", UNIT_SEC, 0, 15, 1, NULL, NULL, + NULL), + OFFON_SETTING(0, unplug_autoresume, + LANG_HEADPHONE_UNPLUG_DISABLE_AUTORESUME, false, + "disable autoresume if phones not present",NULL), #endif #if CONFIG_TUNER - CHOICE_SETTING(0, fm_region, LANG_FM_REGION, 0, - "fm_region", "eu,us,jp,kr", set_radio_region, 4, ID2P(LANG_FM_EUROPE), - ID2P(LANG_FM_US), ID2P(LANG_FM_JAPAN), ID2P(LANG_FM_KOREA)), + CHOICE_SETTING(0, fm_region, LANG_FM_REGION, 0, + "fm_region", "eu,us,jp,kr", set_radio_region, 4, + ID2P(LANG_FM_EUROPE), ID2P(LANG_FM_US), + ID2P(LANG_FM_JAPAN), ID2P(LANG_FM_KOREA)), #endif - OFFON_SETTING(0,audioscrobbler,LANG_AUDIOSCROBBLER, - false,"Last.fm Logging",NULL), + OFFON_SETTING(0, audioscrobbler, LANG_AUDIOSCROBBLER, false, + "Last.fm Logging", NULL), #ifdef HAVE_RECORDING {F_T_INT|F_RECSETTING,&global_settings.rec_trigger_type, - LANG_RECORD_TRIGGER_TYPE, - INT(0),"trigger type","stop,pause,nf stp",UNUSED}, + LANG_RECORD_TRIGGER_TYPE, INT(0), + "trigger type","stop,pause,nf stp",UNUSED}, #endif /** settings not in the old config blocks **/ #if CONFIG_TUNER - FILENAME_SETTING(0, fmr_file, "fmr", - "", FMPRESET_PATH "/", ".fmr", MAX_FILENAME+1), + FILENAME_SETTING(0, fmr_file, "fmr", "", + FMPRESET_PATH "/", ".fmr", MAX_FILENAME+1), #endif #ifdef HAVE_LCD_BITMAP FILENAME_SETTING(F_THEMESETTING, font_file, "font", - DEFAULT_FONTNAME, FONT_DIR "/", ".fnt", MAX_FILENAME+1), + DEFAULT_FONTNAME, FONT_DIR "/", ".fnt", MAX_FILENAME+1), #endif FILENAME_SETTING(F_THEMESETTING,wps_file, "wps", - DEFAULT_WPSNAME, WPS_DIR "/", ".wps", MAX_FILENAME+1), + DEFAULT_WPSNAME, WPS_DIR "/", ".wps", MAX_FILENAME+1), FILENAME_SETTING(0,lang_file,"lang","",LANG_DIR "/",".lng",MAX_FILENAME+1), #ifdef HAVE_REMOTE_LCD FILENAME_SETTING(F_THEMESETTING,rwps_file,"rwps", - DEFAULT_WPSNAME, WPS_DIR "/", ".rwps", MAX_FILENAME+1), + DEFAULT_WPSNAME, WPS_DIR "/", ".rwps", MAX_FILENAME+1), #endif #if LCD_DEPTH > 1 FILENAME_SETTING(F_THEMESETTING,backdrop_file,"backdrop", - DEFAULT_BACKDROP, BACKDROP_DIR "/", ".bmp", MAX_FILENAME+1), + DEFAULT_BACKDROP, BACKDROP_DIR "/", ".bmp",MAX_FILENAME+1), #endif #ifdef HAVE_LCD_BITMAP FILENAME_SETTING(0,kbd_file,"kbd","",ROCKBOX_DIR "/",".kbd",MAX_FILENAME+1), @@ -1162,50 +1227,52 @@ const struct settings_list settings[] = { OFFON_SETTING(0,usb_charging,LANG_USB_CHARGING,false,"usb charging",NULL), #endif #endif - OFFON_SETTING(0,cuesheet,LANG_CUESHEET_ENABLE,false,"cuesheet support", NULL), + OFFON_SETTING(0,cuesheet,LANG_CUESHEET_ENABLE,false,"cuesheet support", + NULL), OFFON_SETTING(0,study_mode,LANG_ENABLE_STUDY_MODE,false,"Study mode", NULL), INT_SETTING(0, study_hop_step, LANG_STUDY_HOP_STEP, 5, "Study hop step", UNIT_SEC, 0, 250, 1, NULL, NULL, NULL), CHOICE_SETTING(0, start_in_screen, LANG_START_SCREEN, 1, - "start in screen", "previous,root,files,db,wps,menu," + "start in screen", "previous,root,files,db,wps,menu," #ifdef HAVE_RECORDING - "recording," + "recording," #endif #if CONFIG_TUNER - "radio," + "radio," #endif - "bookmarks" ,NULL, + "bookmarks" ,NULL, #if defined(HAVE_RECORDING) && CONFIG_TUNER - 9, + 9, #elif defined(HAVE_RECORDING) || CONFIG_TUNER /* only one of them */ - 8, + 8, #else - 7, + 7, #endif - ID2P(LANG_PREVIOUS_SCREEN), ID2P(LANG_MAIN_MENU), - ID2P(LANG_DIR_BROWSER), ID2P(LANG_TAGCACHE), - ID2P(LANG_RESUME_PLAYBACK), ID2P(LANG_SETTINGS), + ID2P(LANG_PREVIOUS_SCREEN), ID2P(LANG_MAIN_MENU), + ID2P(LANG_DIR_BROWSER), ID2P(LANG_TAGCACHE), + ID2P(LANG_RESUME_PLAYBACK), ID2P(LANG_SETTINGS), #ifdef HAVE_RECORDING - ID2P(LANG_RECORDING), + ID2P(LANG_RECORDING), #endif #if CONFIG_TUNER - ID2P(LANG_FM_RADIO), + ID2P(LANG_FM_RADIO), #endif - ID2P(LANG_BOOKMARK_MENU_RECENT_BOOKMARKS) - ), + ID2P(LANG_BOOKMARK_MENU_RECENT_BOOKMARKS) + ), SYSTEM_SETTING(NVRAM(1),last_screen,-1), #if defined(HAVE_RTC_ALARM) && \ (defined(HAVE_RECORDING) || CONFIG_TUNER) {F_T_INT, &global_settings.alarm_wake_up_screen, LANG_ALARM_WAKEUP_SCREEN, - INT(ALARM_START_WPS), "alarm wakeup screen", ALARM_SETTING_TEXT, UNUSED}, + INT(ALARM_START_WPS), "alarm wakeup screen", ALARM_SETTING_TEXT,UNUSED}, #endif /* HAVE_RTC_ALARM */ /* Customizable icons */ #ifdef HAVE_LCD_BITMAP FILENAME_SETTING(F_THEMESETTING, icon_file, "iconset", DEFAULT_ICONSET, ICON_DIR "/", ".bmp", MAX_FILENAME+1), - FILENAME_SETTING(F_THEMESETTING, viewers_icon_file, "viewers iconset", DEFAULT_VIEWERS_ICONSET, + FILENAME_SETTING(F_THEMESETTING, viewers_icon_file, "viewers iconset", + DEFAULT_VIEWERS_ICONSET, ICON_DIR "/", ".bmp", MAX_FILENAME+1), #endif #ifdef HAVE_REMOTE_LCD @@ -1227,9 +1294,11 @@ const struct settings_list settings[] = { -1,0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,120), #endif #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS - INT_SETTING(F_NO_WRAP, buttonlight_brightness, LANG_BUTTONLIGHT_BRIGHTNESS, DEFAULT_BRIGHTNESS_SETTING, - "button light brightness",UNIT_INT, MIN_BRIGHTNESS_SETTING, MAX_BRIGHTNESS_SETTING, 1, - NULL, NULL, buttonlight_set_brightness), + INT_SETTING(F_NO_WRAP, buttonlight_brightness, LANG_BUTTONLIGHT_BRIGHTNESS, + DEFAULT_BRIGHTNESS_SETTING, + "button light brightness",UNIT_INT, MIN_BRIGHTNESS_SETTING, + MAX_BRIGHTNESS_SETTING, 1, NULL, NULL, + buttonlight_set_brightness), #endif #ifndef HAVE_SCROLLWHEEL INT_SETTING(0, list_accel_start_delay, LANG_LISTACCEL_START_DELAY, @@ -1245,12 +1314,14 @@ const struct settings_list settings[] = { #if CONFIG_CODEC == SWCODEC /* keyclick */ CHOICE_SETTING(0, keyclick, LANG_KEYCLICK, 0, - "keyclick", "off,weak,moderate,strong", NULL, 4, - ID2P(LANG_OFF), ID2P(LANG_WEAK), ID2P(LANG_MODERATE), ID2P(LANG_STRONG)), - OFFON_SETTING(0, keyclick_repeats, LANG_KEYCLICK_REPEATS, false, "keyclick repeats", NULL), + "keyclick", "off,weak,moderate,strong", NULL, 4, + ID2P(LANG_OFF), ID2P(LANG_WEAK), ID2P(LANG_MODERATE), + ID2P(LANG_STRONG)), + OFFON_SETTING(0, keyclick_repeats, LANG_KEYCLICK_REPEATS, false, + "keyclick repeats", NULL), #endif /* CONFIG_CODEC == SWCODEC */ FILENAME_SETTING(0, playlist_catalog_dir, "playlist catalog directory", - PLAYLIST_CATALOG_DEFAULT_DIR, NULL, NULL, MAX_FILENAME+1), + PLAYLIST_CATALOG_DEFAULT_DIR, NULL, NULL, MAX_FILENAME+1), }; const int nb_settings = sizeof(settings)/sizeof(*settings);