summaryrefslogtreecommitdiff
path: root/apps/settings_list.c
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2007-02-17 14:02:48 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2007-02-17 14:02:48 +0000
commit40a253d46411d7fb88483bddbfbae8c25c9bc861 (patch)
tree8d6fb05645afbc5d89b17cc9d0f54e9277c490fc /apps/settings_list.c
parent14ba91eaa9a94411457cc396a4c7c5e39e63a00a (diff)
downloadrockbox-40a253d46411d7fb88483bddbfbae8c25c9bc861.tar.gz
rockbox-40a253d46411d7fb88483bddbfbae8c25c9bc861.zip
Convert the Display menu to the new system.
http://forums.rockbox.org/index.php?topic=8703.0 for bugs... git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12351 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/settings_list.c')
-rw-r--r--apps/settings_list.c265
1 files changed, 196 insertions, 69 deletions
diff --git a/apps/settings_list.c b/apps/settings_list.c
index cf77efaf6b..f07d6346b4 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -24,6 +24,8 @@
24#include "lang.h" 24#include "lang.h"
25#include "talk.h" 25#include "talk.h"
26#include "lcd.h" 26#include "lcd.h"
27#include "button.h"
28#include "backlight.h"
27#include "settings.h" 29#include "settings.h"
28#include "settings_list.h" 30#include "settings_list.h"
29#include "sound.h" 31#include "sound.h"
@@ -33,6 +35,13 @@
33#include "audio.h" 35#include "audio.h"
34#include "power.h" 36#include "power.h"
35#include "powermgmt.h" 37#include "powermgmt.h"
38#include "kernel.h"
39#include "lcd-remote.h"
40#include "list.h"
41#include "rbunicode.h"
42#ifdef HAVE_LCD_BITMAP
43#include "peakmeter.h"
44#endif
36 45
37/* some sets of values which are used more than once, to save memory */ 46/* some sets of values which are used more than once, to save memory */
38static const char off_on[] = "off,on"; 47static const char off_on[] = "off,on";
@@ -81,6 +90,27 @@ static const char trig_durations_conf [] =
81#if defined(CONFIG_BACKLIGHT) 90#if defined(CONFIG_BACKLIGHT)
82static const char backlight_times_conf [] = 91static const char backlight_times_conf [] =
83 "off,on,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90"; 92 "off,on,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90";
93static const int backlight_times[] =
94 {-1, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 45, 60, 90};
95static void backlight_formatter(char *buffer, int buffer_size,
96 int val, const char *unit)
97{
98 (void)unit;
99 if (val == 0)
100 strcpy(buffer, str(LANG_OFF));
101 else if (val == 1)
102 strcpy(buffer, str(LANG_ON));
103 else
104 snprintf(buffer, buffer_size, "%d s", backlight_times[val]);
105}
106static long backlight_getlang(int value)
107{
108 if (value == 0)
109 return LANG_OFF;
110 else if (value == 1)
111 return LANG_ON;
112 return TALK_ID(backlight_times[value], UNIT_SEC);
113}
84#endif 114#endif
85/* ffwd/rewind and scan acceleration stuff */ 115/* ffwd/rewind and scan acceleration stuff */
86static int ff_rewind_min_stepvals[] = {1,2,3,4,5,6,8,10,15,20,25,30,45,60}; 116static int ff_rewind_min_stepvals[] = {1,2,3,4,5,6,8,10,15,20,25,30,45,60};
@@ -267,6 +297,58 @@ static void set_superbass(bool value)
267 sound_set_superbass((int)value); 297 sound_set_superbass((int)value);
268} 298}
269#endif 299#endif
300
301static void scrolldelay_format(char* buffer, int buffer_size, int value,
302 const char* unit)
303{
304 (void)unit;
305 snprintf(buffer, buffer_size, "%d ms", value* (HZ/100));
306}
307static long scrolldelay_getlang(int value)
308{
309 return TALK_ID(value* (HZ/100), UNIT_MS);
310}
311#ifdef HAVE_LCD_CHARCELLS
312static void jumpscroll_format(char* buffer, int buffer_size, int value,
313 const char* unit)
314{
315 (void)unit;
316 switch (value)
317 {
318 case 0:
319 strcpy(buffer, str(LANG_OFF));
320 break;
321 case 1:
322 strcpy(buffer, str(LANG_ONE_TIME));
323 break;
324 case 2:
325 case 3:
326 case 4:
327 snprintf(buffer, buffer_size, "%d", value);
328 break;
329 case 5:
330 strcpy(buffer, str(LANG_ALWAYS));
331 break;
332 }
333}
334static long jumpscroll_getlang(int value)
335{
336 switch (value)
337 {
338 case 0:
339 return LANG_OFF;
340 case 1:
341 return LANG_ONE_TIME;
342 case 2:
343 case 3:
344 case 4:
345 return TALK_ID(2, UNIT_INT);
346 case 5:
347 return LANG_ALWAYS;
348 }
349 return -1;
350}
351#endif /* HAVE_LCD_CHARCELLS */
270 352
271const struct settings_list settings[] = { 353const struct settings_list settings[] = {
272 /* sound settings */ 354 /* sound settings */
@@ -321,33 +403,43 @@ const struct settings_list settings[] = {
321 ), /* CHOICE_SETTING( repeat_mode ) */ 403 ), /* CHOICE_SETTING( repeat_mode ) */
322 /* LCD */ 404 /* LCD */
323#ifdef HAVE_LCD_CONTRAST 405#ifdef HAVE_LCD_CONTRAST
406 /* its easier to leave this one un-macro()ed for the time being */
324 {F_T_INT|F_DEF_ISFUNC, &global_settings.contrast, LANG_CONTRAST, 407 {F_T_INT|F_DEF_ISFUNC, &global_settings.contrast, LANG_CONTRAST,
325 FUNCTYPE(lcd_default_contrast), 408 FUNCTYPE(lcd_default_contrast),
326 "contrast", NULL , UNUSED}, 409 "contrast", NULL , {.int_setting = (struct int_setting[]){
410 { lcd_set_contrast, UNIT_INT, MIN_CONTRAST_SETTING,
411 MAX_CONTRAST_SETTING, 1, NULL, NULL}}}},
327#endif 412#endif
328#ifdef CONFIG_BACKLIGHT 413#ifdef CONFIG_BACKLIGHT
329 {F_T_INT, &global_settings.backlight_timeout, LANG_BACKLIGHT, INT(6), 414 INT_SETTING_W_CFGVALS(0, backlight_timeout, LANG_BACKLIGHT, 6,
330 "backlight timeout",backlight_times_conf , UNUSED}, 415 "backlight timeout", backlight_times_conf, UNIT_SEC,
416 0, 18, 1, backlight_formatter, backlight_getlang,
417 backlight_set_timeout),
331#ifdef CONFIG_CHARGING 418#ifdef CONFIG_CHARGING
332 {F_T_INT, &global_settings.backlight_timeout_plugged, LANG_BACKLIGHT_ON_WHEN_CHARGING, 419 INT_SETTING_W_CFGVALS(0, backlight_timeout_plugged, LANG_BACKLIGHT, 11,
333 INT(11), "backlight timeout plugged",backlight_times_conf , UNUSED}, 420 "backlight timeout plugged", backlight_times_conf, UNIT_SEC,
421 0, 18, 1, backlight_formatter, backlight_getlang,
422 backlight_set_timeout_plugged),
334#endif 423#endif
335#endif /* CONFIG_BACKLIGHT */ 424#endif /* CONFIG_BACKLIGHT */
336#ifdef HAVE_LCD_BITMAP 425#ifdef HAVE_LCD_BITMAP
337 OFFON_SETTING(0,invert, LANG_INVERT, false,"invert", NULL), 426 BOOL_SETTING(0, invert, LANG_INVERT, false ,"invert", off_on,
427 LANG_INVERT_LCD_INVERSE, LANG_INVERT_LCD_NORMAL, lcd_set_invert_display),
338 OFFON_SETTING(0,flip_display, LANG_FLIP_DISPLAY, false,"flip display", NULL), 428 OFFON_SETTING(0,flip_display, LANG_FLIP_DISPLAY, false,"flip display", NULL),
339 /* display */ 429 /* display */
340 OFFON_SETTING(0,invert_cursor, LANG_INVERT_CURSOR, 430 BOOL_SETTING(F_TEMPVAR, invert_cursor, LANG_INVERT_CURSOR, true ,"invert cursor", off_on,
341 true,"invert cursor", NULL), 431 LANG_INVERT_CURSOR_BAR, LANG_INVERT_CURSOR_POINTER, lcd_set_invert_display),
342 OFFON_SETTING(F_THEMESETTING,statusbar, LANG_STATUS_BAR, true,"statusbar", NULL), 432 OFFON_SETTING(F_THEMESETTING,statusbar, LANG_STATUS_BAR, true,"statusbar", NULL),
343 OFFON_SETTING(0,scrollbar, LANG_SCROLL_BAR, true,"scrollbar", NULL), 433 OFFON_SETTING(0,scrollbar, LANG_SCROLL_BAR, true,"scrollbar", NULL),
344#if CONFIG_KEYPAD == RECORDER_PAD 434#if CONFIG_KEYPAD == RECORDER_PAD
345 OFFON_SETTING(0,buttonbar, LANG_BUTTON_BAR ,true,"buttonbar", NULL), 435 OFFON_SETTING(0,buttonbar, LANG_BUTTON_BAR ,true,"buttonbar", NULL),
346#endif 436#endif
347 {F_T_INT,&global_settings.volume_type,LANG_VOLUME_DISPLAY, INT(0), 437 CHOICE_SETTING(0, volume_type, LANG_VOLUME_DISPLAY, 0,
348 "volume display",graphic_numeric,UNUSED}, 438 "volume display", graphic_numeric, NULL, 2,
349 {F_T_INT,&global_settings.battery_display, LANG_BATTERY_DISPLAY, INT(0), 439 ID2P(LANG_DISPLAY_GRAPHIC), ID2P(LANG_DISPLAY_NUMERIC)),
350 "battery display",graphic_numeric,UNUSED}, 440 CHOICE_SETTING(0, battery_display, LANG_BATTERY_DISPLAY, 0,
441 "battery display", graphic_numeric, NULL, 2,
442 ID2P(LANG_DISPLAY_GRAPHIC), ID2P(LANG_DISPLAY_NUMERIC)),
351 CHOICE_SETTING(0, timeformat, LANG_TIMEFORMAT, 0, 443 CHOICE_SETTING(0, timeformat, LANG_TIMEFORMAT, 0,
352 "time format", "24hour,12hour", NULL, 2, 444 "time format", "24hour,12hour", NULL, 2,
353 ID2P(LANG_24_HOUR_CLOCK), ID2P(LANG_12_HOUR_CLOCK)), 445 ID2P(LANG_24_HOUR_CLOCK), ID2P(LANG_12_HOUR_CLOCK)),
@@ -400,19 +492,22 @@ const struct settings_list settings[] = {
400#endif 492#endif
401#ifdef HAVE_REMOTE_LCD 493#ifdef HAVE_REMOTE_LCD
402 /* remote lcd */ 494 /* remote lcd */
403 {F_T_INT,&global_settings.remote_contrast, LANG_CONTRAST, 495 INT_SETTING(0, remote_contrast, LANG_CONTRAST, DEFAULT_REMOTE_CONTRAST_SETTING,
404 INT(DEFAULT_REMOTE_CONTRAST_SETTING), 496 "remote contrast", UNIT_INT, MIN_REMOTE_CONTRAST_SETTING,
405 "remote contrast",NULL,UNUSED}, 497 MIN_REMOTE_CONTRAST_SETTING, 1, NULL, NULL, lcd_remote_set_contrast),
406 OFFON_SETTING(0,remote_invert, LANG_INVERT, 498 BOOL_SETTING(0, remote_invert, LANG_INVERT, false ,"remote invert", off_on,
407 false,"remote invert", NULL), 499 LANG_INVERT_LCD_INVERSE, LANG_INVERT_LCD_NORMAL, lcd_remote_set_invert_display),
408 OFFON_SETTING(0,remote_flip_display, LANG_FLIP_DISPLAY, 500 OFFON_SETTING(0,remote_flip_display, LANG_FLIP_DISPLAY,
409 false,"remote flip display", NULL), 501 false,"remote flip display", NULL),
410 {F_T_INT,&global_settings.remote_backlight_timeout, LANG_BACKLIGHT, INT(6), 502 INT_SETTING_W_CFGVALS(0, remote_backlight_timeout, LANG_BACKLIGHT, 6,
411 "remote backlight timeout",backlight_times_conf,UNUSED}, 503 "remote backlight timeout", backlight_times_conf, UNIT_SEC,
504 0, 18, 1, backlight_formatter, backlight_getlang,
505 remote_backlight_set_timeout),
412#ifdef CONFIG_CHARGING 506#ifdef CONFIG_CHARGING
413 {F_T_INT,&global_settings.remote_backlight_timeout_plugged, 507 INT_SETTING_W_CFGVALS(0, remote_backlight_timeout_plugged, LANG_BACKLIGHT, 11,
414 LANG_BACKLIGHT_ON_WHEN_CHARGING, INT(11), 508 "remote backlight timeout plugged", backlight_times_conf, UNIT_SEC,
415 "remote backlight timeout plugged",backlight_times_conf,UNUSED}, 509 0, 18, 1, backlight_formatter, backlight_getlang,
510 remote_backlight_set_timeout_plugged),
416#endif 511#endif
417#ifdef HAVE_REMOTE_LCD_TICKING 512#ifdef HAVE_REMOTE_LCD_TICKING
418 OFFON_SETTING(0,remote_reduce_ticking, LANG_REDUCE_TICKING, 513 OFFON_SETTING(0,remote_reduce_ticking, LANG_REDUCE_TICKING,
@@ -442,43 +537,53 @@ const struct settings_list settings[] = {
442#endif 537#endif
443#endif /* CONFIG_BACKLIGHT */ 538#endif /* CONFIG_BACKLIGHT */
444#ifdef HAVE_BACKLIGHT_BRIGHTNESS 539#ifdef HAVE_BACKLIGHT_BRIGHTNESS
445 {F_T_INT,&global_settings.brightness,LANG_BRIGHTNESS, 540 INT_SETTING(0, brightness, LANG_BRIGHTNESS, DEFAULT_BRIGHTNESS_SETTING,
446 INT(DEFAULT_BRIGHTNESS_SETTING), "brightness", NULL ,UNUSED}, 541 "brightness",UNIT_INT, MIN_BRIGHTNESS_SETTING, MAX_BRIGHTNESS_SETTING, 1,
542 NULL, NULL, backlight_set_brightness),
447#endif 543#endif
448#ifdef HAVE_BACKLIGHT_PWM_FADING 544#if defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR)
449 /* backlight fading */ 545 /* backlight fading */
450 {F_T_INT,&global_settings.backlight_fade_in, LANG_BACKLIGHT_FADE_IN, INT(1), 546 STRINGCHOICE_SETTING(0,backlight_fade_in, LANG_BACKLIGHT_FADE_IN, 1,
451 "backlight fade in","off,500ms,1s,2s",UNUSED}, 547 "backlight fade in","off,500ms,1s,2s", backlight_set_fade_in, 4,
452 {F_T_INT,&global_settings.backlight_fade_out, LANG_BACKLIGHT_FADE_OUT, INT(1), 548 LANG_OFF, TALK_ID(500, UNIT_MS),
453 "backlight fade out","off,500ms,1s,2s,3s,4s,5s,10s",UNUSED}, 549 TALK_ID(1, UNIT_SEC), TALK_ID(2, UNIT_SEC)),
454#endif 550 STRINGCHOICE_SETTING(0,backlight_fade_out, LANG_BACKLIGHT_FADE_OUT, 1,
455 {F_T_INT,&global_settings.scroll_speed, LANG_SCROLL_SPEED , 551 "backlight fade out","off,500ms,1s,2s", backlight_set_fade_out, 4,
456 INT(9),"scroll speed",NULL,UNUSED}, 552 LANG_OFF, TALK_ID(500, UNIT_MS),
457 {F_T_INT,&global_settings.scroll_delay, LANG_SCROLL_DELAY, 553 TALK_ID(1, UNIT_SEC), TALK_ID(2, UNIT_SEC)),
458 INT(100),"scroll delay",NULL,UNUSED}, 554#endif
459 {F_T_INT,&global_settings.bidir_limit, LANG_BIDIR_SCROLL, 555 INT_SETTING(0, scroll_speed, LANG_SCROLL_SPEED, 9,"scroll speed",
460 INT(50),"bidir limit",NULL,UNUSED}, 556 UNIT_INT, 0, 15, 1, NULL, NULL, lcd_scroll_speed),
557 INT_SETTING(0, scroll_delay, LANG_SCROLL_DELAY, 100, "scroll delay",
558 UNIT_MS, 0, 2500, 100, scrolldelay_format,
559 scrolldelay_getlang, lcd_scroll_delay) ,
560 INT_SETTING(0, bidir_limit, LANG_BIDIR_SCROLL, 50, "bidir limit",
561 UNIT_PERCENT, 0, 200, 25, NULL, NULL, lcd_bidir_scroll),
461#ifdef HAVE_REMOTE_LCD 562#ifdef HAVE_REMOTE_LCD
462 {F_T_INT,&global_settings.remote_scroll_speed,LANG_SCROLL_SPEED,INT(9), 563 INT_SETTING(0, remote_scroll_speed, LANG_SCROLL_SPEED, 9, "remote scroll speed",
463 "remote scroll speed",NULL,UNUSED}, 564 UNIT_INT, 0,15, 1, NULL, NULL, lcd_remote_scroll_speed),
464 {F_T_INT,&global_settings.remote_scroll_step,LANG_SCROLL_STEP,INT(6), 565 INT_SETTING(0, remote_scroll_step, LANG_SCROLL_STEP, 6, "remote scroll step",
465 "remote scroll step",NULL,UNUSED}, 566 UNIT_PIXEL, 1, LCD_REMOTE_WIDTH, 1, NULL, NULL, lcd_remote_scroll_step),
466 {F_T_INT,&global_settings.remote_scroll_delay,LANG_SCROLL_DELAY,INT(100), 567 INT_SETTING(0, remote_scroll_delay, LANG_SCROLL_DELAY, 100, "remote scroll delay",
467 "remote scroll delay",NULL,UNUSED}, 568 UNIT_MS, 0, 2500, 100, scrolldelay_format, scrolldelay_getlang, lcd_remote_scroll_delay),
468 {F_T_INT,&global_settings.remote_bidir_limit,LANG_BIDIR_SCROLL,INT(50), 569 INT_SETTING(0, remote_bidir_limit, LANG_BIDIR_SCROLL, 50, "remote bidir limit",
469 "remote bidir limit",NULL,UNUSED}, 570 UNIT_PERCENT, 0, 200, 25, NULL, NULL, lcd_remote_bidir_scroll),
470#endif 571#endif
471#ifdef HAVE_LCD_BITMAP 572#ifdef HAVE_LCD_BITMAP
472 OFFON_SETTING(0,offset_out_of_view,LANG_SCREEN_SCROLL_VIEW, 573 OFFON_SETTING(0, offset_out_of_view, LANG_SCREEN_SCROLL_VIEW,
473 false,"Screen Scrolls Out Of View",NULL), 574 false, "Screen Scrolls Out Of View", NULL),
474 {F_T_INT,&global_settings.scroll_step,LANG_SCROLL_STEP,INT(6),"scroll step",NULL,UNUSED}, 575 INT_SETTING(0, scroll_step, LANG_SCROLL_STEP, 6, "scroll step",
475 {F_T_INT,&global_settings.screen_scroll_step,LANG_SCREEN_SCROLL_STEP, 576 UNIT_PIXEL, 1, LCD_WIDTH, 1, NULL, NULL, lcd_scroll_step),
476 INT(16),"screen scroll step",NULL,UNUSED}, 577 INT_SETTING(0, screen_scroll_step, LANG_SCREEN_SCROLL_STEP,
578 16, "screen scroll step",
579 UNIT_PIXEL, 1, LCD_WIDTH, 1, NULL, NULL, NULL),
477#endif /* HAVE_LCD_BITMAP */ 580#endif /* HAVE_LCD_BITMAP */
478#ifdef HAVE_LCD_CHARCELLS 581#ifdef HAVE_LCD_CHARCELLS
479 {F_T_INT,&global_settings.jump_scroll,LANG_JUMP_SCROLL,INT(0),"jump scroll",NULL,UNUSED}, 582 INT_SETTING(0, jump_scroll, LANG_JUMP_SCROLL, 0, "jump scroll",
480 {F_T_INT,&global_settings.jump_scroll_delay,LANG_JUMP_SCROLL_DELAY, 583 UNIT_INT, 0, 5, 1, jumpscroll_format, jumpscroll_getlang, lcd_jump_scroll),
481 INT(50),"jump scroll delay",NULL,UNUSED}, 584 INT_SETTING(0, jump_scroll_delay, LANG_JUMP_SCROLL_DELAY, 50, "jump scroll delay",
585 UNIT_MS, 0, 2500, 100, scrolldelay_format,
586 scrolldelay_getlang, lcd_jump_scroll_delay),
482#endif 587#endif
483 OFFON_SETTING(0,scroll_paginated,LANG_SCROLL_PAGINATED, 588 OFFON_SETTING(0,scroll_paginated,LANG_SCROLL_PAGINATED,
484 false,"scroll paginated",NULL), 589 false,"scroll paginated",NULL),
@@ -552,15 +657,24 @@ const struct settings_list settings[] = {
552 ID2P(LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY)), 657 ID2P(LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY)),
553#ifdef HAVE_LCD_BITMAP 658#ifdef HAVE_LCD_BITMAP
554 /* peak meter */ 659 /* peak meter */
555 {F_T_INT, &global_settings.peak_meter_clip_hold, LANG_PM_CLIP_HOLD, 660 STRINGCHOICE_SETTING(0, peak_meter_clip_hold, LANG_PM_CLIP_HOLD, 16,
556 INT(16), "peak meter clip hold", 661 "peak meter clip hold",
557 "on,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,2min" 662 "on,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,2min"
558 ",3min,5min,10min,20min,45min,90min", UNUSED}, 663 ",3min,5min,10min,20min,45min,90min", peak_meter_set_clip_hold,
664 25, LANG_PM_ETERNAL,
665 TALK_ID(1, UNIT_SEC), TALK_ID(2, UNIT_SEC), TALK_ID(3, UNIT_SEC),
666 TALK_ID(4, UNIT_SEC), TALK_ID(5, UNIT_SEC), TALK_ID(6, UNIT_SEC),
667 TALK_ID(7, UNIT_SEC), TALK_ID(8, UNIT_SEC), TALK_ID(9, UNIT_SEC),
668 TALK_ID(10, UNIT_SEC), TALK_ID(15, UNIT_SEC), TALK_ID(20, UNIT_SEC),
669 TALK_ID(25, UNIT_SEC), TALK_ID(30, UNIT_SEC), TALK_ID(45, UNIT_SEC),
670 TALK_ID(60, UNIT_SEC), TALK_ID(90, UNIT_SEC), TALK_ID(2, UNIT_MIN),
671 TALK_ID(3, UNIT_MIN), TALK_ID(5, UNIT_MIN), TALK_ID(10, UNIT_MIN),
672 TALK_ID(20, UNIT_MIN), TALK_ID(45, UNIT_MIN), TALK_ID(90, UNIT_MIN)),
559 {F_T_INT,&global_settings.peak_meter_hold, LANG_PM_PEAK_HOLD, 673 {F_T_INT,&global_settings.peak_meter_hold, LANG_PM_PEAK_HOLD,
560 INT(3),"peak meter hold", 674 INT(3),"peak meter hold",
561 "off,200ms,300ms,500ms,1,2,3,4,5,6,7,8,9,10,15,20,30,1min",UNUSED}, 675 "off,200ms,300ms,500ms,1,2,3,4,5,6,7,8,9,10,15,20,30,1min",UNUSED},
562 {F_T_INT,&global_settings.peak_meter_release,LANG_PM_RELEASE, 676 INT_SETTING(0, peak_meter_release, LANG_PM_RELEASE, 8, "peak meter release",
563 INT(8),"peak meter release",NULL,UNUSED}, 677 LANG_PM_UNITS_PER_READ, 1, 0x7e1, 1, NULL, NULL,NULL),
564 OFFON_SETTING(0,peak_meter_dbfs,LANG_PM_DBFS,true,"peak meter dbfs",NULL), 678 OFFON_SETTING(0,peak_meter_dbfs,LANG_PM_DBFS,true,"peak meter dbfs",NULL),
565 {F_T_INT,&global_settings.peak_meter_min,LANG_PM_MIN,INT(60),"peak meter min",NULL,UNUSED}, 679 {F_T_INT,&global_settings.peak_meter_min,LANG_PM_MIN,INT(60),"peak meter min",NULL,UNUSED},
566 {F_T_INT,&global_settings.peak_meter_max,LANG_PM_MAX,INT(0),"peak meter max",NULL,UNUSED}, 680 {F_T_INT,&global_settings.peak_meter_max,LANG_PM_MAX,INT(0),"peak meter max",NULL,UNUSED},
@@ -794,11 +908,18 @@ const struct settings_list settings[] = {
794 OFFON_SETTING(0,tagcache_autoupdate, 908 OFFON_SETTING(0,tagcache_autoupdate,
795 LANG_TAGCACHE_AUTOUPDATE,false,"tagcache_autoupdate",NULL), 909 LANG_TAGCACHE_AUTOUPDATE,false,"tagcache_autoupdate",NULL),
796#endif 910#endif
797 911 CHOICE_SETTING(0, default_codepage, LANG_DEFAULT_CODEPAGE, 0,
798 {F_T_INT,&global_settings.default_codepage,LANG_DEFAULT_CODEPAGE, 912 "default codepage",
799 INT(0),"default codepage",
800 "iso8859-1,iso8859-7,iso8859-8,cp1251,iso8859-11,cp1256," 913 "iso8859-1,iso8859-7,iso8859-8,cp1251,iso8859-11,cp1256,"
801 "iso8859-9,iso8859-2,sjis,gb2312,ksx1001,big5,utf-8,cp1256",UNUSED}, 914 "iso8859-9,iso8859-2,sjis,gb2312,ksx1001,big5,utf-8,cp1256",
915 set_codepage, 13,
916 ID2P(LANG_CODEPAGE_LATIN1), ID2P(LANG_CODEPAGE_GREEK),
917 ID2P(LANG_CODEPAGE_HEBREW), ID2P(LANG_CODEPAGE_CYRILLIC),
918 ID2P(LANG_CODEPAGE_THAI), ID2P(LANG_CODEPAGE_ARABIC),
919 ID2P(LANG_CODEPAGE_TURKISH), ID2P(LANG_CODEPAGE_LATIN_EXTENDED),
920 ID2P(LANG_CODEPAGE_JAPANESE), ID2P(LANG_CODEPAGE_SIMPLIFIED),
921 ID2P(LANG_CODEPAGE_KOREAN),
922 ID2P(LANG_CODEPAGE_TRADITIONAL), ID2P(LANG_CODEPAGE_UTF8)),
802 923
803 OFFON_SETTING(0,warnon_erase_dynplaylist, 924 OFFON_SETTING(0,warnon_erase_dynplaylist,
804 LANG_WARN_ERASEDYNPLAYLIST_MENU,false, 925 LANG_WARN_ERASEDYNPLAYLIST_MENU,false,
@@ -806,15 +927,20 @@ const struct settings_list settings[] = {
806 927
807#ifdef CONFIG_BACKLIGHT 928#ifdef CONFIG_BACKLIGHT
808#ifdef HAS_BUTTON_HOLD 929#ifdef HAS_BUTTON_HOLD
809 {F_T_INT,&global_settings.backlight_on_button_hold,LANG_BACKLIGHT_ON_BUTTON_HOLD,INT(0), 930 CHOICE_SETTING(0, backlight_on_button_hold,
810 "backlight on button hold","normal,off,on",UNUSED}, 931 LANG_BACKLIGHT_ON_BUTTON_HOLD, 0, "backlight on button hold",
932 "normal,off,on", backlight_set_on_button_hold, 3,
933 ID2P(LANG_BACKLIGHT_ON_BUTTON_HOLD_NORMAL), ID2P(LANG_OFF), ID2P(LANG_ON)),
811#endif 934#endif
812 935
813#ifdef HAVE_LCD_SLEEP 936#ifdef HAVE_LCD_SLEEP
814 {F_T_INT,&global_settings.lcd_sleep_after_backlight_off, 937 STRINGCHOICE_SETTING(0, lcd_sleep_after_backlight_off,
815 LANG_LCD_SLEEP_AFTER_BACKLIGHT_OFF,INT(3), 938 LANG_LCD_SLEEP_AFTER_BACKLIGHT_OFF, 3,
816 "lcd sleep after backlight off", 939 "lcd sleep after backlight off",
817 "always,never,5,10,15,20,30,45,60,90",UNUSED}, 940 "always,never,5,10,15,20,30,45,60,90", lcd_set_sleep_after_backlight_off,
941 10, LANG_ALWAYS, LANG_NEVER, TALK_ID(5, UNIT_SEC), TALK_ID(10, UNIT_SEC),
942 TALK_ID(15, UNIT_SEC), TALK_ID(20, UNIT_SEC), TALK_ID(30, UNIT_SEC),
943 TALK_ID(45, UNIT_SEC),TALK_ID(60, UNIT_SEC), TALK_ID(90, UNIT_SEC)),
818#endif 944#endif
819#endif /* CONFIG_BACKLIGHT */ 945#endif /* CONFIG_BACKLIGHT */
820 946
@@ -880,9 +1006,10 @@ const struct settings_list settings[] = {
880 1006
881#ifdef HAVE_REMOTE_LCD 1007#ifdef HAVE_REMOTE_LCD
882#ifdef HAS_REMOTE_BUTTON_HOLD 1008#ifdef HAS_REMOTE_BUTTON_HOLD
883 {F_T_INT,&global_settings.remote_backlight_on_button_hold, 1009 CHOICE_SETTING(0, remote_backlight_on_button_hold,
884 LANG_BACKLIGHT_ON_BUTTON_HOLD,INT(0), 1010 LANG_BACKLIGHT_ON_BUTTON_HOLD, 0, "remote backlight on button hold",
885 "remote backlight on button hold","normal,off,on",UNUSED}, 1011 "normal,off,on", remote_backlight_set_on_button_hold, 3,
1012 ID2P(LANG_BACKLIGHT_ON_BUTTON_HOLD_NORMAL), ID2P(LANG_OFF), ID2P(LANG_ON)),
886#endif 1013#endif
887#endif 1014#endif
888#ifdef HAVE_HEADPHONE_DETECTION 1015#ifdef HAVE_HEADPHONE_DETECTION