Mercurial > pidgin
view plugins/autorecon.c @ 5032:cb700c07ee07
[gaim-migrate @ 5375]
Rewrote the buddy pounce code. It's now core/UI split, and may allow for
more advanced stuff later. Pounce actions are now a UI thing, and the
backend logic for registering, unregistering, and activating pouncs is now
in core. Also, the buddy pounce dialog was redesigned.
Oh, and there are new pounce types. You can now choose from:
* Sign on
* Sign off
* Away
* Return from away
* Idle
* Return from idle
* Buddy starts typing
* Buddy stops typing
Should work. I've been using it for some time. If you find a bug, though,
let me know.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Sat, 05 Apr 2003 10:14:21 +0000 |
parents | 3b8e6c2b4a50 |
children | fefad67de2c7 |
line wrap: on
line source
#include "config.h" #ifndef GAIM_PLUGINS #define GAIM_PLUGINS #endif #include "gaim.h" #include "prpl.h" #ifdef _WIN32 #include "win32dep.h" #endif G_MODULE_IMPORT GSList *gaim_accounts; #define INITIAL 8000 #define MAXTIME 2048000 static GHashTable *hash = NULL; static guint tim = 0; static gboolean do_signon(gpointer data) { struct gaim_account *account = data; debug_printf("do_signon called\n"); if (g_slist_index(gaim_accounts, account) < 0) return FALSE; debug_printf("calling serv_login\n"); serv_login(account); debug_printf("done calling serv_login\n"); tim = 0; return FALSE; } static void reconnect(struct gaim_connection *gc, void *m) { if (!gc->wants_to_die) { int del; del = (int)g_hash_table_lookup(hash, gc->account); if (!del) del = INITIAL; else del = MIN(2 * del, MAXTIME); tim = g_timeout_add(del, do_signon, gc->account); g_hash_table_insert(hash, gc->account, (gpointer)del); } else { g_hash_table_remove(hash, gc->account); } } /* * EXPORTED FUNCTIONS */ struct gaim_plugin_description desc; G_MODULE_EXPORT struct gaim_plugin_description *gaim_plugin_desc() { desc.api_version = PLUGIN_API_VERSION; desc.name = g_strdup(_("Autoreconnect")); desc.version = g_strdup(VERSION); desc.description = g_strdup(_("When you are kicked offline, this reconnects you.")); desc.authors = g_strdup("Eric Warmenhoven <eric@warmenhoven.org>"); desc.url = g_strdup(WEBSITE); return &desc; } G_MODULE_EXPORT char *name() { return _("Auto Reconnect"); } G_MODULE_EXPORT char *description() { return _("When you are kicked offline, this reconnects you."); } G_MODULE_EXPORT char *gaim_plugin_init(GModule *handle) { hash = g_hash_table_new(g_int_hash, g_int_equal); gaim_signal_connect(handle, event_signoff, reconnect, NULL); return NULL; } G_MODULE_EXPORT void gaim_plugin_remove() { if (tim) g_source_remove(tim); g_hash_table_destroy(hash); hash = NULL; tim = 0; }