diff plugins/signals-test.c @ 11935:cb73483c9f63

[gaim-migrate @ 14226] Here are buddy-status-changed and buddy-idle-changed signals, to replace buddy-away, buddy-back, buddy-idle, and buddy-unidle. It it now possible to detect when a buddy goes from one away-state to another away-state without coming back in between. I'm not really sure I like how buddy-idle-changed works here, but it felt better to keep it consistent. It currently only fires on idle and unidle and not on just-more-idle, though that's easy to change if we decide plugins might want to know as idle time increases. I think I got all the doxygen and ChangeLog.API stuff, someone yell if I missed something. committer: Tailor Script <tailor@pidgin.im>
author Etan Reisner <pidgin@unreliablesource.net>
date Mon, 31 Oct 2005 22:02:30 +0000
parents 0b8b7e59cb4b
children d0662345799b
line wrap: on
line diff
--- a/plugins/signals-test.c	Mon Oct 31 20:35:59 2005 +0000
+++ b/plugins/signals-test.c	Mon Oct 31 22:02:30 2005 +0000
@@ -82,27 +82,20 @@
  * Buddy List subsystem signal callbacks
  **************************************************************************/
 static void
-buddy_away_cb(GaimBuddy *buddy, void *data)
+buddy_status_changed_cb(GaimBuddy *buddy, GaimStatus *old_status,
+                        GaimStatus *status, void *data)
 {
-	gaim_debug_misc("signals test", "buddy-away (%s)\n", buddy->name);
+	gaim_debug_misc("signals test", "buddy-status-changed (%s %s to %s)\n",
+	                buddy->name, gaim_status_get_id(old_status),
+	                gaim_status_get_id(status));
 }
 
 static void
-buddy_back_cb(GaimBuddy *buddy, void *data)
-{
-	gaim_debug_misc("signals test", "buddy-back (%s)\n", buddy->name);
-}
-
-static void
-buddy_idle_cb(GaimBuddy *buddy, void *data)
+buddy_idle_changed_cb(GaimBuddy *buddy, gboolean old_idle, gboolean idle,
+                      void *data)
 {
-	gaim_debug_misc("signals test", "buddy-idle (%s)\n", buddy->name);
-}
-
-static void
-buddy_unidle_cb(GaimBuddy *buddy, void *data)
-{
-	gaim_debug_misc("signals test", "buddy-unidle (%s)\n", buddy->name);
+	gaim_debug_misc("signals test", "buddy-idle-changed (%s %s)\n",
+	                buddy->name, old_idle ? "unidled" : "idled");
 }
 
 static void
@@ -585,14 +578,10 @@
 						plugin, GAIM_CALLBACK(buddy_icon_cached_cb), NULL);
 
 	/* Buddy List subsystem signals */
-	gaim_signal_connect(blist_handle, "buddy-away",
-						plugin, GAIM_CALLBACK(buddy_away_cb), NULL);
-	gaim_signal_connect(blist_handle, "buddy-back",
-						plugin, GAIM_CALLBACK(buddy_back_cb), NULL);
-	gaim_signal_connect(blist_handle, "buddy-idle",
-						plugin, GAIM_CALLBACK(buddy_idle_cb), NULL);
-	gaim_signal_connect(blist_handle, "buddy-unidle",
-						plugin, GAIM_CALLBACK(buddy_unidle_cb), NULL);
+	gaim_signal_connect(blist_handle, "buddy-status-changed",
+						plugin, GAIM_CALLBACK(buddy_status_changed_cb), NULL);
+	gaim_signal_connect(blist_handle, "buddy-idle-changed",
+						plugin, GAIM_CALLBACK(buddy_idle_changed_cb), NULL);
 	gaim_signal_connect(blist_handle, "buddy-signed-on",
 						plugin, GAIM_CALLBACK(buddy_signed_on_cb), NULL);
 	gaim_signal_connect(blist_handle, "buddy-signed-off",