Mercurial > pidgin
annotate src/connection.c @ 11307:e1c55e65ab8e
[gaim-migrate @ 13507]
Patch #1262343, from Levi Bard
"Allows you to specify, on a per-rule basis, whether
text replacement rules will apply to all text, or only
to entire words (the current method).
It defaults to the old method unless specified otherwise.
It reads the old-format config files ( ~/.gaim/dict ),
and saves to the new format (which is currently very
similar to the old)."
The configuration file format is compatible in both directions. Obviously, subword replacement won't happen with an old copy of this plugin, but it won't fail parsing the configuration file.
Plus, he found that my logic was backwards in the test that I used to remove the g_assert().
I made a few changes as well. A couple that I remember:
- A number of rules weren't doing anything because the plugin didn't support them. With this patch, they are functional now. I enabled all of them to use subword completion.
- Set a size group on the labels in the prefs frame. That's been driving me nuts for a while.
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Fri, 19 Aug 2005 04:30:50 +0000 |
parents | 0d3d1031e397 |
children | 18c18cbc0967 |
rev | line source |
---|---|
5563 | 1 /** |
2 * @file connection.c Connection API | |
3 * @ingroup core | |
4 * | |
5 * gaim | |
6 * | |
8046 | 7 * Gaim is the legal property of its developers, whose names are too numerous |
8 * to list here. Please refer to the COPYRIGHT file distributed with this | |
9 * source distribution. | |
5631 | 10 * |
5563 | 11 * This program is free software; you can redistribute it and/or modify |
12 * it under the terms of the GNU General Public License as published by | |
13 * the Free Software Foundation; either version 2 of the License, or | |
14 * (at your option) any later version. | |
15 * | |
16 * This program is distributed in the hope that it will be useful, | |
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 * GNU General Public License for more details. | |
20 * | |
21 * You should have received a copy of the GNU General Public License | |
22 * along with this program; if not, write to the Free Software | |
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
24 */ | |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
25 #include "internal.h" |
10740 | 26 #include "account.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
27 #include "blist.h" |
5563 | 28 #include "connection.h" |
11146 | 29 #include "dbus-maybe.h" |
5717 | 30 #include "debug.h" |
10751 | 31 #include "gaim.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
32 #include "log.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
33 #include "notify.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
34 #include "prefs.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
35 #include "request.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
36 #include "server.h" |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
37 #include "signals.h" |
6106 | 38 #include "util.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
39 |
5563 | 40 static GList *connections = NULL; |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
41 static GList *connections_connecting = NULL; |
5563 | 42 static GaimConnectionUiOps *connection_ui_ops = NULL; |
43 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
44 static int connections_handle; |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
45 |
10745 | 46 static gboolean |
47 send_keepalive(gpointer data) | |
48 { | |
49 GaimConnection *gc = data; | |
50 GaimPluginProtocolInfo *prpl_info = NULL; | |
51 | |
52 if (gc != NULL && gc->prpl != NULL) | |
53 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
54 | |
55 if (prpl_info && prpl_info->keepalive) | |
56 prpl_info->keepalive(gc); | |
57 | |
58 return TRUE; | |
59 } | |
60 | |
61 static void | |
62 update_keepalive(GaimConnection *gc, gboolean on) | |
63 { | |
64 if (on && !gc->keepalive) | |
65 { | |
66 gaim_debug_info("connection", "Activating keepalive.\n"); | |
67 gc->keepalive = gaim_timeout_add(30000, send_keepalive, gc); | |
68 } | |
69 else if (!on && gc->keepalive > 0) | |
70 { | |
71 gaim_debug_info("connection", "Deactivating keepalive.\n"); | |
72 gaim_timeout_remove(gc->keepalive); | |
73 gc->keepalive = 0; | |
74 } | |
75 } | |
76 | |
10740 | 77 void |
78 gaim_connection_new(GaimAccount *account, gboolean regist, const char *password) | |
5563 | 79 { |
80 GaimConnection *gc; | |
10740 | 81 GaimPlugin *prpl; |
82 GaimPluginProtocolInfo *prpl_info; | |
5563 | 83 |
10740 | 84 g_return_if_fail(account != NULL); |
85 | |
11251 | 86 if (!gaim_account_is_disconnected(account)) |
10755 | 87 return; |
88 | |
10740 | 89 prpl = gaim_find_prpl(gaim_account_get_protocol_id(account)); |
90 | |
91 if (prpl != NULL) | |
92 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl); | |
93 else { | |
94 gchar *message; | |
95 | |
96 message = g_strdup_printf(_("Missing protocol plugin for %s"), | |
97 gaim_account_get_username(account)); | |
98 gaim_notify_error(NULL, regist ? _("Registration Error") : | |
99 _("Connection Error"), message, NULL); | |
100 g_free(message); | |
101 return; | |
102 } | |
103 | |
104 if (regist) | |
105 { | |
106 if (prpl_info->register_user == NULL) | |
107 return; | |
108 } | |
109 else | |
110 { | |
10751 | 111 if (((password == NULL) || (*password == '\0')) && |
10740 | 112 !(prpl_info->options & OPT_PROTO_NO_PASSWORD) && |
113 !(prpl_info->options & OPT_PROTO_PASSWORD_OPTIONAL)) | |
114 { | |
115 gaim_debug_error("connection", "Can not connect to account %s without " | |
116 "a password.\n", gaim_account_get_username(account)); | |
117 return; | |
118 } | |
119 } | |
5563 | 120 |
121 gc = g_new0(GaimConnection, 1); | |
11146 | 122 GAIM_DBUS_REGISTER_POINTER(gc, GaimConnection); |
123 | |
10740 | 124 gc->prpl = prpl; |
10751 | 125 if ((password != NULL) && (*password != '\0')) |
126 gc->password = g_strdup(password); | |
5563 | 127 gaim_connection_set_account(gc, account); |
10740 | 128 gaim_connection_set_state(gc, GAIM_CONNECTING); |
129 connections = g_list_append(connections, gc); | |
5563 | 130 gaim_account_set_connection(account, gc); |
131 | |
10740 | 132 gaim_signal_emit(gaim_connections_get_handle(), "signing-on", gc); |
133 | |
134 if (regist) | |
135 { | |
10816
c94f40ffcafb
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
136 gaim_debug_info("connection", "Registering. gc = %p\n", gc); |
10740 | 137 |
138 /* set this so we don't auto-reconnect after registering */ | |
139 gc->wants_to_die = TRUE; | |
140 | |
141 prpl_info->register_user(account); | |
142 } | |
143 else | |
144 { | |
145 gaim_debug_info("connection", "Connecting. gc = %p\n", gc); | |
146 | |
147 gaim_signal_emit(gaim_accounts_get_handle(), "account-connecting", account); | |
148 prpl_info->login(account, gaim_account_get_active_status(account)); | |
149 } | |
5563 | 150 } |
151 | |
152 void | |
153 gaim_connection_destroy(GaimConnection *gc) | |
154 { | |
5741
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
155 GaimAccount *account; |
10840 | 156 #if 0 |
10754 | 157 GList *wins; |
10840 | 158 #endif |
10754 | 159 GaimPluginProtocolInfo *prpl_info = NULL; |
5741
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
160 |
5563 | 161 g_return_if_fail(gc != NULL); |
162 | |
5926
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
163 account = gaim_connection_get_account(gc); |
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
164 |
10754 | 165 gaim_debug_info("connection", "Disconnecting connection %p\n", gc); |
166 | |
167 if (gaim_connection_get_state(gc) != GAIM_CONNECTING) | |
168 gaim_blist_remove_account(account); | |
5926
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
169 |
10754 | 170 gaim_signal_emit(gaim_connections_get_handle(), "signing-off", gc); |
5930
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
171 |
10754 | 172 while (gc->buddy_chats) |
173 { | |
174 GaimConversation *b = gc->buddy_chats->data; | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
175 |
10754 | 176 gc->buddy_chats = g_slist_remove(gc->buddy_chats, b); |
177 gaim_conv_chat_left(GAIM_CONV_CHAT(b)); | |
178 } | |
10745 | 179 |
10754 | 180 if (gc->idle_timer > 0) |
181 gaim_timeout_remove(gc->idle_timer); | |
182 gc->idle_timer = 0; | |
10745 | 183 |
10754 | 184 update_keepalive(gc, FALSE); |
10745 | 185 |
10754 | 186 if (gc->prpl != NULL) |
187 { | |
188 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
10745 | 189 |
10754 | 190 if (prpl_info->close) |
191 (prpl_info->close)(gc); | |
192 } | |
5563 | 193 |
10754 | 194 connections = g_list_remove(connections, gc); |
5563 | 195 |
10754 | 196 gaim_connection_set_state(gc, GAIM_DISCONNECTED); |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
197 |
10754 | 198 /* LOG system_log(log_signoff, gc, NULL, |
199 OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); */ | |
200 gaim_signal_emit(gaim_connections_get_handle(), "signed-off", gc); | |
5615
6500a6c8d679
[gaim-migrate @ 6022]
Christian Hammond <chipx86@chipx86.com>
parents:
5581
diff
changeset
|
201 |
10827 | 202 #if 0 |
10840 | 203 /* see comment later in file on if 0'd same code */ |
10754 | 204 /* |
205 * XXX This is a hack! Remove this and replace it with a better event | |
206 * notification system. | |
207 */ | |
208 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { | |
209 GaimConvWindow *win = (GaimConvWindow *)wins->data; | |
210 gaim_conversation_update(gaim_conv_window_get_conversation_at(win, 0), | |
211 GAIM_CONV_ACCOUNT_OFFLINE); | |
212 } | |
10827 | 213 #endif |
10742 | 214 |
10754 | 215 gaim_request_close_with_handle(gc); |
216 gaim_notify_close_with_handle(gc); | |
5563 | 217 |
10742 | 218 gaim_debug_info("connection", "Destroying connection %p\n", gc); |
219 | |
220 gaim_account_set_connection(account, NULL); | |
221 | |
222 if (gc->password != NULL) | |
223 g_free(gc->password); | |
5563 | 224 |
10742 | 225 if (gc->display_name != NULL) |
226 g_free(gc->display_name); | |
9848 | 227 |
10742 | 228 if (gc->disconnect_timeout) |
229 gaim_timeout_remove(gc->disconnect_timeout); | |
6029 | 230 |
11146 | 231 GAIM_DBUS_UNREGISTER_POINTER(gc); |
10742 | 232 g_free(gc); |
6029 | 233 } |
234 | |
5563 | 235 /* |
8130
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
236 * d:)->-< |
5563 | 237 * |
238 * d:O-\-< | |
8130
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
239 * |
5563 | 240 * d:D-/-< |
241 * | |
242 * d8D->-< DANCE! | |
243 */ | |
244 | |
245 void | |
246 gaim_connection_set_state(GaimConnection *gc, GaimConnectionState state) | |
247 { | |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
248 GaimConnectionUiOps *ops; |
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
249 |
5563 | 250 g_return_if_fail(gc != NULL); |
251 | |
5784
72fb22b9ac98
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
252 if (gc->state == state) |
72fb22b9ac98
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
253 return; |
72fb22b9ac98
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
254 |
5563 | 255 gc->state = state; |
256 | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
257 ops = gaim_connections_get_ui_ops(); |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
258 |
5905
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
259 if (gc->state == GAIM_CONNECTING) { |
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
260 connections_connecting = g_list_append(connections_connecting, gc); |
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
261 } |
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
262 else { |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
263 connections_connecting = g_list_remove(connections_connecting, gc); |
5905
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
264 } |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
265 |
5563 | 266 if (gc->state == GAIM_CONNECTED) { |
10840 | 267 #if 0 |
5563 | 268 GList *wins; |
10840 | 269 #endif |
10052 | 270 GaimAccount *account; |
271 GaimPresence *presence; | |
272 | |
273 account = gaim_connection_get_account(gc); | |
274 presence = gaim_account_get_presence(account); | |
5563 | 275 |
276 /* Set the time the account came online */ | |
277 time(&gc->login_time); | |
278 | |
10301 | 279 if (gaim_prefs_get_bool("/core/logging/log_system") && |
280 gaim_prefs_get_bool("/core/logging/log_own_states")){ | |
281 GaimLog *log = gaim_account_get_log(account); | |
282 char *msg = g_strdup_printf("+++ %s signed on", | |
283 gaim_account_get_username(account)); | |
284 gaim_log_write(log, GAIM_MESSAGE_SYSTEM, | |
285 gaim_account_get_username(account), gc->login_time, | |
286 msg); | |
287 g_free(msg); | |
288 } | |
289 | |
5563 | 290 if (ops != NULL && ops->connected != NULL) |
291 ops->connected(gc); | |
292 | |
293 gaim_blist_show(); | |
8573 | 294 gaim_blist_add_account(account); |
5563 | 295 |
296 /* | |
297 * XXX This is a hack! Remove this and replace it with a better event | |
298 * notification system. | |
299 */ | |
10827 | 300 #if 0 |
301 /* This looks like it was horribly broken before I got here... */ | |
302 /* Why is it updating the first tab of each window? */ | |
5563 | 303 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
304 GaimConvWindow *win = (GaimConvWindow *)wins->data; |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
305 gaim_conversation_update(gaim_conv_window_get_conversation_at(win, 0), |
5563 | 306 GAIM_CONV_ACCOUNT_ONLINE); |
307 } | |
10827 | 308 #endif |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
309 gaim_signal_emit(gaim_connections_get_handle(), "signed-on", gc); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
310 |
5563 | 311 serv_set_permit_deny(gc); |
10745 | 312 |
313 update_keepalive(gc, TRUE); | |
10751 | 314 |
315 if (gaim_account_get_user_info(account) != NULL) | |
316 serv_set_info(gc, gaim_account_get_user_info(account)); | |
317 | |
318 if (gc->idle_timer > 0) | |
319 gaim_timeout_remove(gc->idle_timer); | |
320 | |
321 gc->idle_timer = gaim_timeout_add(20000, check_idle, gc); | |
322 serv_touch_idle(gc); | |
5563 | 323 } |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
324 else if (gc->state == GAIM_DISCONNECTED) { |
8573 | 325 GaimAccount *account = gaim_connection_get_account(gc); |
326 | |
327 if(gaim_prefs_get_bool("/core/logging/log_system") && | |
328 gaim_prefs_get_bool("/core/logging/log_own_states")){ | |
329 GaimLog *log = gaim_account_get_log(account); | |
330 char *msg = g_strdup_printf("+++ %s signed off", | |
331 gaim_account_get_username(account)); | |
332 gaim_log_write(log, GAIM_MESSAGE_SYSTEM, | |
333 gaim_account_get_username(account), time(NULL), | |
334 msg); | |
9190
9e3289499977
[gaim-migrate @ 9985]
Christian Hammond <chipx86@chipx86.com>
parents:
9019
diff
changeset
|
335 g_free(msg); |
8573 | 336 } |
337 | |
338 gaim_account_destroy_log(account); | |
339 | |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
340 if (ops != NULL && ops->disconnected != NULL) |
9190
9e3289499977
[gaim-migrate @ 9985]
Christian Hammond <chipx86@chipx86.com>
parents:
9019
diff
changeset
|
341 ops->disconnected(gc); |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
342 } |
5563 | 343 } |
344 | |
345 void | |
346 gaim_connection_set_account(GaimConnection *gc, GaimAccount *account) | |
347 { | |
348 g_return_if_fail(gc != NULL); | |
349 g_return_if_fail(account != NULL); | |
350 | |
351 gc->account = account; | |
352 } | |
353 | |
354 void | |
355 gaim_connection_set_display_name(GaimConnection *gc, const char *name) | |
356 { | |
357 g_return_if_fail(gc != NULL); | |
358 | |
359 if (gc->display_name != NULL) | |
360 g_free(gc->display_name); | |
361 | |
362 gc->display_name = (name == NULL ? NULL : g_strdup(name)); | |
363 } | |
364 | |
365 GaimConnectionState | |
366 gaim_connection_get_state(const GaimConnection *gc) | |
367 { | |
368 g_return_val_if_fail(gc != NULL, GAIM_DISCONNECTED); | |
369 | |
370 return gc->state; | |
371 } | |
372 | |
373 GaimAccount * | |
374 gaim_connection_get_account(const GaimConnection *gc) | |
375 { | |
376 g_return_val_if_fail(gc != NULL, NULL); | |
377 | |
378 return gc->account; | |
379 } | |
380 | |
381 const char * | |
10740 | 382 gaim_connection_get_password(const GaimConnection *gc) |
383 { | |
384 g_return_val_if_fail(gc != NULL, NULL); | |
385 | |
386 return gc->password; | |
387 } | |
388 | |
389 const char * | |
5563 | 390 gaim_connection_get_display_name(const GaimConnection *gc) |
391 { | |
392 g_return_val_if_fail(gc != NULL, NULL); | |
393 | |
394 return gc->display_name; | |
395 } | |
396 | |
397 void | |
398 gaim_connection_update_progress(GaimConnection *gc, const char *text, | |
399 size_t step, size_t count) | |
400 { | |
401 GaimConnectionUiOps *ops; | |
402 | |
403 g_return_if_fail(gc != NULL); | |
404 g_return_if_fail(text != NULL); | |
405 g_return_if_fail(step < count); | |
406 g_return_if_fail(count > 1); | |
407 | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
408 ops = gaim_connections_get_ui_ops(); |
5563 | 409 |
410 if (ops != NULL && ops->connect_progress != NULL) | |
411 ops->connect_progress(gc, text, step, count); | |
412 } | |
413 | |
414 void | |
5571
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
415 gaim_connection_notice(GaimConnection *gc, const char *text) |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
416 { |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
417 GaimConnectionUiOps *ops; |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
418 |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
419 g_return_if_fail(gc != NULL); |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
420 g_return_if_fail(text != NULL); |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
421 |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
422 ops = gaim_connections_get_ui_ops(); |
5571
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
423 |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
424 if (ops != NULL && ops->notice != NULL) |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
425 ops->notice(gc, text); |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
426 } |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
427 |
10742 | 428 gboolean |
429 gaim_connection_disconnect_cb(gpointer data) | |
430 { | |
431 GaimAccount *account = data; | |
432 | |
433 gaim_account_disconnect(account); | |
434 | |
435 return FALSE; | |
436 } | |
437 | |
5571
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
438 void |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
439 gaim_connection_error(GaimConnection *gc, const char *text) |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
440 { |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
441 GaimConnectionUiOps *ops; |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
442 |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
443 g_return_if_fail(gc != NULL); |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
444 g_return_if_fail(text != NULL); |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
445 |
6393 | 446 /* If we've already got one error, we don't need any more */ |
6460
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
447 if (gc->disconnect_timeout) |
6393 | 448 return; |
449 | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
450 ops = gaim_connections_get_ui_ops(); |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
451 |
6460
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
452 if (ops != NULL) { |
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
453 if (ops->report_disconnect != NULL) |
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
454 ops->report_disconnect(gc, text); |
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
455 } |
5727 | 456 |
8273
f24172f53650
[gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents:
8131
diff
changeset
|
457 gc->disconnect_timeout = gaim_timeout_add(0, gaim_connection_disconnect_cb, |
6076 | 458 gaim_connection_get_account(gc)); |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
459 } |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
460 |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
461 void |
5563 | 462 gaim_connections_disconnect_all(void) |
463 { | |
464 GList *l; | |
6113 | 465 GaimConnection *gc; |
5563 | 466 |
6113 | 467 while ((l = gaim_connections_get_all()) != NULL) { |
468 gc = l->data; | |
469 gc->wants_to_die = TRUE; | |
10742 | 470 gaim_account_disconnect(gc->account); |
6113 | 471 } |
5563 | 472 } |
473 | |
474 GList * | |
475 gaim_connections_get_all(void) | |
476 { | |
477 return connections; | |
478 } | |
479 | |
5788
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
480 GList * |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
481 gaim_connections_get_connecting(void) |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
482 { |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
483 return connections_connecting; |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
484 } |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
485 |
5563 | 486 void |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
487 gaim_connections_set_ui_ops(GaimConnectionUiOps *ops) |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
488 { |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
489 connection_ui_ops = ops; |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
490 } |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
491 |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
492 GaimConnectionUiOps * |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
493 gaim_connections_get_ui_ops(void) |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
494 { |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
495 return connection_ui_ops; |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
496 } |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
497 |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
498 void |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
499 gaim_connections_init(void) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
500 { |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
501 void *handle = gaim_connections_get_handle(); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
502 |
6564
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
503 gaim_signal_register(handle, "signing-on", |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
504 gaim_marshal_VOID__POINTER, NULL, 1, |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
505 gaim_value_new(GAIM_TYPE_SUBTYPE, |
6597
fe569b675cd2
[gaim-migrate @ 7121]
Christian Hammond <chipx86@chipx86.com>
parents:
6581
diff
changeset
|
506 GAIM_SUBTYPE_CONNECTION)); |
6564
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
507 |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
508 gaim_signal_register(handle, "signed-on", |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
509 gaim_marshal_VOID__POINTER, NULL, 1, |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
510 gaim_value_new(GAIM_TYPE_SUBTYPE, |
6597
fe569b675cd2
[gaim-migrate @ 7121]
Christian Hammond <chipx86@chipx86.com>
parents:
6581
diff
changeset
|
511 GAIM_SUBTYPE_CONNECTION)); |
6564
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
512 |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
513 gaim_signal_register(handle, "signing-off", |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
514 gaim_marshal_VOID__POINTER, NULL, 1, |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
515 gaim_value_new(GAIM_TYPE_SUBTYPE, |
6597
fe569b675cd2
[gaim-migrate @ 7121]
Christian Hammond <chipx86@chipx86.com>
parents:
6581
diff
changeset
|
516 GAIM_SUBTYPE_CONNECTION)); |
6564
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
517 |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
518 gaim_signal_register(handle, "signed-off", |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
519 gaim_marshal_VOID__POINTER, NULL, 1, |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
520 gaim_value_new(GAIM_TYPE_SUBTYPE, |
6597
fe569b675cd2
[gaim-migrate @ 7121]
Christian Hammond <chipx86@chipx86.com>
parents:
6581
diff
changeset
|
521 GAIM_SUBTYPE_CONNECTION)); |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
522 } |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
523 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
524 void |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
525 gaim_connections_uninit(void) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
526 { |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
527 gaim_signals_unregister_by_instance(gaim_connections_get_handle()); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
528 } |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
529 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
530 void * |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
531 gaim_connections_get_handle(void) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
532 { |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
533 return &connections_handle; |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
534 } |