Update of /cvsroot/gaim/gaim/plugins
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7837/plugins
Modified Files:
ChangeLog.API signals-test.c statenotify.c
Log Message:
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.
Index: ChangeLog.API
===================================================================
RCS file: /cvsroot/gaim/gaim/plugins/ChangeLog.API,v
retrieving revision 1.98
retrieving revision 1.99
diff -u -d -p -r1.98 -r1.99
--- ChangeLog.API 31 Oct 2005 05:57:23 -0000 1.98
+++ ChangeLog.API 31 Oct 2005 22:02:30 -0000 1.99
@@ -168,9 +168,17 @@ version 2.0.0:
* "file-send-complete": See Doxygen docs for details.
* "buddy-added": Self explanatory; see Doxygen docs for full details.
* "buddy-removed": Self explanatory; see Doxygen docs for full details.
- * "blist-node-aliased": an alias was set for a buddy, chat or contact.
+ * "blist-node-aliased": An alias was set for a buddy, chat or contact.
+ * "buddy-status-changed": A buddy changed status; see Doxygen docs for full details.
+ * "buddy-idle-changed": A buddy's idle status changed; see Doxygen docs for full details.
See Doxygen docs for details.
+ Signals - Removed:
+ * "buddy-away": replaced by buddy-status-changed
+ * "buddy-back": replaced by buddy-status-changed
+ * "buddy-idle": replaced by buddy-idle-changed
+ * "buddy-unidle": replaced by buddy-idle-changed
+
version 1.5.0 (8/11/2005):
* Added: gaim_xfer_conversation_write
Writes a messages to a conversation window with the use
Index: signals-test.c
===================================================================
RCS file: /cvsroot/gaim/gaim/plugins/signals-test.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -p -r1.30 -r1.31
--- signals-test.c 30 Oct 2005 17:03:59 -0000 1.30
+++ signals-test.c 31 Oct 2005 22:02:30 -0000 1.31
@@ -82,27 +82,20 @@ buddy_icon_cached_cb(GaimBuddyIcon *icon
* Buddy List subsystem signal callbacks
**************************************************************************/
static void
-buddy_away_cb(GaimBuddy *buddy, void *data)
-{
- gaim_debug_misc("signals test", "buddy-away (%s)\n", buddy->name);
-}
-
-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_status_changed_cb(GaimBuddy *buddy, GaimStatus *old_status,
+ GaimStatus *status, void *data)
{
- gaim_debug_misc("signals test", "buddy-idle (%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_unidle_cb(GaimBuddy *buddy, void *data)
+buddy_idle_changed_cb(GaimBuddy *buddy, gboolean old_idle, gboolean idle,
+ 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_load(GaimPlugin *plugin)
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",
Index: statenotify.c
===================================================================
RCS file: /cvsroot/gaim/gaim/plugins/statenotify.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -p -r1.26 -r1.27
--- statenotify.c 30 Oct 2005 17:18:20 -0000 1.26
+++ statenotify.c 31 Oct 2005 22:02:30 -0000 1.27
@@ -36,31 +36,33 @@ write_status(GaimBuddy *buddy, const cha
}
static void
-buddy_away_cb(GaimBuddy *buddy, void *data)
+buddy_status_changed_cb(GaimBuddy *buddy, GaimStatus *old_status,
+ GaimStatus *status, void *data)
{
- if (gaim_prefs_get_bool("/plugins/core/statenotify/notify_away"))
- write_status(buddy, _("%s has gone away."));
-}
+ gboolean available, old_available;
-static void
-buddy_unaway_cb(GaimBuddy *buddy, void *data)
-{
- if (gaim_prefs_get_bool("/plugins/core/statenotify/notify_away"))
- write_status(buddy, _("%s is no longer away."));
-}
+ available = gaim_status_is_available(status);
+ old_available = gaim_status_is_available(old_status);
-static void
-buddy_idle_cb(GaimBuddy *buddy, void *data)
-{
- if (gaim_prefs_get_bool("/plugins/core/statenotify/notify_idle"))
- write_status(buddy, _("%s has become idle."));
+ if (gaim_prefs_get_bool("/plugins/core/statenotify/notify_away")) {
+ if (available && !old_available)
+ write_status(buddy, _("%s is no longer away."));
+ else if (!available && old_available)
+ write_status(buddy, _("%s has gone away."));
+ }
}
static void
-buddy_unidle_cb(GaimBuddy *buddy, void *data)
+buddy_idle_changed_cb(GaimBuddy *buddy, gboolean old_idle, gboolean idle,
+ void *data)
{
- if (gaim_prefs_get_bool("/plugins/core/statenotify/notify_idle"))
- write_status(buddy, _("%s is no longer idle."));
+ if (gaim_prefs_get_bool("/plugins/core/statenotify/notify_idle")) {
+ if (idle) {
+ write_status(buddy, _("%s has become idle."));
+ } else {
+ write_status(buddy, _("%s is no longer idle."));
+ }
+ }
}
static void
@@ -105,18 +107,14 @@ plugin_load(GaimPlugin *plugin)
{
void *blist_handle = gaim_blist_get_handle();
- 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_unaway_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-signed-on",
- plugin, GAIM_CALLBACK(buddy_signon_cb), NULL);
- gaim_signal_connect(blist_handle, "buddy-signed-off",
- plugin, GAIM_CALLBACK(buddy_signoff_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_signon_cb), NULL);
+ gaim_signal_connect(blist_handle, "buddy-signed-off", plugin,
+ GAIM_CALLBACK(buddy_signoff_cb), NULL);
return TRUE;
}
|