annotate plugins/autorecon.c @ 1378:aedeb1218a0a

[gaim-migrate @ 1388] libfaim has a bad cap for Games, update the TODO for Jabber stuff, and make autorecon.c work better, I hope committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Fri, 05 Jan 2001 00:17:43 +0000
parents 3daec853f3c6
children 96e93119268d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
99
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1 #define GAIM_PLUGINS
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2 #include "gaim.h"
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3 #include <gtk/gtk.h>
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4
151
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
5 extern GtkWidget *imaway;
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
6
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
7 static int away_state;
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
8 static int forced_off = 0;
1378
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
9 static struct away_message *last_away = NULL;
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
10 GSList *reconnects = NULL;
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
11 GSList *recontim = NULL;
99
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
12
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
13 char *name() {
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
14 return "Auto Reconnect";
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
15 }
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
16
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
17 char *description() {
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
18 return "When AOL kicks you off, this auto-reconnects you.";
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
19 }
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
20
1378
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
21 static void now_online(struct gaim_connection *gc, void *m) {
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
22 gint place;
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
23 guint recon;
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
24 if (!g_slist_find(reconnects, gc->user))
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
25 return;
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
26 place = g_slist_index(reconnects, gc->user);
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
27 recon = (guint)g_slist_nth(recontim, place);
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
28 reconnects = g_slist_remove(reconnects, gc->user);
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
29 recontim = g_slist_remove(recontim, (void *)recon);
1000
91b7377e7b45 [gaim-migrate @ 1010]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 631
diff changeset
30 if (away_state) do_away_message(NULL, last_away);
99
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
31 }
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
32
1378
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
33 static void do_signon(struct aim_user *u) {
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
34 gint place;
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
35 guint recon;
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
36 place = g_slist_index(reconnects, u);
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
37 recon = (guint)g_slist_nth(recontim, place);
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
38 gtk_timeout_remove(recon);
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
39 forced_off = 0;
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
40 serv_login(u);
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
41 }
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
42
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
43 static void reconnect(struct gaim_connection *gc, void *m) {
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
44 guint recon;
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
45 if (g_slist_find(reconnects, gc->user))
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
46 return;
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
47 recon = gtk_timeout_add(8000, (GtkFunction)do_signon, gc->user);
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
48 reconnects = g_slist_append(reconnects, gc->user);
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
49 recontim = g_slist_append(recontim, (void *)recon);
151
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
50 forced_off = 1;
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
51 }
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
52
1378
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
53 static void away_toggle(void *m) {
151
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
54 if ((int)m == 1) {
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
55 last_away = awaymessage;
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
56 away_state = 1;
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
57 } else if (!forced_off)
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
58 away_state = 0;
99
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
59 }
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
60
1047
ece2d1543b20 [gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1030
diff changeset
61 char *gaim_plugin_init(GModule *handle) {
151
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
62 if (imaway) {
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
63 away_state = 1;
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
64 last_away = awaymessage;
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
65 } else
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
66 away_state = 0;
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
67
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
68 gaim_signal_connect(handle, event_away, away_toggle, (void *)1);
c754e5ae442a [gaim-migrate @ 161]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 148
diff changeset
69 gaim_signal_connect(handle, event_back, away_toggle, (void *)0);
99
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
70 gaim_signal_connect(handle, event_signoff, reconnect, NULL);
1378
aedeb1218a0a [gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1165
diff changeset
71 gaim_signal_connect(handle, event_signon, now_online, NULL);
1047
ece2d1543b20 [gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1030
diff changeset
72
ece2d1543b20 [gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1030
diff changeset
73 return NULL;
99
f810fc7d423f [gaim-migrate @ 109]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
74 }