summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Everton <dan@iocaine.org>2007-12-07 10:59:07 +0000
committerDan Everton <dan@iocaine.org>2007-12-07 10:59:07 +0000
commit5886efabf5e4c96a8a96836d665aad935c727e31 (patch)
treedfff344379b09bf0de89530393390113585658c0
parent05007e1a79fa9d9bb5985e0f6195871ea5ea71a6 (diff)
downloadrockbox-5886efabf5e4c96a8a96836d665aad935c727e31.tar.gz
rockbox-5886efabf5e4c96a8a96836d665aad935c727e31.zip
Save some bytes and reuse the settings saving code for eq preset saving.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15891 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/menus/eq_menu.c46
-rw-r--r--apps/settings.c10
-rw-r--r--apps/settings.h3
-rw-r--r--apps/settings_list.c79
-rw-r--r--apps/settings_list.h1
5 files changed, 61 insertions, 78 deletions
diff --git a/apps/menus/eq_menu.c b/apps/menus/eq_menu.c
index 2c2e596496..b3e67e42ef 100644
--- a/apps/menus/eq_menu.c
+++ b/apps/menus/eq_menu.c
@@ -596,50 +596,17 @@ bool eq_menu_graphical(void)
596 return result; 596 return result;
597} 597}
598 598
599/* Preset saver.
600 * TODO: Can the settings system be used to do this instead?
601 */
602static bool eq_save_preset(void) 599static bool eq_save_preset(void)
603{ 600{
604 int fd, i; 601 /* make sure that the eq is enabled for setting saving */
605 char filename[MAX_PATH]; 602 bool enabled = global_settings.eq_enabled;
606 int *setting; 603 global_settings.eq_enabled = true;
607
608 create_numbered_filename(filename, EQS_DIR, "eq", ".cfg", 2
609 IF_CNFN_NUM_(, NULL));
610
611 /* allow user to modify filename */
612 while (true) {
613 if (!kbd_input(filename, sizeof filename)) {
614 fd = creat(filename);
615 if (fd < 0)
616 gui_syncsplash(HZ, ID2P(LANG_FAILED));
617 else
618 break;
619 }
620 else {
621 gui_syncsplash(HZ, ID2P(LANG_CANCEL));
622 return false;
623 }
624 }
625
626 /* TODO: Should we really do this? */
627 fdprintf(fd, "eq enabled: on\r\n");
628 fdprintf(fd, "eq precut: %d\r\n", global_settings.eq_precut);
629 604
630 setting = &global_settings.eq_band0_cutoff; 605 bool result = settings_save_config(SETTINGS_SAVE_EQPRESET);
631 606
632 for(i = 0; i < 5; ++i) { 607 global_settings.eq_enabled = enabled;
633 fdprintf(fd, "eq band %d cutoff: %d\r\n", i, *setting++);
634 fdprintf(fd, "eq band %d q: %d\r\n", i, *setting++);
635 fdprintf(fd, "eq band %d gain: %d\r\n", i, *setting++);
636 }
637
638 close(fd);
639 608
640 gui_syncsplash(HZ, ID2P(LANG_SETTINGS_SAVED)); 609 return result;
641
642 return true;
643} 610}
644 611
645/* Allows browsing of preset files */ 612/* Allows browsing of preset files */
@@ -648,7 +615,6 @@ bool eq_browse_presets(void)
648 return rockbox_browse(EQS_DIR, SHOW_CFG); 615 return rockbox_browse(EQS_DIR, SHOW_CFG);
649} 616}
650 617
651
652MENUITEM_FUNCTION(eq_graphical, 0, ID2P(LANG_EQUALIZER_GRAPHICAL), 618MENUITEM_FUNCTION(eq_graphical, 0, ID2P(LANG_EQUALIZER_GRAPHICAL),
653 (int(*)(void))eq_menu_graphical, NULL, NULL, 619 (int(*)(void))eq_menu_graphical, NULL, NULL,
654 Icon_EQ); 620 Icon_EQ);
diff --git a/apps/settings.c b/apps/settings.c
index b22c521fd8..7f0de3e8ad 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -477,6 +477,11 @@ static bool settings_write_config(char* filename, int options)
477 ((settings[i].flags&F_RECSETTING) == 0)) 477 ((settings[i].flags&F_RECSETTING) == 0))
478 continue; 478 continue;
479#endif 479#endif
480#if CONFIG_CODEC == SWCODEC
481 else if ((options == SETTINGS_SAVE_EQPRESET) &&
482 ((settings[i].flags&F_EQSETTING) == 0))
483 continue;
484#endif
480 switch (settings[i].flags&F_T_MASK) 485 switch (settings[i].flags&F_T_MASK)
481 { 486 {
482 case F_T_INT: 487 case F_T_INT:
@@ -614,6 +619,11 @@ bool settings_save_config(int options)
614 folder = RECPRESETS_DIR; 619 folder = RECPRESETS_DIR;
615 break; 620 break;
616#endif 621#endif
622#if CONFIG_CODEC == SWCODEC
623 case SETTINGS_SAVE_EQPRESET:
624 folder = EQS_DIR;
625 break;
626#endif
617 default: 627 default:
618 folder = ROCKBOX_DIR; 628 folder = ROCKBOX_DIR;
619 } 629 }
diff --git a/apps/settings.h b/apps/settings.h
index a03a24a904..0e4e627005 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -207,6 +207,9 @@ enum {
207#ifdef HAVE_RECORDING 207#ifdef HAVE_RECORDING
208 SETTINGS_SAVE_RECPRESETS, 208 SETTINGS_SAVE_RECPRESETS,
209#endif 209#endif
210#if CONFIG_CODEC == SWCODEC
211 SETTINGS_SAVE_EQPRESET,
212#endif
210}; 213};
211bool settings_save_config(int options); 214bool settings_save_config(int options);
212 215
diff --git a/apps/settings_list.c b/apps/settings_list.c
index ed879aa054..3d5075ce3f 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -906,58 +906,61 @@ const struct settings_list settings[] = {
906 INT_SETTING_NOWRAP(0, crossfeed_hf_cutoff, LANG_CROSSFEED_HF_CUTOFF, 700, 906 INT_SETTING_NOWRAP(0, crossfeed_hf_cutoff, LANG_CROSSFEED_HF_CUTOFF, 700,
907 "crossfeed hf cutoff", UNIT_HERTZ, 500, 2000, 100, 907 "crossfeed hf cutoff", UNIT_HERTZ, 500, 2000, 100,
908 NULL, NULL, crossfeed_cross_set), 908 NULL, NULL, crossfeed_cross_set),
909
909 /* equalizer */ 910 /* equalizer */
910 OFFON_SETTING(0,eq_enabled,LANG_EQUALIZER_ENABLED,false,"eq enabled",NULL), 911 OFFON_SETTING(F_EQSETTING, eq_enabled, LANG_EQUALIZER_ENABLED, false,
911 INT_SETTING_NOWRAP(0, eq_precut, LANG_EQUALIZER_PRECUT, 0, "eq precut", 912 "eq enabled", NULL),
912 UNIT_DB, 0, 240, 5, eq_precut_format, NULL, dsp_set_eq_precut), 913 INT_SETTING_NOWRAP(F_EQSETTING, eq_precut, LANG_EQUALIZER_PRECUT, 0,
914 "eq precut", UNIT_DB, 0, 240, 5, eq_precut_format, NULL,
915 dsp_set_eq_precut),
913 /* 0..32768 Hz */ 916 /* 0..32768 Hz */
914 INT_SETTING_NOWRAP(0, eq_band0_cutoff, LANG_EQUALIZER_BAND_CUTOFF, 60, 917 INT_SETTING_NOWRAP(F_EQSETTING, eq_band0_cutoff, LANG_EQUALIZER_BAND_CUTOFF,
915 "eq band 0 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 918 60, "eq band 0 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
916 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 919 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
917 INT_SETTING_NOWRAP(0, eq_band1_cutoff, LANG_EQUALIZER_BAND_CENTER, 200, 920 INT_SETTING_NOWRAP(F_EQSETTING, eq_band1_cutoff, LANG_EQUALIZER_BAND_CENTER,
918 "eq band 1 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 921 200, "eq band 1 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
919 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 922 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
920 INT_SETTING_NOWRAP(0, eq_band2_cutoff, LANG_EQUALIZER_BAND_CENTER, 800, 923 INT_SETTING_NOWRAP(F_EQSETTING, eq_band2_cutoff, LANG_EQUALIZER_BAND_CENTER,
921 "eq band 2 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 924 800, "eq band 2 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
922 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 925 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
923 INT_SETTING_NOWRAP(0, eq_band3_cutoff, LANG_EQUALIZER_BAND_CENTER, 4000, 926 INT_SETTING_NOWRAP(F_EQSETTING, eq_band3_cutoff, LANG_EQUALIZER_BAND_CENTER,
924 "eq band 3 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 927 4000, "eq band 3 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
925 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 928 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
926 INT_SETTING_NOWRAP(0, eq_band4_cutoff, LANG_EQUALIZER_BAND_CUTOFF, 12000, 929 INT_SETTING_NOWRAP(F_EQSETTING, eq_band4_cutoff, LANG_EQUALIZER_BAND_CUTOFF,
927 "eq band 4 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 930 12000, "eq band 4 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
928 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 931 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
929 /* 0..64 (or 0.0 to 6.4) */ 932 /* 0..64 (or 0.0 to 6.4) */
930 INT_SETTING_NOWRAP(0, eq_band0_q, LANG_EQUALIZER_BAND_Q, 7, "eq band 0 q", 933 INT_SETTING_NOWRAP(F_EQSETTING, eq_band0_q, LANG_EQUALIZER_BAND_Q, 7,
931 UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 934 "eq band 0 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
932 eq_q_format, NULL, NULL), 935 eq_q_format, NULL, NULL),
933 INT_SETTING_NOWRAP(0, eq_band1_q, LANG_EQUALIZER_BAND_Q, 10, "eq band 1 q", 936 INT_SETTING_NOWRAP(F_EQSETTING, eq_band1_q, LANG_EQUALIZER_BAND_Q, 10,
934 UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 937 "eq band 1 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
935 eq_q_format, NULL, NULL), 938 eq_q_format, NULL, NULL),
936 INT_SETTING_NOWRAP(0, eq_band2_q, LANG_EQUALIZER_BAND_Q, 10, "eq band 2 q", 939 INT_SETTING_NOWRAP(F_EQSETTING, eq_band2_q, LANG_EQUALIZER_BAND_Q, 10,
937 UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 940 "eq band 2 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
938 eq_q_format, NULL, NULL), 941 eq_q_format, NULL, NULL),
939 INT_SETTING_NOWRAP(0, eq_band3_q, LANG_EQUALIZER_BAND_Q, 10, "eq band 3 q", 942 INT_SETTING_NOWRAP(F_EQSETTING, eq_band3_q, LANG_EQUALIZER_BAND_Q, 10,
940 UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 943 "eq band 3 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
941 eq_q_format, NULL, NULL), 944 eq_q_format, NULL, NULL),
942 INT_SETTING_NOWRAP(0, eq_band4_q, LANG_EQUALIZER_BAND_Q, 7, "eq band 4 q", 945 INT_SETTING_NOWRAP(F_EQSETTING, eq_band4_q, LANG_EQUALIZER_BAND_Q, 7,
943 UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 946 "eq band 4 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
944 eq_q_format, NULL, NULL), 947 eq_q_format, NULL, NULL),
945 /* -240..240 (or -24db to +24db) */ 948 /* -240..240 (or -24db to +24db) */
946 INT_SETTING_NOWRAP(0, eq_band0_gain, LANG_GAIN, 0, "eq band 0 gain", 949 INT_SETTING_NOWRAP(F_EQSETTING, eq_band0_gain, LANG_GAIN, 0,
947 UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, EQ_GAIN_STEP, 950 "eq band 0 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
948 eq_gain_format, NULL, NULL), 951 EQ_GAIN_STEP, eq_gain_format, NULL, NULL),
949 INT_SETTING_NOWRAP(0, eq_band1_gain, LANG_GAIN, 0, "eq band 1 gain", 952 INT_SETTING_NOWRAP(F_EQSETTING, eq_band1_gain, LANG_GAIN, 0,
950 UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, EQ_GAIN_STEP, 953 "eq band 1 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
951 eq_gain_format, NULL, NULL), 954 EQ_GAIN_STEP, eq_gain_format, NULL, NULL),
952 INT_SETTING_NOWRAP(0, eq_band2_gain, LANG_GAIN, 0, "eq band 2 gain", 955 INT_SETTING_NOWRAP(F_EQSETTING, eq_band2_gain, LANG_GAIN, 0,
953 UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, EQ_GAIN_STEP, 956 "eq band 2 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
954 eq_gain_format, NULL, NULL), 957 EQ_GAIN_STEP, eq_gain_format, NULL, NULL),
955 INT_SETTING_NOWRAP(0, eq_band3_gain, LANG_GAIN, 0, "eq band 3 gain", 958 INT_SETTING_NOWRAP(F_EQSETTING, eq_band3_gain, LANG_GAIN, 0,
956 UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, EQ_GAIN_STEP, 959 "eq band 3 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
957 eq_gain_format, NULL, NULL), 960 EQ_GAIN_STEP, eq_gain_format, NULL, NULL),
958 INT_SETTING_NOWRAP(0, eq_band4_gain, LANG_GAIN, 0, "eq band 4 gain", 961 INT_SETTING_NOWRAP(F_EQSETTING, eq_band4_gain, LANG_GAIN, 0,
959 UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, EQ_GAIN_STEP, 962 "eq band 4 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
960 eq_gain_format, NULL, NULL), 963 EQ_GAIN_STEP, eq_gain_format, NULL, NULL),
961 964
962 /* dithering */ 965 /* dithering */
963 OFFON_SETTING(0, dithering_enabled, LANG_DITHERING, 966 OFFON_SETTING(0, dithering_enabled, LANG_DITHERING,
diff --git a/apps/settings_list.h b/apps/settings_list.h
index 75768fea55..b959789dfe 100644
--- a/apps/settings_list.h
+++ b/apps/settings_list.h
@@ -104,6 +104,7 @@ struct table_setting {
104 104
105#define F_THEMESETTING 0x0800000 105#define F_THEMESETTING 0x0800000
106#define F_RECSETTING 0x1000000 106#define F_RECSETTING 0x1000000
107#define F_EQSETTING 0x2000000
107 108
108#define F_NVRAM_BYTES_MASK 0xE0000 /*0-4 bytes can be stored */ 109#define F_NVRAM_BYTES_MASK 0xE0000 /*0-4 bytes can be stored */
109#define F_NVRAM_MASK_SHIFT 17 110#define F_NVRAM_MASK_SHIFT 17