diff src/savedstatuses.c @ 13387:d9dbb874a30c

[gaim-migrate @ 15760] SF Patch #1441721 from Kevin Stange (SimGuy) "emit a signal when the current savedstatus changes" committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Fri, 03 Mar 2006 07:02:59 +0000
parents 24ac8fc885b8
children 5948086807cd
line wrap: on
line diff
--- a/src/savedstatuses.c	Fri Mar 03 06:14:20 2006 +0000
+++ b/src/savedstatuses.c	Fri Mar 03 07:02:59 2006 +0000
@@ -950,6 +950,7 @@
 gaim_savedstatus_activate(GaimSavedStatus *saved_status)
 {
 	GList *accounts, *node;
+	GaimSavedStatus *old = gaim_savedstatus_get_current();
 
 	g_return_if_fail(saved_status != NULL);
 
@@ -973,6 +974,10 @@
 
 	gaim_prefs_set_int("/core/savedstatus/current",
 					   gaim_savedstatus_get_creation_time(saved_status));
+
+	gaim_signal_emit(gaim_savedstatuses_get_handle(), "savedstatus-changed",
+					 saved_status, old);
+
 }
 
 void
@@ -1024,6 +1029,8 @@
 void
 gaim_savedstatuses_init(void)
 {
+	void *handle = gaim_savedstatuses_get_handle();
+
 	creation_times = g_hash_table_new(g_int_hash, g_int_equal);
 
 	/*
@@ -1040,6 +1047,13 @@
 	gaim_prefs_add_int("/core/savedstatus/idleaway", 0);
 
 	load_statuses();
+
+	gaim_signal_register(handle, "savedstatus-changed",
+					 gaim_marshal_VOID__POINTER_POINTER, NULL, 2,
+					 gaim_value_new(GAIM_TYPE_SUBTYPE,
+									GAIM_SUBTYPE_SAVEDSTATUS),
+					 gaim_value_new(GAIM_TYPE_SUBTYPE,
+									GAIM_SUBTYPE_SAVEDSTATUS));
 }
 
 void
@@ -1061,5 +1075,7 @@
 	}
 
 	g_hash_table_destroy(creation_times);
+
+	gaim_signals_unregister_by_instance(gaim_savedstatuses_get_handle());
 }