src/savedstatuses.c

changeset 13388
56132ad4179e
parent 13247
2162ed1a6f41
child 13675
edc4a39fd463
--- 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());
 }
 

mercurial