diff src/audacious/ui_equalizer.c @ 4325:309e8f970517

removed report_error() and reimplemented some error routines
author mf0102 <0102@gmx.at>
date Thu, 13 Mar 2008 16:31:48 +0100
parents 70fc534162ec
children 15c491f342eb
line wrap: on
line diff
--- a/src/audacious/ui_equalizer.c	Thu Mar 13 01:43:19 2008 +0300
+++ b/src/audacious/ui_equalizer.c	Thu Mar 13 16:31:48 2008 +0100
@@ -777,19 +777,21 @@
     gint i = 0;
     EqualizerPreset *preset = NULL;
     GList *list = NULL;
+    GtkWidget *dialog;
+    gchar *realfn;
     gchar preset_name[0xb4];
 
     vfs_fread(header, 1, 31, file);
-    if (strncmp(header, "Winamp EQ library file v1.1", 27)) return NULL;
+    if (strncmp(header, "Winamp EQ library file v1.1", 27)) goto error;
 
     AUDDBG("The EQF header is OK\n");
 
-    if(vfs_fseek(file, 0x1f, SEEK_SET) == -1) return NULL;
+    if (vfs_fseek(file, 0x1f, SEEK_SET) == -1) goto error;
 
-    while(vfs_fread(preset_name, 1, 0xb4, file) == 0xb4) {
+    while (vfs_fread(preset_name, 1, 0xb4, file) == 0xb4) {
         AUDDBG("The preset name is '%s'\n", preset_name);
         vfs_fseek(file, 0x4d, SEEK_CUR); /* unknown crap --asphyx */
-        if(vfs_fread(bands, 1, 11, file) != 11) break;
+        if (vfs_fread(bands, 1, 11, file) != 11) break;
 
         preset = equalizer_preset_new(preset_name);
         /*this was divided by 63, but shouldn't it be 64? --majeru*/
@@ -802,7 +804,22 @@
     }
     
     list = g_list_reverse(list);
+    if (list == NULL) goto error;
+
     return list;
+
+error:
+    realfn = g_filename_from_uri(file->uri, NULL, NULL);
+    dialog = gtk_message_dialog_new (GTK_WINDOW(mainwin),
+                                     GTK_DIALOG_DESTROY_WITH_PARENT,
+                                     GTK_MESSAGE_ERROR,
+                                     GTK_BUTTONS_CLOSE,
+                                     _("Error importing Winamp EQF file '%s'"),
+                                     realfn);
+    gtk_dialog_run (GTK_DIALOG (dialog));
+    gtk_widget_destroy (dialog);
+    g_free(realfn);
+    return NULL;
 }
 
 static void
@@ -817,13 +834,17 @@
     GList *presets;
     gint i;
 
-    if((presets = import_winamp_eqf(file)) == NULL) return;
-    EqualizerPreset *preset = (EqualizerPreset*)presets->data; /* just get the first preset --asphyx */
+    if ((presets = import_winamp_eqf(file)) == NULL)
+        return;
 
-    ui_skinned_equalizer_slider_set_position(equalizerwin_preamp, preset->preamp);
+    /* just get the first preset --asphyx */
+    EqualizerPreset *preset = (EqualizerPreset*)presets->data;
+    ui_skinned_equalizer_slider_set_position(equalizerwin_preamp,
+                                             preset->preamp);
 
     for (i = 0; i < 10; i++)
-        ui_skinned_equalizer_slider_set_position(equalizerwin_bands[i],  preset->bands[i]);
+        ui_skinned_equalizer_slider_set_position(equalizerwin_bands[i],
+                                                 preset->bands[i]);
 
     g_list_foreach(presets, free_cb, NULL);
     g_list_free(presets);
@@ -1003,18 +1024,33 @@
     }
 }
 
+static VFSFile *
+open_vfs_file(const gchar *filename, const gchar *mode)
+{
+    VFSFile *file;
+    GtkWidget *dialog;
+
+    if (!(file = vfs_fopen(filename, mode))) {
+        dialog = gtk_message_dialog_new (GTK_WINDOW (mainwin),
+                                         GTK_DIALOG_DESTROY_WITH_PARENT,
+                                         GTK_MESSAGE_ERROR,
+                                         GTK_BUTTONS_CLOSE,
+                                         "Error loading file '%s'",
+                                         filename);
+        gtk_dialog_run (GTK_DIALOG (dialog));
+        gtk_widget_destroy (dialog);
+    }
+
+    return file;
+}
+
 static void
 load_winamp_file(const gchar * filename)
 {
     VFSFile *file;
-    gchar *tmp;
 
-    if (!(file = vfs_fopen(filename, "rb"))) {
-        tmp = g_strconcat("Failed to load WinAmp file: ",filename,"\n",NULL);
-        report_error(tmp);
-        g_free(tmp);
+    if (!(file = open_vfs_file(filename, "rb")))
         return;
-    }
 
     equalizerwin_read_winamp_eqf(file);
     vfs_fclose(file);
@@ -1024,15 +1060,11 @@
 import_winamp_file(const gchar * filename)
 {
     VFSFile *file;
-    gchar *tmp;
     GList *list;
 
-    if (!(file = vfs_fopen(filename, "rb")) || (list = import_winamp_eqf(file)) == NULL) {
-        tmp = g_strconcat("Failed to import WinAmp file: ",filename,"\n",NULL);
-        report_error(tmp);
-        g_free(tmp);
+    if (!(file = open_vfs_file(filename, "rb")) ||
+        !(list = import_winamp_eqf(file)))
         return;
-    }
 
     equalizer_presets = g_list_concat(equalizer_presets, list);
     equalizerwin_write_preset_file(equalizer_presets, "eq.preset");
@@ -1069,14 +1101,9 @@
     gchar name[257];
     gint i;
     guchar bands[11];
-    gchar *tmp;
 
-    if (!(file = vfs_fopen(filename, "wb"))) {
-        tmp = g_strconcat("Failed to save WinAmp file: ",filename,"\n",NULL);
-        report_error(tmp);
-        g_free(tmp);
+    if (!(file = open_vfs_file(filename, "wb")))
         return;
-    }
 
     vfs_fwrite("Winamp EQ library file v1.1\x1a!--", 1, 31, file);