Author: kelnos
Date: 2007-12-31 23:19:24 +0000 (Mon, 31 Dec 2007)
New Revision: 26520

Modified:
   xfmedia/trunk/src/playlist.c
Log:
use signals to save playlist


Modified: xfmedia/trunk/src/playlist.c
===================================================================
--- xfmedia/trunk/src/playlist.c        2007-12-31 23:14:57 UTC (rev 26519)
+++ xfmedia/trunk/src/playlist.c        2007-12-31 23:19:24 UTC (rev 26520)
@@ -110,6 +110,8 @@
 static gboolean xfmedia_playlist_save_as_cb(GtkWidget *w, gpointer user_data);
 static gint 
xfmedia_playlist_entry_ref_get_filtered_index(XfmediaPlaylistEntryRef *ref);
 
+static void xfmedia_playlist_schedule_autosave(XfmediaPlaylist *playlist);
+
 struct _XfmediaPlaylistEntryRef
 {
     XfmediaPlaylist *plist;
@@ -208,6 +210,10 @@
 static void
 xfmedia_playlist_class_init(XfmediaPlaylistClass *klass)
 {
+    typedef void (*efunc1)(XfmediaPlaylist *);
+    typedef void (*efunc2)(XfmediaPlaylist *, const gchar *);
+    typedef void (*efunc3)(XfmediaPlaylist *, gint);
+    
     GObjectClass *gobject_class;
     
     gobject_class = (GObjectClass *)klass;
@@ -216,6 +222,12 @@
     
     gobject_class->finalize = xfmedia_playlist_finalize;
     
+    klass->playlist_cleared = (efunc1)xfmedia_playlist_schedule_autosave;
+    klass->playlist_opened = (efunc2)xfmedia_playlist_schedule_autosave;
+    klass->entry_added = (efunc3)xfmedia_playlist_schedule_autosave;
+    klass->entry_changed = (efunc3)xfmedia_playlist_schedule_autosave;
+    klass->entry_removed = (efunc2)xfmedia_playlist_schedule_autosave;
+    
     __signals[PLIST_SIG_CLEARED] = g_signal_new("playlist-cleared",
             XFMEDIA_TYPE_PLAYLIST, G_SIGNAL_RUN_LAST,
             G_STRUCT_OFFSET(XfmediaPlaylistClass, playlist_cleared), NULL, 
NULL,
@@ -744,10 +756,8 @@
         filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser));
         if(filename) {
             xfmedia_playlist_clear(plist);
-            if(xfmedia_playlists_load(plist, filename)) {
-                xfmedia_playlist_schedule_autosave(plist);
+            if(xfmedia_playlists_load(plist, filename))
                 g_signal_emit(G_OBJECT(plist), __signals[PLIST_SIG_OPENED], 0, 
filename);
-            }
             g_free(filename);
         }
         if(plist->priv->chooser_last_dir)
@@ -1696,8 +1706,6 @@
     g_signal_emit(G_OBJECT(plist), __signals[PLIST_SIG_ENTRY_ADDED], 0, idx);
     
     g_free(filename_new);
-    
-    xfmedia_playlist_schedule_autosave(plist);
 }
 
 guint
@@ -1771,8 +1779,6 @@
     }
     
     g_signal_emit(G_OBJECT(plist), __signals[PLIST_SIG_ENTRY_CHANGED], 0, idx);
-    
-    xfmedia_playlist_schedule_autosave(plist);
 }
 
 gboolean
@@ -1801,8 +1807,6 @@
     if(filename)
         g_free(filename);
     
-    xfmedia_playlist_schedule_autosave(plist);
-    
     return TRUE;
 }
 
@@ -1813,8 +1817,6 @@
     
     gtk_list_store_clear(plist->priv->file_list);
     g_signal_emit(G_OBJECT(plist), __signals[PLIST_SIG_CLEARED], 0);
-    
-    xfmedia_playlist_schedule_autosave(plist);
 }
 
 

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to