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