comparison src/skins/ui_equalizer.c @ 2786:b7d8e6fd4644

make use of exported equalzier preset functions
author Tomasz Mon <desowin@gmail.com>
date Tue, 08 Jul 2008 15:37:33 +0200
parents 51fc44b99b58
children 04c38b7a6079
comparison
equal deleted inserted replaced
2785:e67587763984 2786:b7d8e6fd4644
44 #include "actions-equalizer.h" 44 #include "actions-equalizer.h"
45 #include "util.h" 45 #include "util.h"
46 #include "ui_main.h" 46 #include "ui_main.h"
47 #include "ui_playlist.h" 47 #include "ui_playlist.h"
48 #include <audacious/plugin.h> 48 #include <audacious/plugin.h>
49 #include <audacious/equalizer_preset.h>
49 50
50 #include "images/audacious_eq.xpm" 51 #include "images/audacious_eq.xpm"
51 52
52 #include "ui_dock.h" 53 #include "ui_dock.h"
53 #include "ui_skinned_window.h" 54 #include "ui_skinned_window.h"
59 60
60 enum PresetViewCols { 61 enum PresetViewCols {
61 PRESET_VIEW_COL_NAME, 62 PRESET_VIEW_COL_NAME,
62 PRESET_VIEW_N_COLS 63 PRESET_VIEW_N_COLS
63 }; 64 };
64
65 struct _EqualizerPreset {
66 gchar *name;
67 gfloat preamp, bands[10];
68 };
69
70 typedef struct _EqualizerPreset EqualizerPreset;
71
72 65
73 GtkWidget *equalizerwin; 66 GtkWidget *equalizerwin;
74 GtkWidget *equalizerwin_graph; 67 GtkWidget *equalizerwin_graph;
75 68
76 static GtkWidget *equalizerwin_load_window = NULL; 69 static GtkWidget *equalizerwin_load_window = NULL;
176 for (i = 0; i < 10; i++) 169 for (i = 0; i < 10; i++)
177 aud_cfg->equalizer_bands[i] = ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]); 170 aud_cfg->equalizer_bands[i] = ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]);
178 171
179 aud_hook_call("equalizer changed", NULL); 172 aud_hook_call("equalizer changed", NULL);
180 gtk_widget_queue_draw(equalizerwin_graph); 173 gtk_widget_queue_draw(equalizerwin_graph);
174 }
175
176 static void
177 equalizerwin_apply_preset(EqualizerPreset *preset)
178 {
179 gint i;
180
181 ui_skinned_equalizer_slider_set_position(equalizerwin_preamp, preset->preamp);
182 for (i = 0; i < 10; i++) {
183 ui_skinned_equalizer_slider_set_position(equalizerwin_bands[i], preset->bands[i]);
184 }
185 equalizerwin_eq_changed();
181 } 186 }
182 187
183 static void 188 static void
184 equalizerwin_on_pushed(void) 189 equalizerwin_on_pushed(void)
185 { 190 {
273 { 278 {
274 equalizerwin_show(FALSE); 279 equalizerwin_show(FALSE);
275 return TRUE; 280 return TRUE;
276 } 281 }
277 282
278 static GList *
279 equalizerwin_read_presets(const gchar * basename)
280 {
281 #if 0
282 gchar *filename, *name;
283 RcFile *rcfile;
284 GList *list = NULL;
285 gint i, p = 0;
286 EqualizerPreset *preset;
287
288 /* START mod: add check for the default presets locate in system path ({prefix}/share/audacious)
289 by Massimo Cavalleri (submax) */
290
291 filename = g_build_filename(aud_paths[BMP_PATH_USER_DIR], basename, NULL);
292
293 if ((rcfile = aud_rcfile_open(filename)) == NULL) {
294 g_free(filename);
295 // DATA_DIR = "{prefix}/share/audacious" ; example is "/usr/share/audacious"
296 filename = g_build_filename(DATA_DIR, basename, NULL);
297 if ((rcfile = aud_rcfile_open(filename)) == NULL) {
298 g_free(filename);
299 return NULL;
300 }
301 }
302
303 // END mod
304
305 g_free(filename);
306
307 for (;;) {
308 gchar section[21];
309
310 g_snprintf(section, sizeof(section), "Preset%d", p++);
311 if (aud_rcfile_read_string(rcfile, "Presets", section, &name)) {
312 preset = g_new0(EqualizerPreset, 1);
313 preset->name = name;
314 aud_rcfile_read_float(rcfile, name, "Preamp", &preset->preamp);
315 for (i = 0; i < 10; i++) {
316 gchar band[7];
317 g_snprintf(band, sizeof(band), "Band%d", i);
318 aud_rcfile_read_float(rcfile, name, band, &preset->bands[i]);
319 }
320 list = g_list_prepend(list, preset);
321 }
322 else
323 break;
324 }
325 list = g_list_reverse(list);
326 aud_rcfile_free(rcfile);
327 return list;
328 #endif
329 }
330
331 gint 283 gint
332 equalizerwin_volume_frame_cb(gint pos) 284 equalizerwin_volume_frame_cb(gint pos)
333 { 285 {
334 if (equalizerwin_volume) { 286 if (equalizerwin_volume) {
335 gint x; 287 gint x;
526 } 478 }
527 479
528 void 480 void
529 equalizerwin_create(void) 481 equalizerwin_create(void)
530 { 482 {
531 equalizer_presets = equalizerwin_read_presets("eq.preset"); 483 equalizer_presets = aud_equalizer_read_presets("eq.preset");
532 equalizer_auto_presets = equalizerwin_read_presets("eq.auto_preset"); 484 equalizer_auto_presets = aud_equalizer_read_presets("eq.auto_preset");
533 485
534 equalizerwin_create_window(); 486 equalizerwin_create_window();
535 487
536 gtk_window_add_accel_group( GTK_WINDOW(equalizerwin) , ui_manager_get_accel_group() ); 488 gtk_window_add_accel_group( GTK_WINDOW(equalizerwin) , ui_manager_get_accel_group() );
537 489
595 node = g_list_next(node); 547 node = g_list_next(node);
596 } 548 }
597 return NULL; 549 return NULL;
598 } 550 }
599 551
600 static void
601 equalizerwin_write_preset_file(GList * list, const gchar * basename)
602 {
603 #if 0
604 gchar *filename, *tmp;
605 gint i, p;
606 EqualizerPreset *preset;
607 RcFile *rcfile;
608 GList *node;
609
610 rcfile = aud_rcfile_new();
611 p = 0;
612 for (node = list; node; node = g_list_next(node)) {
613 preset = node->data;
614 tmp = g_strdup_printf("Preset%d", p++);
615 aud_rcfile_write_string(rcfile, "Presets", tmp, preset->name);
616 g_free(tmp);
617 aud_rcfile_write_float(rcfile, preset->name, "Preamp",
618 preset->preamp);
619 for (i = 0; i < 10; i++) {
620 tmp = g_strdup_printf("Band%d\n", i);
621 aud_rcfile_write_float(rcfile, preset->name, tmp,
622 preset->bands[i]);
623 g_free(tmp);
624 }
625 }
626
627 filename = g_build_filename(aud_paths[BMP_PATH_USER_DIR], basename, NULL);
628 aud_rcfile_write(rcfile, filename);
629 aud_rcfile_free(rcfile);
630 g_free(filename);
631 #endif
632 }
633
634 static gboolean 552 static gboolean
635 equalizerwin_load_preset(GList * list, const gchar * name) 553 equalizerwin_load_preset(GList * list, const gchar * name)
636 { 554 {
637 EqualizerPreset *preset; 555 EqualizerPreset *preset;
638 gint i; 556 gint i;
662 580
663 preset->preamp = ui_skinned_equalizer_slider_get_position(equalizerwin_preamp); 581 preset->preamp = ui_skinned_equalizer_slider_get_position(equalizerwin_preamp);
664 for (i = 0; i < 10; i++) 582 for (i = 0; i < 10; i++)
665 preset->bands[i] = ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]); 583 preset->bands[i] = ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]);
666 584
667 equalizerwin_write_preset_file(list, filename); 585 aud_equalizer_write_preset_file(list, filename);
668 586
669 return list; 587 return list;
670 } 588 }
671 589
672 static GList * 590 static GList *
683 601
684 list = g_list_remove_link(list, node); 602 list = g_list_remove_link(list, node);
685 equalizer_preset_free(preset); 603 equalizer_preset_free(preset);
686 g_list_free_1(node); 604 g_list_free_1(node);
687 605
688 equalizerwin_write_preset_file(list, filename); 606 aud_equalizer_write_preset_file(list, filename);
689 607
690 return list; 608 return list;
691 } 609 }
692 610
693 static void 611 static void
732 650
733 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); 651 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
734 } 652 }
735 } 653 }
736 654
737 static GList *
738 import_winamp_eqf(VFSFile * file)
739 {
740 #if 0
741 gchar header[31];
742 gchar bands[11];
743 gint i = 0;
744 EqualizerPreset *preset = NULL;
745 GList *list = NULL;
746 GtkWidget *dialog;
747 gchar *realfn;
748 gchar preset_name[0xb4];
749
750 vfs_fread(header, 1, 31, file);
751 if (strncmp(header, "Winamp EQ library file v1.1", 27)) goto error;
752
753 AUDDBG("The EQF header is OK\n");
754
755 if (vfs_fseek(file, 0x1f, SEEK_SET) == -1) goto error;
756
757 while (vfs_fread(preset_name, 1, 0xb4, file) == 0xb4) {
758 AUDDBG("The preset name is '%s'\n", preset_name);
759 vfs_fseek(file, 0x4d, SEEK_CUR); /* unknown crap --asphyx */
760 if (vfs_fread(bands, 1, 11, file) != 11) break;
761
762 preset = equalizer_preset_new(preset_name);
763 /*this was divided by 63, but shouldn't it be 64? --majeru*/
764 preset->preamp = EQUALIZER_MAX_GAIN - ((bands[10] * EQUALIZER_MAX_GAIN * 2) / 64.0);
765
766 for (i = 0; i < 10; i++)
767 preset->bands[i] = EQUALIZER_MAX_GAIN - ((bands[i] * EQUALIZER_MAX_GAIN * 2) / 64.0);
768
769 list = g_list_prepend(list, preset);
770 }
771
772 list = g_list_reverse(list);
773 if (list == NULL) goto error;
774
775 return list;
776
777 error:
778 realfn = g_filename_from_uri(file->uri, NULL, NULL);
779 dialog = gtk_message_dialog_new (GTK_WINDOW(mainwin),
780 GTK_DIALOG_DESTROY_WITH_PARENT,
781 GTK_MESSAGE_ERROR,
782 GTK_BUTTONS_CLOSE,
783 _("Error importing Winamp EQF file '%s'"),
784 realfn);
785 gtk_dialog_run (GTK_DIALOG (dialog));
786 gtk_widget_destroy (dialog);
787 g_free(realfn);
788 return NULL;
789 #endif
790 }
791
792 static void 655 static void
793 free_cb (gpointer data, gpointer user_data) 656 free_cb (gpointer data, gpointer user_data)
794 { 657 {
795 equalizer_preset_free((EqualizerPreset*)data); 658 equalizer_preset_free((EqualizerPreset*)data);
796 } 659 }
799 equalizerwin_read_winamp_eqf(VFSFile * file) 662 equalizerwin_read_winamp_eqf(VFSFile * file)
800 { 663 {
801 GList *presets; 664 GList *presets;
802 gint i; 665 gint i;
803 666
804 if ((presets = import_winamp_eqf(file)) == NULL) 667 if ((presets = aud_import_winamp_eqf(file)) == NULL)
805 return; 668 return;
806 669
807 /* just get the first preset --asphyx */ 670 /* just get the first preset --asphyx */
808 EqualizerPreset *preset = (EqualizerPreset*)presets->data; 671 EqualizerPreset *preset = (EqualizerPreset*)presets->data;
809 ui_skinned_equalizer_slider_set_position(equalizerwin_preamp, 672 ui_skinned_equalizer_slider_set_position(equalizerwin_preamp,
816 g_list_foreach(presets, free_cb, NULL); 679 g_list_foreach(presets, free_cb, NULL);
817 g_list_free(presets); 680 g_list_free(presets);
818 681
819 equalizerwin_eq_changed(); 682 equalizerwin_eq_changed();
820 } 683 }
821 #if 0 684
822 static void 685 static void
823 equalizerwin_read_aud_preset(RcFile * rcfile) 686 equalizerwin_read_aud_preset(const gchar * file)
824 { 687 {
825 gfloat val; 688 EqualizerPreset *preset = aud_equalizer_read_aud_preset(file);
826 gint i; 689 if (preset) {
827 690 equalizerwin_apply_preset(preset);
828 if (aud_rcfile_read_float(rcfile, "Equalizer preset", "Preamp", &val)) 691 equalizer_preset_free(preset);
829 ui_skinned_equalizer_slider_set_position(equalizerwin_preamp, val); 692 }
830 for (i = 0; i < 10; i++) { 693 }
831 gchar tmp[7];
832 g_snprintf(tmp, sizeof(tmp), "Band%d", i);
833 if (aud_rcfile_read_float(rcfile, "Equalizer preset", tmp, &val))
834 ui_skinned_equalizer_slider_set_position(equalizerwin_bands[i], val);
835 }
836 equalizerwin_eq_changed();
837 }
838 #endif
839 694
840 static void 695 static void
841 equalizerwin_save_ok(GtkWidget * widget, gpointer data) 696 equalizerwin_save_ok(GtkWidget * widget, gpointer data)
842 { 697 {
843 const gchar *text; 698 const gchar *text;
978 equalizerwin_delete_auto_delete(GtkWidget *widget, gpointer data) 833 equalizerwin_delete_auto_delete(GtkWidget *widget, gpointer data)
979 { 834 {
980 equalizerwin_delete_selected_presets(GTK_TREE_VIEW(data), "eq.auto_preset"); 835 equalizerwin_delete_selected_presets(GTK_TREE_VIEW(data), "eq.auto_preset");
981 } 836 }
982 837
983
984 static void
985 load_preset_file(const gchar *filename)
986 {
987 #if 0
988 RcFile *rcfile;
989
990 if ((rcfile = aud_rcfile_open(filename)) != NULL) {
991 equalizerwin_read_aud_preset(rcfile);
992 aud_rcfile_free(rcfile);
993 }
994 #endif
995 }
996
997 static VFSFile * 838 static VFSFile *
998 open_vfs_file(const gchar *filename, const gchar *mode) 839 open_vfs_file(const gchar *filename, const gchar *mode)
999 { 840 {
1000 VFSFile *file; 841 VFSFile *file;
1001 GtkWidget *dialog; 842 GtkWidget *dialog;
1002 843
1003 if (!(file = vfs_fopen(filename, mode))) { 844 if (!(file = aud_vfs_fopen(filename, mode))) {
1004 dialog = gtk_message_dialog_new (GTK_WINDOW (mainwin), 845 dialog = gtk_message_dialog_new (GTK_WINDOW (mainwin),
1005 GTK_DIALOG_DESTROY_WITH_PARENT, 846 GTK_DIALOG_DESTROY_WITH_PARENT,
1006 GTK_MESSAGE_ERROR, 847 GTK_MESSAGE_ERROR,
1007 GTK_BUTTONS_CLOSE, 848 GTK_BUTTONS_CLOSE,
1008 "Error loading file '%s'", 849 "Error loading file '%s'",
1015 } 856 }
1016 857
1017 static void 858 static void
1018 load_winamp_file(const gchar * filename) 859 load_winamp_file(const gchar * filename)
1019 { 860 {
1020 #if 0
1021 VFSFile *file; 861 VFSFile *file;
1022 862
1023 if (!(file = open_vfs_file(filename, "rb"))) 863 if (!(file = open_vfs_file(filename, "rb")))
1024 return; 864 return;
1025 865
1026 equalizerwin_read_winamp_eqf(file); 866 equalizerwin_read_winamp_eqf(file);
1027 vfs_fclose(file); 867 aud_vfs_fclose(file);
1028 #endif
1029 } 868 }
1030 869
1031 static void 870 static void
1032 import_winamp_file(const gchar * filename) 871 import_winamp_file(const gchar * filename)
1033 { 872 {
1034 #if 0
1035 VFSFile *file; 873 VFSFile *file;
1036 GList *list; 874 GList *list;
1037 875
1038 if (!(file = open_vfs_file(filename, "rb")) || 876 if (!(file = open_vfs_file(filename, "rb")) ||
1039 !(list = import_winamp_eqf(file))) 877 !(list = aud_import_winamp_eqf(file)))
1040 return; 878 return;
1041 879
1042 equalizer_presets = g_list_concat(equalizer_presets, list); 880 equalizer_presets = g_list_concat(equalizer_presets, list);
1043 equalizerwin_write_preset_file(equalizer_presets, "eq.preset"); 881 aud_equalizer_write_preset_file(equalizer_presets, "eq.preset");
1044 882
1045 vfs_fclose(file); 883 aud_vfs_fclose(file);
1046 #endif
1047 }
1048
1049 static void
1050 save_preset_file(const gchar * filename)
1051 {
1052 #if 0
1053 RcFile *rcfile;
1054 gint i;
1055
1056 rcfile = aud_rcfile_new();
1057 aud_rcfile_write_float(rcfile, "Equalizer preset", "Preamp",
1058 ui_skinned_equalizer_slider_get_position(equalizerwin_preamp));
1059
1060 for (i = 0; i < 10; i++) {
1061 gchar tmp[7];
1062 g_snprintf(tmp, sizeof(tmp), "Band%d", i);
1063 aud_rcfile_write_float(rcfile, "Equalizer preset", tmp,
1064 ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]));
1065 }
1066
1067 aud_rcfile_write(rcfile, filename);
1068 aud_rcfile_free(rcfile);
1069 #endif
1070 } 884 }
1071 885
1072 static void 886 static void
1073 save_winamp_file(const gchar * filename) 887 save_winamp_file(const gchar * filename)
1074 { 888 {
1075 #if 0
1076 VFSFile *file; 889 VFSFile *file;
1077 890
1078 gchar name[257]; 891 gchar name[257];
1079 gint i; 892 gint i;
1080 guchar bands[11]; 893 guchar bands[11];
1081 894
1082 if (!(file = open_vfs_file(filename, "wb"))) 895 if (!(file = open_vfs_file(filename, "wb")))
1083 return; 896 return;
1084 897
1085 vfs_fwrite("Winamp EQ library file v1.1\x1a!--", 1, 31, file); 898 aud_vfs_fwrite("Winamp EQ library file v1.1\x1a!--", 1, 31, file);
1086 899
1087 memset(name, 0, 257); 900 memset(name, 0, 257);
1088 g_strlcpy(name, "Entry1", 257); 901 g_strlcpy(name, "Entry1", 257);
1089 vfs_fwrite(name, 1, 257, file); 902 aud_vfs_fwrite(name, 1, 257, file);
1090 903
1091 for (i = 0; i < 10; i++) 904 for (i = 0; i < 10; i++)
1092 bands[i] = 63 - (((ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]) + EQUALIZER_MAX_GAIN) * 63) / EQUALIZER_MAX_GAIN / 2); 905 bands[i] = 63 - (((ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]) + EQUALIZER_MAX_GAIN) * 63) / EQUALIZER_MAX_GAIN / 2);
1093 bands[10] = 63 - (((ui_skinned_equalizer_slider_get_position(equalizerwin_preamp) + EQUALIZER_MAX_GAIN) * 63) / EQUALIZER_MAX_GAIN / 2); 906 bands[10] = 63 - (((ui_skinned_equalizer_slider_get_position(equalizerwin_preamp) + EQUALIZER_MAX_GAIN) * 63) / EQUALIZER_MAX_GAIN / 2);
1094 vfs_fwrite(bands, 1, 11, file); 907 aud_vfs_fwrite(bands, 1, 11, file);
1095 908
1096 vfs_fclose(file); 909 aud_vfs_fclose(file);
1097 #endif
1098 } 910 }
1099 911
1100 static GtkWidget * 912 static GtkWidget *
1101 equalizerwin_create_list_window(GList *preset_list, 913 equalizerwin_create_list_window(GList *preset_list,
1102 const gchar *title, 914 const gchar *title,
1208 } 1020 }
1209 1021
1210 void 1022 void
1211 equalizerwin_load_auto_preset(const gchar * filename) 1023 equalizerwin_load_auto_preset(const gchar * filename)
1212 { 1024 {
1213 #if 0
1214 gchar *presetfilename, *directory; 1025 gchar *presetfilename, *directory;
1215 RcFile *rcfile;
1216 1026
1217 g_return_if_fail(filename != NULL); 1027 g_return_if_fail(filename != NULL);
1218 1028
1219 if (!aud_cfg->equalizer_autoload) 1029 if (!aud_cfg->equalizer_autoload)
1220 return; 1030 return;
1221 1031
1222 presetfilename = g_strconcat(filename, ".", aud_cfg->eqpreset_extension, NULL); 1032 presetfilename = g_strconcat(filename, ".", aud_cfg->eqpreset_extension, NULL);
1223 1033
1224 /* First try to find a per file preset file */ 1034 /* First try to find a per file preset file */
1225 if (strlen(aud_cfg->eqpreset_extension) > 0 && 1035 if (strlen(aud_cfg->eqpreset_extension) > 0) {
1226 (rcfile = aud_rcfile_open(presetfilename)) != NULL) { 1036 equalizerwin_read_aud_preset(presetfilename);
1227 g_free(presetfilename); 1037 g_free(presetfilename);
1228 equalizerwin_read_aud_preset(rcfile);
1229 aud_rcfile_free(rcfile);
1230 return; 1038 return;
1231 } 1039 }
1232 1040
1233 g_free(presetfilename); 1041 g_free(presetfilename);
1234 1042
1236 presetfilename = g_build_filename(directory, aud_cfg->eqpreset_default_file, 1044 presetfilename = g_build_filename(directory, aud_cfg->eqpreset_default_file,
1237 NULL); 1045 NULL);
1238 g_free(directory); 1046 g_free(directory);
1239 1047
1240 /* Try to find a per directory preset file */ 1048 /* Try to find a per directory preset file */
1241 if (strlen(aud_cfg->eqpreset_default_file) > 0 && 1049 if (strlen(aud_cfg->eqpreset_default_file) > 0) {
1242 (rcfile = aud_rcfile_open(presetfilename)) != NULL) { 1050 equalizerwin_read_aud_preset(presetfilename);
1243 equalizerwin_read_aud_preset(rcfile);
1244 aud_rcfile_free(rcfile);
1245 } 1051 }
1246 else if (!equalizerwin_load_preset 1052 else if (!equalizerwin_load_preset
1247 (equalizer_auto_presets, g_basename(filename))) { 1053 (equalizer_auto_presets, g_basename(filename))) {
1248 /* Fall back to the oldstyle auto presets */ 1054 /* Fall back to the oldstyle auto presets */
1249 equalizerwin_load_preset(equalizer_presets, "Default"); 1055 equalizerwin_load_preset(equalizer_presets, "Default");
1250 } 1056 }
1251 1057
1252 g_free(presetfilename); 1058 g_free(presetfilename);
1253 #endif
1254 } 1059 }
1255 1060
1256 void 1061 void
1257 equalizerwin_set_preamp(gfloat preamp) 1062 equalizerwin_set_preamp(gfloat preamp)
1258 { 1063 {
1340 1145
1341 dialog = make_filebrowser(Q_("Load equalizer preset"), FALSE); 1146 dialog = make_filebrowser(Q_("Load equalizer preset"), FALSE);
1342 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) 1147 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
1343 { 1148 {
1344 file_uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); 1149 file_uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog));
1345 load_preset_file(file_uri); 1150 EqualizerPreset *preset = aud_load_preset_file(file_uri);
1151 equalizerwin_apply_preset(preset);
1152 equalizer_preset_free(preset);
1346 g_free(file_uri); 1153 g_free(file_uri);
1347 } 1154 }
1348 gtk_widget_destroy(dialog); 1155 gtk_widget_destroy(dialog);
1349 } 1156 }
1350 1157
1436 { 1243 {
1437 GtkWidget *dialog; 1244 GtkWidget *dialog;
1438 gchar *file_uri; 1245 gchar *file_uri;
1439 gchar *songname; 1246 gchar *songname;
1440 Playlist *playlist = aud_playlist_get_active(); 1247 Playlist *playlist = aud_playlist_get_active();
1248 gint i;
1441 1249
1442 dialog = make_filebrowser(Q_("Save equalizer preset"), TRUE); 1250 dialog = make_filebrowser(Q_("Save equalizer preset"), TRUE);
1443 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) 1251 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
1444 { 1252 {
1445 file_uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); 1253 file_uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog));
1446 save_preset_file(file_uri); 1254 EqualizerPreset *preset = g_new0(EqualizerPreset, 1);
1255 preset->name = g_strdup(file_uri);
1256 preset->preamp = ui_skinned_equalizer_slider_get_position(equalizerwin_preamp);
1257 for (i = 0; i < 10; i++)
1258 preset->bands[i] = ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]);
1259 aud_save_preset_file(preset, file_uri);
1260 equalizer_preset_free(preset);
1447 g_free(file_uri); 1261 g_free(file_uri);
1448 } 1262 }
1449 1263
1450 songname = aud_playlist_get_filename(playlist, aud_playlist_get_position(playlist)); 1264 songname = aud_playlist_get_filename(playlist, aud_playlist_get_position(playlist));
1451 if (songname) { 1265 if (songname) {