summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/menus/main_menu.c2
-rw-r--r--apps/menus/recording_menu.c21
-rw-r--r--apps/settings.c23
-rw-r--r--apps/settings.h14
-rw-r--r--apps/settings_list.c70
-rw-r--r--apps/settings_list.h7
6 files changed, 97 insertions, 40 deletions
diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c
index c118dac444..1632c438dd 100644
--- a/apps/menus/main_menu.c
+++ b/apps/menus/main_menu.c
@@ -54,7 +54,7 @@ struct browse_folder_info {
54}; 54};
55static struct browse_folder_info theme = {THEME_DIR, SHOW_CFG}; 55static struct browse_folder_info theme = {THEME_DIR, SHOW_CFG};
56static struct browse_folder_info config = {ROCKBOX_DIR, SHOW_CFG}; 56static struct browse_folder_info config = {ROCKBOX_DIR, SHOW_CFG};
57static int browse_folder(void *param) 57int browse_folder(void *param)
58{ 58{
59 const struct browse_folder_info *info = 59 const struct browse_folder_info *info =
60 (const struct browse_folder_info*)param; 60 (const struct browse_folder_info*)param;
diff --git a/apps/menus/recording_menu.c b/apps/menus/recording_menu.c
index 62af2f94fe..50b49c9db9 100644
--- a/apps/menus/recording_menu.c
+++ b/apps/menus/recording_menu.c
@@ -62,6 +62,7 @@
62#endif 62#endif
63#include "action.h" 63#include "action.h"
64 64
65
65static bool no_source_in_menu = true; 66static bool no_source_in_menu = true;
66int recmenu_callback(int action,const struct menu_item_ex *this_item); 67int recmenu_callback(int action,const struct menu_item_ex *this_item);
67 68
@@ -803,9 +804,24 @@ MENUITEM_FUNCTION(rectrigger_item, 0, ID2P(LANG_RECORD_TRIGGER),
803 804
804 805
805 806
807/* from main_menu.c */
808struct browse_folder_info {
809 const char* dir;
810 int show_options;
811};
812static struct browse_folder_info rec_config_browse = {RECPRESETS_DIR, SHOW_CFG};
813int browse_folder(void *param);
814MENUITEM_FUNCTION(browse_recconfigs, MENU_FUNC_USEPARAM, ID2P(LANG_CUSTOM_CFG),
815 browse_folder, (void*)&rec_config_browse, NULL, Icon_Config);
816static int write_settings_file(void)
817{
818 return settings_save_config(SETTINGS_SAVE_RECPRESETS);
819}
820MENUITEM_FUNCTION(save_recpresets_item, 0, ID2P(LANG_SAVE_SETTINGS),
821 write_settings_file, NULL, NULL, Icon_Config);
806 822
807 823MAKE_MENU(recording_setting_menu, ID2P(LANG_RECORDING_SETTINGS),
808MAKE_MENU(recording_setting_menu, ID2P(LANG_RECORDING_SETTINGS), NULL, Icon_Recording, 824 NULL, Icon_Recording,
809#if CONFIG_CODEC == MAS3587F 825#if CONFIG_CODEC == MAS3587F
810 &rec_quality, 826 &rec_quality,
811#endif 827#endif
@@ -827,6 +843,7 @@ MAKE_MENU(recording_setting_menu, ID2P(LANG_RECORDING_SETTINGS), NULL, Icon_Reco
827#ifdef HAVE_AGC 843#ifdef HAVE_AGC
828 &agc_preset, &agc_cliptime, 844 &agc_preset, &agc_cliptime,
829#endif 845#endif
846 &browse_recconfigs, &save_recpresets_item
830); 847);
831 848
832bool recording_menu(bool no_source) 849bool recording_menu(bool no_source)
diff --git a/apps/settings.c b/apps/settings.c
index aa8afe472c..2bae9ae1b1 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -459,7 +459,11 @@ static bool settings_write_config(char* filename, int options)
459 else if ((options == SETTINGS_SAVE_THEME) && 459 else if ((options == SETTINGS_SAVE_THEME) &&
460 ((settings[i].flags&F_THEMESETTING) == 0)) 460 ((settings[i].flags&F_THEMESETTING) == 0))
461 continue; 461 continue;
462 462#ifdef HAVE_RECORDING
463 else if ((options == SETTINGS_SAVE_RECPRESETS) &&
464 ((settings[i].flags&F_RECSETTING) == 0))
465 continue;
466#endif
463 switch (settings[i].flags&F_T_MASK) 467 switch (settings[i].flags&F_T_MASK)
464 { 468 {
465 case F_T_INT: 469 case F_T_INT:
@@ -582,8 +586,21 @@ int settings_save( void )
582bool settings_save_config(int options) 586bool settings_save_config(int options)
583{ 587{
584 char filename[MAX_PATH]; 588 char filename[MAX_PATH];
585 589 char *folder;
586 create_numbered_filename(filename, ROCKBOX_DIR, "config", ".cfg", 2 590 switch (options)
591 {
592 case SETTINGS_SAVE_THEME:
593 folder = THEME_DIR;
594 break;
595#ifdef HAVE_RECORDING
596 case SETTINGS_SAVE_RECPRESETS:
597 folder = RECPRESETS_DIR;
598 break;
599#endif
600 default:
601 folder = ROCKBOX_DIR;
602 }
603 create_numbered_filename(filename, folder, "config", ".cfg", 2
587 IF_CNFN_NUM_(, NULL)); 604 IF_CNFN_NUM_(, NULL));
588 605
589 /* allow user to modify filename */ 606 /* allow user to modify filename */
diff --git a/apps/settings.h b/apps/settings.h
index f60e4bacc7..b9c67dc8ea 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -61,7 +61,8 @@
61#define BACKDROP_DIR ROCKBOX_DIR "/backdrops" 61#define BACKDROP_DIR ROCKBOX_DIR "/backdrops"
62#define REC_BASE_DIR "/recordings" 62#define REC_BASE_DIR "/recordings"
63#define EQS_DIR ROCKBOX_DIR "/eqs" 63#define EQS_DIR ROCKBOX_DIR "/eqs"
64#define CODECS_DIR ROCKBOX_DIR"/codecs" 64#define CODECS_DIR ROCKBOX_DIR "/codecs"
65#define RECPRESETS_DIR ROCKBOX_DIR "/recpresets"
65#define FMPRESET_PATH ROCKBOX_DIR "/fmpresets" 66#define FMPRESET_PATH ROCKBOX_DIR "/fmpresets"
66 67
67#define VIEWERS_CONFIG ROCKBOX_DIR "/viewers.config" 68#define VIEWERS_CONFIG ROCKBOX_DIR "/viewers.config"
@@ -231,9 +232,14 @@ bool settings_load_config(const char* file, bool apply);
231void status_save( void ); 232void status_save( void );
232int settings_save(void); 233int settings_save(void);
233/* defines for the options paramater */ 234/* defines for the options paramater */
234#define SETTINGS_SAVE_CHANGED 0 235enum {
235#define SETTINGS_SAVE_ALL 1 236 SETTINGS_SAVE_CHANGED = 0,
236#define SETTINGS_SAVE_THEME 2 237 SETTINGS_SAVE_ALL,
238 SETTINGS_SAVE_THEME,
239#ifdef HAVE_RECORDING
240 SETTINGS_SAVE_RECPRESETS,
241#endif
242};
237bool settings_save_config(int options); 243bool settings_save_config(int options);
238 244
239void settings_reset(void); 245void settings_reset(void);
diff --git a/apps/settings_list.c b/apps/settings_list.c
index efac40c7b5..b5e6d85612 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -733,7 +733,7 @@ const struct settings_list settings[] = {
733 733
734#ifdef HAVE_RECORDING 734#ifdef HAVE_RECORDING
735 /* recording */ 735 /* recording */
736 STRINGCHOICE_SETTING(0, rec_timesplit, LANG_SPLIT_TIME, 0, 736 STRINGCHOICE_SETTING(F_RECSETTING, rec_timesplit, LANG_SPLIT_TIME, 0,
737 "rec timesplit", 737 "rec timesplit",
738 "off,00:05,00:10,00:15,00:30,01:00,01:14,01:20,02:00," 738 "off,00:05,00:10,00:15,00:30,01:00,01:14,01:20,02:00,"
739 "04:00,06:00,08:00,10:00,12:00,18:00,24:00", 739 "04:00,06:00,08:00,10:00,12:00,18:00,24:00",
@@ -744,7 +744,7 @@ const struct settings_list settings[] = {
744 TALK_ID(6, UNIT_HOUR), TALK_ID(8, UNIT_HOUR), TALK_ID(10, UNIT_HOUR), 744 TALK_ID(6, UNIT_HOUR), TALK_ID(8, UNIT_HOUR), TALK_ID(10, UNIT_HOUR),
745 TALK_ID(12, UNIT_HOUR), TALK_ID(18, UNIT_HOUR), TALK_ID(20, UNIT_HOUR), 745 TALK_ID(12, UNIT_HOUR), TALK_ID(18, UNIT_HOUR), TALK_ID(20, UNIT_HOUR),
746 TALK_ID(24, UNIT_HOUR)), 746 TALK_ID(24, UNIT_HOUR)),
747 STRINGCHOICE_SETTING(0, rec_sizesplit, LANG_SPLIT_SIZE, 0, 747 STRINGCHOICE_SETTING(F_RECSETTING, rec_sizesplit, LANG_SPLIT_SIZE, 0,
748 "rec sizesplit", 748 "rec sizesplit",
749 "off,5MB,10MB,15MB,32MB,64MB,75MB,100MB,128MB," 749 "off,5MB,10MB,15MB,32MB,64MB,75MB,100MB,128MB,"
750 "256MB,512MB,650MB,700MB,1GB,1.5GB,1.75GB", 750 "256MB,512MB,650MB,700MB,1GB,1.5GB,1.75GB",
@@ -754,28 +754,30 @@ const struct settings_list settings[] = {
754 TALK_ID(100, UNIT_MB), TALK_ID(128, UNIT_MB), TALK_ID(256, UNIT_MB), 754 TALK_ID(100, UNIT_MB), TALK_ID(128, UNIT_MB), TALK_ID(256, UNIT_MB),
755 TALK_ID(512, UNIT_MB), TALK_ID(650, UNIT_MB), TALK_ID(700, UNIT_MB), 755 TALK_ID(512, UNIT_MB), TALK_ID(650, UNIT_MB), TALK_ID(700, UNIT_MB),
756 TALK_ID(1024, UNIT_MB), TALK_ID(1536, UNIT_MB), TALK_ID(1792, UNIT_MB)), 756 TALK_ID(1024, UNIT_MB), TALK_ID(1536, UNIT_MB), TALK_ID(1792, UNIT_MB)),
757 {F_T_INT,&global_settings.rec_channels,LANG_RECORDING_CHANNELS,INT(0), 757 {F_T_INT|F_RECSETTING, &global_settings.rec_channels,
758 LANG_RECORDING_CHANNELS, INT(0),
758 "rec channels","stereo,mono",UNUSED}, 759 "rec channels","stereo,mono",UNUSED},
759 CHOICE_SETTING(0, rec_split_type, LANG_SPLIT_TYPE, 0 , 760 CHOICE_SETTING(F_RECSETTING, rec_split_type, LANG_SPLIT_TYPE, 0 ,
760 "rec split type", "Split, Stop", NULL, 2, 761 "rec split type", "Split, Stop", NULL, 2,
761 ID2P(LANG_START_NEW_FILE), ID2P(LANG_STOP_RECORDING)), 762 ID2P(LANG_START_NEW_FILE), ID2P(LANG_STOP_RECORDING)),
762 CHOICE_SETTING(0, rec_split_method, LANG_SPLIT_MEASURE, 0 , 763 CHOICE_SETTING(F_RECSETTING, rec_split_method, LANG_SPLIT_MEASURE, 0 ,
763 "rec split method", "Time,Filesize", NULL, 2, 764 "rec split method", "Time,Filesize", NULL, 2,
764 ID2P(LANG_REC_TIME), ID2P(LANG_REC_SIZE)), 765 ID2P(LANG_REC_TIME), ID2P(LANG_REC_SIZE)),
765 {F_T_INT,&global_settings.rec_source,LANG_RECORDING_SOURCE,INT(0), 766 {F_T_INT|F_RECSETTING, &global_settings.rec_source,
767 LANG_RECORDING_SOURCE, INT(0),
766 "rec source", 768 "rec source",
767 &HAVE_MIC_REC_(",mic") 769 &HAVE_MIC_REC_(",mic")
768 HAVE_LINE_REC_(",line") 770 HAVE_LINE_REC_(",line")
769 HAVE_SPDIF_REC_(",spdif") 771 HAVE_SPDIF_REC_(",spdif")
770 HAVE_FMRADIO_REC_(",fmradio")[1] 772 HAVE_FMRADIO_REC_(",fmradio")[1]
771 ,UNUSED}, 773 ,UNUSED},
772 INT_SETTING(0, rec_prerecord_time, LANG_RECORD_PRERECORD_TIME, 774 INT_SETTING(F_RECSETTING, rec_prerecord_time, LANG_RECORD_PRERECORD_TIME,
773 0, "prerecording time", 775 0, "prerecording time",
774 UNIT_SEC, 0, 30, 1, rectime_formatter, rectime_getlang, NULL), 776 UNIT_SEC, 0, 30, 1, rectime_formatter, rectime_getlang, NULL),
775 {F_T_INT,&global_settings.rec_directory,LANG_RECORD_DIRECTORY, 777 {F_T_INT|F_RECSETTING,&global_settings.rec_directory,LANG_RECORD_DIRECTORY,
776 INT(0),"rec directory",REC_BASE_DIR ",current",UNUSED}, 778 INT(0),"rec directory",REC_BASE_DIR ",current",UNUSED},
777#ifdef HAVE_BACKLIGHT 779#ifdef HAVE_BACKLIGHT
778 CHOICE_SETTING(0, cliplight, LANG_CLIP_LIGHT, 0 , 780 CHOICE_SETTING(F_RECSETTING, cliplight, LANG_CLIP_LIGHT, 0 ,
779 "cliplight", "off,main,both,remote", NULL, 781 "cliplight", "off,main,both,remote", NULL,
780#ifdef HAVE_REMOTE_LCD 782#ifdef HAVE_REMOTE_LCD
781 4, 783 4,
@@ -787,34 +789,41 @@ const struct settings_list settings[] = {
787 , ID2P(LANG_REMOTE_MAIN), ID2P(LANG_REMOTE_UNIT) 789 , ID2P(LANG_REMOTE_MAIN), ID2P(LANG_REMOTE_UNIT)
788#endif 790#endif
789 ), 791 ),
790 {F_T_INT,&global_settings.cliplight,LANG_CLIP_LIGHT,INT(0), 792 {F_T_INT|F_RECSETTING,&global_settings.cliplight,LANG_CLIP_LIGHT,INT(0),
791 "cliplight","off,main,both,remote",UNUSED}, 793 "cliplight","off,main,both,remote",UNUSED},
792#endif 794#endif
793 {F_T_INT,&global_settings.rec_mic_gain,LANG_RECORDING_GAIN,INT(DEFAULT_REC_MIC_GAIN), 795 {F_T_INT|F_RECSETTING,&global_settings.rec_mic_gain,
796 LANG_RECORDING_GAIN,INT(DEFAULT_REC_MIC_GAIN),
794 "rec mic gain",NULL,UNUSED}, 797 "rec mic gain",NULL,UNUSED},
795 {F_T_INT,&global_settings.rec_left_gain,LANG_RECORDING_LEFT,INT(DEFAULT_REC_LEFT_GAIN), 798 {F_T_INT|F_RECSETTING,&global_settings.rec_left_gain,
799 LANG_RECORDING_LEFT,INT(DEFAULT_REC_LEFT_GAIN),
796 "rec left gain",NULL,UNUSED}, 800 "rec left gain",NULL,UNUSED},
797 {F_T_INT,&global_settings.rec_right_gain,LANG_RECORDING_RIGHT, 801 {F_T_INT|F_RECSETTING,&global_settings.rec_right_gain,LANG_RECORDING_RIGHT,
798 INT(DEFAULT_REC_RIGHT_GAIN), 802 INT(DEFAULT_REC_RIGHT_GAIN),
799 "rec right gain",NULL,UNUSED}, 803 "rec right gain",NULL,UNUSED},
800#if CONFIG_CODEC == MAS3587F 804#if CONFIG_CODEC == MAS3587F
801 {F_T_INT,&global_settings.rec_frequency,LANG_RECORDING_FREQUENCY, 805 {F_T_INT|F_RECSETTING,&global_settings.rec_frequency,
806 LANG_RECORDING_FREQUENCY,
802 INT(0),"rec frequency","44,48,32,22,24,16",UNUSED}, 807 INT(0),"rec frequency","44,48,32,22,24,16",UNUSED},
803 INT_SETTING(0, rec_quality, LANG_RECORDING_QUALITY, 5, "rec quality", 808 INT_SETTING(F_RECSETTING, rec_quality, LANG_RECORDING_QUALITY,
804 UNIT_INT, 0, 7, 1, NULL, NULL, NULL), 809 5, "rec quality",
805 OFFON_SETTING(0,rec_editable,LANG_RECORDING_EDITABLE, 810 UNIT_INT, 0, 7, 1, NULL, NULL, NULL),
811 OFFON_SETTING(F_RECSETTING,rec_editable,LANG_RECORDING_EDITABLE,
806 false,"editable recordings",NULL), 812 false,"editable recordings",NULL),
807#endif /* CONFIG_CODEC == MAS3587F */ 813#endif /* CONFIG_CODEC == MAS3587F */
808#if CONFIG_CODEC == SWCODEC 814#if CONFIG_CODEC == SWCODEC
809 {F_T_INT,&global_settings.rec_frequency,LANG_RECORDING_FREQUENCY,INT(REC_FREQ_DEFAULT), 815 {F_T_INT|F_RECSETTING,&global_settings.rec_frequency,
816 LANG_RECORDING_FREQUENCY,INT(REC_FREQ_DEFAULT),
810 "rec frequency",REC_FREQ_CFG_VAL_LIST,UNUSED}, 817 "rec frequency",REC_FREQ_CFG_VAL_LIST,UNUSED},
811 {F_T_INT,&global_settings.rec_format,LANG_RECORDING_FORMAT,INT(REC_FORMAT_DEFAULT), 818 {F_T_INT|F_RECSETTING,&global_settings.rec_format,
819 LANG_RECORDING_FORMAT,INT(REC_FORMAT_DEFAULT),
812 "rec format",REC_FORMAT_CFG_VAL_LIST,UNUSED}, 820 "rec format",REC_FORMAT_CFG_VAL_LIST,UNUSED},
813 /** Encoder settings start - keep these together **/ 821 /** Encoder settings start - keep these together **/
814 /* aiff_enc */ 822 /* aiff_enc */
815 /* (no settings yet) */ 823 /* (no settings yet) */
816 /* mp3_enc */ 824 /* mp3_enc */
817 {F_T_INT,&global_settings.mp3_enc_config.bitrate,-1,INT(MP3_ENC_BITRATE_CFG_DEFAULT), 825 {F_T_INT|F_RECSETTING, &global_settings.mp3_enc_config.bitrate,-1,
826 INT(MP3_ENC_BITRATE_CFG_DEFAULT),
818 "mp3_enc bitrate",MP3_ENC_BITRATE_CFG_VALUE_LIST,UNUSED}, 827 "mp3_enc bitrate",MP3_ENC_BITRATE_CFG_VALUE_LIST,UNUSED},
819 /* wav_enc */ 828 /* wav_enc */
820 /* (no settings yet) */ 829 /* (no settings yet) */
@@ -823,17 +832,23 @@ const struct settings_list settings[] = {
823 /** Encoder settings end **/ 832 /** Encoder settings end **/
824#endif /* CONFIG_CODEC == SWCODEC */ 833#endif /* CONFIG_CODEC == SWCODEC */
825 /* values for the trigger */ 834 /* values for the trigger */
826 {F_T_INT,&global_settings.rec_start_thres,LANG_RECORD_START_THRESHOLD,INT(-35), 835 {F_T_INT|F_RECSETTING,&global_settings.rec_start_thres,
836 LANG_RECORD_START_THRESHOLD, INT(-35),
827 "trigger start threshold",NULL,UNUSED}, 837 "trigger start threshold",NULL,UNUSED},
828 {F_T_INT,&global_settings.rec_stop_thres,LANG_RECORD_STOP_THRESHOLD,INT(-45), 838 {F_T_INT|F_RECSETTING,&global_settings.rec_stop_thres,
839 LANG_RECORD_STOP_THRESHOLD,INT(-45),
829 "trigger stop threshold",NULL,UNUSED}, 840 "trigger stop threshold",NULL,UNUSED},
830 {F_T_INT,&global_settings.rec_start_duration,LANG_RECORD_MIN_DURATION,INT(0), 841 {F_T_INT|F_RECSETTING,&global_settings.rec_start_duration,
842 LANG_RECORD_MIN_DURATION,INT(0),
831 "trigger start duration",trig_durations_conf,UNUSED}, 843 "trigger start duration",trig_durations_conf,UNUSED},
832 {F_T_INT,&global_settings.rec_stop_postrec,LANG_RECORD_STOP_POSTREC,INT(2), 844 {F_T_INT|F_RECSETTING,&global_settings.rec_stop_postrec,
845 LANG_RECORD_STOP_POSTREC,INT(2),
833 "trigger stop postrec",trig_durations_conf,UNUSED}, 846 "trigger stop postrec",trig_durations_conf,UNUSED},
834 {F_T_INT,&global_settings.rec_stop_gap,LANG_RECORD_STOP_GAP,INT(1), 847 {F_T_INT|F_RECSETTING,&global_settings.rec_stop_gap,
848 LANG_RECORD_STOP_GAP,INT(1),
835 "trigger min gap",trig_durations_conf,UNUSED}, 849 "trigger min gap",trig_durations_conf,UNUSED},
836 {F_T_INT,&global_settings.rec_trigger_mode,LANG_RECORD_TRIGGER_MODE,INT(0), 850 {F_T_INT|F_RECSETTING,&global_settings.rec_trigger_mode,
851 LANG_RECORD_TRIGGER_MODE,INT(0),
837 "trigger mode","off,once,repeat",UNUSED}, 852 "trigger mode","off,once,repeat",UNUSED},
838#endif /* HAVE_RECORDING */ 853#endif /* HAVE_RECORDING */
839 854
@@ -1111,7 +1126,8 @@ const struct settings_list settings[] = {
1111 false,"Last.fm Logging",NULL), 1126 false,"Last.fm Logging",NULL),
1112 1127
1113#ifdef HAVE_RECORDING 1128#ifdef HAVE_RECORDING
1114 {F_T_INT,&global_settings.rec_trigger_type,LANG_RECORD_TRIGGER_TYPE, 1129 {F_T_INT|F_RECSETTING,&global_settings.rec_trigger_type,
1130 LANG_RECORD_TRIGGER_TYPE,
1115 INT(0),"trigger type","stop,pause,nf stp",UNUSED}, 1131 INT(0),"trigger type","stop,pause,nf stp",UNUSED},
1116#endif 1132#endif
1117 1133
diff --git a/apps/settings_list.h b/apps/settings_list.h
index 97443e35be..9bc8eb9621 100644
--- a/apps/settings_list.h
+++ b/apps/settings_list.h
@@ -91,7 +91,8 @@ struct choice_setting {
91#define F_MAX_ISFUNC 0x200000 /* max(above) is function pointer to above type */ 91#define F_MAX_ISFUNC 0x200000 /* max(above) is function pointer to above type */
92#define F_DEF_ISFUNC 0x400000 /* default_val is function pointer to above type */ 92#define F_DEF_ISFUNC 0x400000 /* default_val is function pointer to above type */
93 93
94#define F_THEMESETTING 0x800000 94#define F_THEMESETTING 0x0800000
95#define F_RECSETTING 0x1000000
95 96
96#define F_NVRAM_BYTES_MASK 0xE000 /*0-4 bytes can be stored */ 97#define F_NVRAM_BYTES_MASK 0xE000 /*0-4 bytes can be stored */
97#define F_NVRAM_MASK_SHIFT 13 98#define F_NVRAM_MASK_SHIFT 13
@@ -102,10 +103,10 @@ struct choice_setting {
102- a NVRAM setting is removed 103- a NVRAM setting is removed
103*/ 104*/
104#define F_TEMPVAR 0x400 /* used if the setting should be set using a temp var */ 105#define F_TEMPVAR 0x400 /* used if the setting should be set using a temp var */
105#define F_FLIPLIST 0x800 /* used if the order in the setting screen is backwards */ 106#define F_FLIPLIST 0x800 /* used if the order in the setting screen is backwards */
106 107
107struct settings_list { 108struct settings_list {
108 uint32_t flags; /* ____ ____ TFFF ____ NNN_ FTVC IFRB STTT */ 109 uint32_t flags; /* ____ ___R TFFF ____ NNN_ FTVC IFRB STTT */
109 void *setting; 110 void *setting;
110 int lang_id; /* -1 for none */ 111 int lang_id; /* -1 for none */
111 union storage_type default_val; 112 union storage_type default_val;