view plugins/statenotify.c @ 5344:fda2d94b9434

[gaim-migrate @ 5720] Tim Mooney (enchanter) writes: "configure.ac calls AC_PATH_XTRA and then assumes $x_libraries will be set. You can't rely on this, because on platforms where the libraries and headers are in places that the development toolchain searches by default, configure will *NOT* set $x_libraries or $x_includes. This incorrect assumption causes configure to miss several X-related tests, and it causes the final link to fail on platforms like Tru64 UNIX or Solaris (and likely others)." as this did not break my compile, i'm going ahead and committing this. committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Sat, 10 May 2003 12:47:17 +0000
parents 3cd24f012091
children 1c55b1540e18
line wrap: on
line source

#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);