changeset 5267:3cd24f012091

[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 <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Thu, 01 May 2003 07:46:09 +0000
parents b3a03b86b09b
children 503cc9b0a8ef
files plugins/Makefile.am plugins/statenotify.c
diffstat 2 files changed, 110 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- 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
 
--- /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 <chipx86@gnupdate.org>",       /**< 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);