plugins/autorecon.c

Tue, 21 Jun 2005 04:40:34 +0000

author
Sean Egan <seanegan@pidgin.im>
date
Tue, 21 Jun 2005 04:40:34 +0000
changeset 11016
9990e360ee9c
parent 10942
464c90d96757
child 11033
dc68e074f10d
permissions
-rw-r--r--

[gaim-migrate @ 12885]
Wherever possible, allow users to act on objects and data directly, rather
than through dialogs or explicit commands. For example, it is more intuitive
to drag a circle object around in a diagram rather than selecting a "Move"
command from a menu while the circle is selected. Simlarly, in an email
application, allow the user to attach files by dragging them from the file
manager and dropping them onto the message composition window if they wish.
-- GNOME HIG

This allows direct manipulation of buddy aliases and group names, by moving
the features from dialogs to GtkTreeView's inline editing.

I think this is a great change, but it seems like the type of thing that
might stir up controversy. If so, take it to the mailing list for discussion.
If not, I'll go ahead and perfect this sometime later.

-s.

5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5607
diff changeset
1 #include "internal.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5607
diff changeset
2
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5607
diff changeset
3 #include "connection.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5607
diff changeset
4 #include "debug.h"
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
5 #include "pluginpref.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5607
diff changeset
6 #include "prpl.h"
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
7 #include "signals.h"
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9930
diff changeset
8 #include "version.h"
4202
8b92de3b1c07 [gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents: 4113
diff changeset
9
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
10
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
11 #define AUTORECON_PLUGIN_ID "core-autorecon"
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
12
2216
ae70f10e0d27 [gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1818
diff changeset
13 #define INITIAL 8000
4590
6d79d7b29bcd [gaim-migrate @ 4874]
Luke Schierer <lschiere@pidgin.im>
parents: 4585
diff changeset
14 #define MAXTIME 2048000
2216
ae70f10e0d27 [gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1818
diff changeset
15
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
16 typedef struct {
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
17 int delay;
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
18 guint timeout;
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
19 } GaimAutoRecon;
2216
ae70f10e0d27 [gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1818
diff changeset
20
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
21 static GHashTable *hash = NULL;
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
22
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
23 static GSList *accountReconnecting = NULL;
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
24
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
25 #define AUTORECON_OPT "/plugins/core/autorecon"
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
26 #define OPT_HIDE_CONNECTED AUTORECON_OPT "/hide_connected_error"
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
27 #define OPT_HIDE_CONNECTING AUTORECON_OPT "/hide_connecting_error"
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
28 #define OPT_RESTORE_STATE AUTORECON_OPT "/restore_state"
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
29 #define OPT_HIDE_RECONNECTING_DIALOG AUTORECON_OPT "/hide_reconnecting_dialog"
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
30
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
31 /* storage of original (old_ops) and modified (new_ops) ui ops to allow us to
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
32 intercept calls to report_disconnect */
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
33 static GaimConnectionUiOps *old_ops = NULL;
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
34 static GaimConnectionUiOps *new_ops = NULL;
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
35
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
36 static void
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
37 connect_progress(GaimConnection *gc, const char *text,
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
38 size_t step, size_t step_count)
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
39 {
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
40 if (old_ops == NULL || old_ops->connect_progress == NULL) {
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
41 /* there's nothing to call through to, so don't bother
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
42 checking prefs */
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
43 return;
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
44 } else if (gaim_prefs_get_bool(OPT_HIDE_RECONNECTING_DIALOG) && accountReconnecting &&
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
45 g_slist_find(accountReconnecting, gc->account)) {
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
46 /* this is a reconnecting, and we're hiding those */
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
47 gaim_debug(GAIM_DEBUG_INFO, "autorecon",
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
48 "hide connecting dialog while reconnecting\n");
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
49 return;
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
50 }
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
51
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
52 old_ops->connect_progress(gc, text, step, step_count);
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
53 }
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
54
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
55 static void
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
56 connected(GaimConnection *gc)
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
57 {
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
58 if (old_ops == NULL || old_ops->connected == NULL) {
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
59 /* there's nothing to call through to, so don't bother
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
60 checking prefs */
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
61 return;
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
62 } else if (gaim_prefs_get_bool(OPT_HIDE_RECONNECTING_DIALOG) && accountReconnecting &&
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
63 g_slist_find(accountReconnecting, gc->account)) {
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
64 /* this is a reconnecting, and we're hiding those */
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
65 gaim_debug(GAIM_DEBUG_INFO, "autorecon",
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
66 "hide connecting dialog while reconnecting\n");
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
67 return;
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
68 }
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
69
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
70 old_ops->connected(gc);
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
71 }
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
72
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
73 static void
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
74 disconnected(GaimConnection *gc)
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
75 {
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
76 if (old_ops == NULL || old_ops->disconnected == NULL) {
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
77 /* there's nothing to call through to, so don't bother
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
78 checking prefs */
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
79 return;
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
80 } else if (gaim_prefs_get_bool(OPT_HIDE_RECONNECTING_DIALOG) && accountReconnecting &&
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
81 g_slist_find(accountReconnecting, gc->account)) {
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
82 /* this is a reconnecting, and we're hiding those */
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
83 gaim_debug(GAIM_DEBUG_INFO, "autorecon",
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
84 "hide connecting dialog while reconnecting\n");
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
85 return;
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
86 }
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
87
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
88 old_ops->disconnected(gc);
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
89 }
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
90
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
91 static void
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
92 notice(GaimConnection *gc, const char *text)
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
93 {
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
94 if (old_ops == NULL || old_ops->notice == NULL) {
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
95 /* there's nothing to call through to, so don't bother
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
96 checking prefs */
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
97 return;
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
98 } else if (gaim_prefs_get_bool(OPT_HIDE_RECONNECTING_DIALOG) && accountReconnecting &&
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
99 g_slist_find(accountReconnecting, gc->account)) {
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
100 /* this is a reconnecting, and we're hiding those */
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
101 gaim_debug(GAIM_DEBUG_INFO, "autorecon",
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
102 "hide connecting dialog while reconnecting\n");
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
103 }
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
104
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
105 old_ops->notice(gc, text);
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
106 }
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
107
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
108 static void
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
109 report_disconnect(GaimConnection *gc, const char *text)
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
110 {
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
111 if (old_ops == NULL || old_ops->report_disconnect == NULL) {
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
112 /* there's nothing to call through to, so don't bother
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
113 checking prefs */
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
114 return;
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
115
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
116 } else if (gc->state == GAIM_CONNECTED
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
117 && gaim_prefs_get_bool(OPT_HIDE_CONNECTED)) {
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
118 /* this is a connected error, and we're hiding those */
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
119 gaim_debug(GAIM_DEBUG_INFO, "autorecon",
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10020
diff changeset
120 "hid disconnect error message (%s)\n", text);
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
121 return;
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
122
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
123 } else if (gc->state == GAIM_CONNECTING
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
124 && gaim_prefs_get_bool(OPT_HIDE_CONNECTING)) {
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
125 /* this is a connecting error, and we're hiding those */
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
126 gaim_debug(GAIM_DEBUG_INFO, "autorecon",
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10020
diff changeset
127 "hid error message while connecting (%s)\n", text);
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
128 return;
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
129 }
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
130
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
131 /* if we haven't returned by now, then let's pass to the real
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
132 function */
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
133 old_ops->report_disconnect(gc, text);
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
134 }
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
135
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
136
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
137 static gboolean
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
138 do_signon(gpointer data)
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
139 {
5587
22cb9fe4798a [gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents: 5227
diff changeset
140 GaimAccount *account = data;
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
141 GaimAutoRecon *info;
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
142
5227
6b44f7901f94 [gaim-migrate @ 5597]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
143 gaim_debug(GAIM_DEBUG_INFO, "autorecon", "do_signon called\n");
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
144 g_return_val_if_fail(account != NULL, FALSE);
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
145 info = g_hash_table_lookup(hash, account);
4494
c170d1ed7fde [gaim-migrate @ 4769]
Herman Bloggs <herman@bluedigits.com>
parents: 4491
diff changeset
146
5607
48b119a7281c [gaim-migrate @ 6011]
Nathan Walp <nwalp@pidgin.im>
parents: 5587
diff changeset
147 if (g_list_index(gaim_accounts_get_all(), account) < 0)
1817
67ad2e2348a2 [gaim-migrate @ 1827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1404
diff changeset
148 return FALSE;
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
149
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
150 if (info)
7372
fa7e97e91952 [gaim-migrate @ 7967]
Nathan Walp <nwalp@pidgin.im>
parents: 7112
diff changeset
151 info->timeout = 0;
fa7e97e91952 [gaim-migrate @ 7967]
Nathan Walp <nwalp@pidgin.im>
parents: 7112
diff changeset
152
5587
22cb9fe4798a [gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents: 5227
diff changeset
153 gaim_debug(GAIM_DEBUG_INFO, "autorecon", "calling gaim_account_connect\n");
10738
63ca8277c234 [gaim-migrate @ 12340]
Mark Doliner <markdoliner@pidgin.im>
parents: 10574
diff changeset
154 gaim_account_connect(account);
5587
22cb9fe4798a [gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents: 5227
diff changeset
155 gaim_debug(GAIM_DEBUG_INFO, "autorecon", "done calling gaim_account_connect\n");
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
156
1817
67ad2e2348a2 [gaim-migrate @ 1827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1404
diff changeset
157 return FALSE;
1378
49578635eddb [gaim-migrate @ 1388]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1165
diff changeset
158 }
49578635eddb [gaim-migrate @ 1388]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1165
diff changeset
159
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
160
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
161 static void
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
162 reconnect(GaimConnection *gc, void *m)
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
163 {
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
164 GaimAccount *account;
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
165 GaimAutoRecon *info;
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
166 GSList* listAccount;
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
167
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
168 g_return_if_fail(gc != NULL);
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
169 account = gaim_connection_get_account(gc);
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
170 info = g_hash_table_lookup(hash, account);
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
171 if (accountReconnecting)
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
172 listAccount = g_slist_find(accountReconnecting, account);
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
173 else
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
174 listAccount = NULL;
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
175
2216
ae70f10e0d27 [gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1818
diff changeset
176 if (!gc->wants_to_die) {
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
177 if (info == NULL) {
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
178 info = g_new0(GaimAutoRecon, 1);
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
179 g_hash_table_insert(hash, account, info);
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
180 info->delay = INITIAL;
8249
b6223529f267 [gaim-migrate @ 8972]
Mark Doliner <markdoliner@pidgin.im>
parents: 8246
diff changeset
181 } else {
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
182 info->delay = MIN(2 * info->delay, MAXTIME);
8250
e855dcce1fa0 [gaim-migrate @ 8973]
Mark Doliner <markdoliner@pidgin.im>
parents: 8249
diff changeset
183 if (info->timeout != 0)
e855dcce1fa0 [gaim-migrate @ 8973]
Mark Doliner <markdoliner@pidgin.im>
parents: 8249
diff changeset
184 g_source_remove(info->timeout);
8249
b6223529f267 [gaim-migrate @ 8972]
Mark Doliner <markdoliner@pidgin.im>
parents: 8246
diff changeset
185 }
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
186 info->timeout = g_timeout_add(info->delay, do_signon, account);
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
187
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
188 if (!listAccount)
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
189 accountReconnecting = g_slist_prepend(accountReconnecting, account);
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
190 } else if (info != NULL) {
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
191 g_hash_table_remove(hash, account);
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
192
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
193 if (listAccount)
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
194 accountReconnecting = g_slist_delete_link(accountReconnecting, listAccount);
2216
ae70f10e0d27 [gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1818
diff changeset
195 }
9546
bcd32e572e19 [gaim-migrate @ 10375]
Yosef Radchenko
parents: 8993
diff changeset
196 }
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
197
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
198 static void
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
199 reconnected(GaimConnection *gc, void *m)
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
200 {
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
201 GaimAccount *account;
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
202
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
203 g_return_if_fail(gc != NULL);
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
204
10942
464c90d96757 [gaim-migrate @ 12733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10757
diff changeset
205 account = gaim_connection_get_account(gc);
464c90d96757 [gaim-migrate @ 12733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10757
diff changeset
206
464c90d96757 [gaim-migrate @ 12733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10757
diff changeset
207 g_hash_table_remove(hash, account);
464c90d96757 [gaim-migrate @ 12733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10757
diff changeset
208
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
209 if (accountReconnecting == NULL)
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
210 return;
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
211
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
212 accountReconnecting = g_slist_remove(accountReconnecting, account);
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
213 }
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
214
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
215 static void
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
216 free_auto_recon(gpointer data)
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
217 {
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
218 GaimAutoRecon *info = data;
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
219
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
220 if (info->timeout != 0)
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
221 g_source_remove(info->timeout);
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
222
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
223 g_free(info);
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
224 }
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
225
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
226
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
227 static gboolean
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
228 plugin_load(GaimPlugin *plugin)
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
229 {
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
230
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
231 /* this was the suggested way to override a single function of the
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
232 real ui ops. However, there's a mild concern of having more than one
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
233 bit of code making a new ui op call-through copy. If plugins A and B
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
234 both override the ui ops (in that order), B thinks that the
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
235 overridden ui ops A created was the original. If A unloads first,
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
236 and swaps out and frees its overridden version, then B is calling
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
237 through to a free'd ui op. There needs to be a way to "stack up"
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
238 overridden ui ops or something... I have a good idea of how to write
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
239 such a creature if someone wants it done. - siege 2004-04-20 */
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
240
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
241 /* get old ops, make a copy with a minor change */
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
242 old_ops = gaim_connections_get_ui_ops();
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
243 new_ops = (GaimConnectionUiOps *) g_memdup(old_ops,
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
244 sizeof(GaimConnectionUiOps));
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
245 new_ops->connect_progress = connect_progress;
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
246 new_ops->connected = connected;
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
247 new_ops->disconnected = disconnected;
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
248 new_ops->notice = notice;
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
249 new_ops->report_disconnect = report_disconnect;
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
250 gaim_connections_set_ui_ops(new_ops);
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
251
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
252 hash = g_hash_table_new_full(g_int_hash, g_int_equal, NULL,
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
253 free_auto_recon);
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
254
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
255 accountReconnecting = NULL;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 2398
diff changeset
256
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
257 gaim_signal_connect(gaim_connections_get_handle(), "signed-off",
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
258 plugin, GAIM_CALLBACK(reconnect), NULL);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
259
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
260 gaim_signal_connect(gaim_connections_get_handle(), "signed-on",
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
261 plugin, GAIM_CALLBACK(reconnected), NULL);
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
262
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
263 return TRUE;
3802
27af7e21b143 [gaim-migrate @ 3945]
Sean Egan <seanegan@pidgin.im>
parents: 3630
diff changeset
264 }
27af7e21b143 [gaim-migrate @ 3945]
Sean Egan <seanegan@pidgin.im>
parents: 3630
diff changeset
265
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
266
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
267 static gboolean
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
268 plugin_unload(GaimPlugin *plugin)
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
269 {
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
270 g_hash_table_destroy(hash);
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
271 hash = NULL;
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
272
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
273 if (accountReconnecting) {
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
274 g_slist_free(accountReconnecting);
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
275 accountReconnecting = NULL;
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
276 }
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
277
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
278 gaim_connections_set_ui_ops(old_ops);
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
279 g_free(new_ops);
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
280 old_ops = new_ops = NULL;
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
281
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
282 return TRUE;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 2398
diff changeset
283 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 2398
diff changeset
284
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
285
10748
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
286 static
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
287 GaimPluginPrefFrame *get_plugin_pref_frame(GaimPlugin *plugin)
57d21866d182 [gaim-migrate @ 12350]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
288 {
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
289 GaimPluginPrefFrame *frame = gaim_plugin_pref_frame_new();
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
290 GaimPluginPref *pref;
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
291
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
292 pref = gaim_plugin_pref_new_with_label(_("Error Message Suppression"));
9549
19c5469f9a3e [gaim-migrate @ 10378]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9546
diff changeset
293 gaim_plugin_pref_frame_add(frame, pref);
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
294
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
295 pref = gaim_plugin_pref_new_with_name_and_label(OPT_HIDE_CONNECTED,
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
296 _("Hide Disconnect Errors"));
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
297 gaim_plugin_pref_frame_add(frame, pref);
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
298
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
299 pref = gaim_plugin_pref_new_with_name_and_label(OPT_HIDE_CONNECTING,
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
300 _("Hide Login Errors"));
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
301 gaim_plugin_pref_frame_add(frame, pref);
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
302
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
303 pref = gaim_plugin_pref_new_with_name_and_label(OPT_HIDE_RECONNECTING_DIALOG,
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
304 _("Hide Reconnecting Dialog"));
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
305 gaim_plugin_pref_frame_add(frame, pref);
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
306
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
307 return frame;
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
308 }
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
309
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
310
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
311 static GaimPluginUiInfo pref_info = {
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
312 get_plugin_pref_frame
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
313 };
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
314
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
315
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
316 static GaimPluginInfo info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
317 {
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9930
diff changeset
318 GAIM_PLUGIN_MAGIC,
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9930
diff changeset
319 GAIM_MAJOR_VERSION,
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9930
diff changeset
320 GAIM_MINOR_VERSION,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
321 GAIM_PLUGIN_STANDARD, /**< type */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
322 NULL, /**< ui_requirement */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
323 0, /**< flags */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
324 NULL, /**< dependencies */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
325 GAIM_PRIORITY_DEFAULT, /**< priority */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
326
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
327 AUTORECON_PLUGIN_ID, /**< id */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
328 N_("Auto-Reconnect"), /**< name */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
329 VERSION, /**< version */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
330 /** summary */
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
331 N_("When you are kicked offline, this reconnects you."),
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
332 /** description */
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
333 N_("When you are kicked offline, this reconnects you."),
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
334 "Eric Warmenhoven <eric@warmenhoven.org>", /**< author */
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
335 GAIM_WEBSITE, /**< homepage */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
336
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
337 plugin_load, /**< load */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
338 plugin_unload, /**< unload */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
339 NULL, /**< destroy */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
340
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
341 NULL, /**< ui_info */
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
342 NULL, /**< extra_info */
8993
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8774
diff changeset
343 &pref_info, /**< prefs_info */
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8774
diff changeset
344 NULL
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
345 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
346
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
347
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
348 static void
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5873
diff changeset
349 init_plugin(GaimPlugin *plugin)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4590
diff changeset
350 {
8774
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
351 gaim_prefs_add_none(AUTORECON_OPT);
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
352 gaim_prefs_add_bool(OPT_HIDE_CONNECTED, FALSE);
c9c6fcee237b [gaim-migrate @ 9536]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
353 gaim_prefs_add_bool(OPT_HIDE_CONNECTING, FALSE);
10020
049521b3b5eb [gaim-migrate @ 10944]
Luke Schierer <lschiere@pidgin.im>
parents: 9971
diff changeset
354 gaim_prefs_add_bool(OPT_HIDE_RECONNECTING_DIALOG, FALSE);
9971
8291bafb0025 [gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents: 9961
diff changeset
355 gaim_prefs_remove(OPT_RESTORE_STATE);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 2398
diff changeset
356 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 2398
diff changeset
357
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 5920
diff changeset
358 GAIM_INIT_PLUGIN(autorecon, init_plugin, info)

mercurial