diff plugins/statenotify.c @ 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
children 1c55b1540e18
line wrap: on
line diff
--- /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);