# HG changeset patch # User Christian Hammond # Date 1051775169 0 # Node ID 3cd24f012091d9b4c061fe9d33f32d9c5f4ccd46 # Parent b3a03b86b09b98b86e318a51d0d7bc86eeec322b [gaim-migrate @ 5639] This neat little plugin, which may not have the best name, I dunno, what do you think? I just picked it. Anyhow, it will notify you in a conversation window when the buddy you're talking to has become away, returned from away, gone idle, or returned from idle. committer: Tailor Script diff -r b3a03b86b09b -r 3cd24f012091 plugins/Makefile.am --- a/plugins/Makefile.am Thu May 01 07:41:44 2003 +0000 +++ b/plugins/Makefile.am Thu May 01 07:46:09 2003 +0000 @@ -8,13 +8,14 @@ plugindir = $(libdir)/gaim -autorecon_la_LDFLAGS = -module -avoid-version -iconaway_la_LDFLAGS = -module -avoid-version -notify_la_LDFLAGS = -module -avoid-version -spellchk_la_LDFLAGS = -module -avoid-version -history_la_LDFLAGS = -module -avoid-version -timestamp_la_LDFLAGS = -module -avoid-version -idle_la_LDFLAGS = -module -avoid-version +autorecon_la_LDFLAGS = -module -avoid-version +iconaway_la_LDFLAGS = -module -avoid-version +notify_la_LDFLAGS = -module -avoid-version +spellchk_la_LDFLAGS = -module -avoid-version +history_la_LDFLAGS = -module -avoid-version +timestamp_la_LDFLAGS = -module -avoid-version +idle_la_LDFLAGS = -module -avoid-version +statenotify_la_LDFLAGS = -module -avoid-version if PLUGINS @@ -25,15 +26,17 @@ spellchk.la \ history.la \ timestamp.la \ - idle.la + idle.la \ + statenotify.la -autorecon_la_SOURCES = autorecon.c -iconaway_la_SOURCES = iconaway.c -notify_la_SOURCES = notify.c -spellchk_la_SOURCES = spellchk.c -history_la_SOURCES = history.c -timestamp_la_SOURCES = timestamp.c -idle_la_SOURCES = idle.c +autorecon_la_SOURCES = autorecon.c +iconaway_la_SOURCES = iconaway.c +notify_la_SOURCES = notify.c +spellchk_la_SOURCES = spellchk.c +history_la_SOURCES = history.c +timestamp_la_SOURCES = timestamp.c +idle_la_SOURCES = idle.c +statenotify_la_SOURCES = statenotify.c endif # PLUGINS diff -r b3a03b86b09b -r 3cd24f012091 plugins/statenotify.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/statenotify.c Thu May 01 07:46:09 2003 +0000 @@ -0,0 +1,92 @@ +#include "gaim.h" + +static void +write_status(struct gaim_connection *gc, char *who, const char *message) +{ + struct gaim_conversation *conv; + struct buddy *b; + char buf[256]; + + conv = gaim_find_conversation_with_account(who, gc->account); + + if (conv == NULL) + return; + + if ((b = gaim_find_buddy(gc->account, who)) != NULL) + who = gaim_get_buddy_alias(b); + + g_snprintf(buf, sizeof(buf), "%s %s", who, message); + + gaim_conversation_write(conv, NULL, buf, -1, WFLAG_SYSTEM, time(NULL)); +} + +static void +buddy_away_cb(struct gaim_connection *gc, char *who, void *data) +{ + write_status(gc, who, "has gone away."); +} + +static void +buddy_unaway_cb(struct gaim_connection *gc, char *who, void *data) +{ + write_status(gc, who, "is no longer away."); +} + +static void +buddy_idle_cb(struct gaim_connection *gc, char *who, void *data) +{ + write_status(gc, who, "has become idle."); +} + +static void +buddy_unidle_cb(struct gaim_connection *gc, char *who, void *data) +{ + write_status(gc, who, "is no longer idle."); +} + +static gboolean +plugin_load(GaimPlugin *plugin) +{ + gaim_signal_connect(plugin, event_buddy_away, buddy_away_cb, NULL); + gaim_signal_connect(plugin, event_buddy_back, buddy_unaway_cb, NULL); + gaim_signal_connect(plugin, event_buddy_idle, buddy_idle_cb, NULL); + gaim_signal_connect(plugin, event_buddy_unidle, buddy_unidle_cb, NULL); + + return TRUE; +} + +static GaimPluginInfo info = +{ + 2, /**< api_version */ + GAIM_PLUGIN_STANDARD, /**< type */ + NULL, /**< ui_requirement */ + 0, /**< flags */ + NULL, /**< dependencies */ + GAIM_PRIORITY_DEFAULT, /**< priority */ + + NULL, /**< id */ + N_("Buddy State Notification"), /**< name */ + VERSION, /**< version */ + /** summary */ + N_("Notifies in a conversation window when a buddy goes or returns from " + "away or idle."), + /** description */ + N_("Notifies in a conversation window when a buddy goes or returns from " + "away or idle."), + "Christian Hammond ", /**< author */ + WEBSITE, /**< homepage */ + + plugin_load, /**< load */ + NULL, /**< unload */ + NULL, /**< destroy */ + + NULL, /**< ui_info */ + NULL /**< extra_info */ +}; + +static void +__init_plugin(GaimPlugin *plugin) +{ +} + +GAIM_INIT_PLUGIN(statenotify, __init_plugin, info);