Mercurial > pidgin
annotate src/connection.c @ 6035:8c44020a958e
[gaim-migrate @ 6485]
gaim_request_input() now takes a masked bool, which, if enabled, masks the
text on the entry field so that it cannot be seen. Good for password input
requests, and what do you know, that's why this is written!
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Sat, 05 Jul 2003 21:54:19 +0000 |
parents | 38999b6b1838 |
children | 547ba881bc7e |
rev | line source |
---|---|
5563 | 1 /** |
2 * @file connection.c Connection API | |
3 * @ingroup core | |
4 * | |
5 * gaim | |
6 * | |
7 * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org> | |
5631 | 8 * |
5563 | 9 * This program is free software; you can redistribute it and/or modify |
10 * it under the terms of the GNU General Public License as published by | |
11 * the Free Software Foundation; either version 2 of the License, or | |
12 * (at your option) any later version. | |
13 * | |
14 * This program is distributed in the hope that it will be useful, | |
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 * GNU General Public License for more details. | |
18 * | |
19 * You should have received a copy of the GNU General Public License | |
20 * along with this program; if not, write to the Free Software | |
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
22 */ | |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
23 #include "internal.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
24 #include "blist.h" |
5563 | 25 #include "connection.h" |
5717 | 26 #include "debug.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
27 #include "log.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
28 #include "notify.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
29 #include "prefs.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
30 #include "request.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
31 #include "server.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
32 #include "sound.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
33 |
5563 | 34 static GList *connections = NULL; |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
35 static GList *connections_connecting = NULL; |
5563 | 36 static GaimConnectionUiOps *connection_ui_ops = NULL; |
37 | |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
38 |
5563 | 39 GaimConnection * |
40 gaim_connection_new(GaimAccount *account) | |
41 { | |
42 GaimConnection *gc; | |
43 | |
44 g_return_val_if_fail(account != NULL, NULL); | |
45 | |
46 gc = g_new0(GaimConnection, 1); | |
47 | |
48 gc->prpl = gaim_find_prpl(gaim_account_get_protocol(account)); | |
49 | |
50 gaim_connection_set_account(gc, account); | |
51 gaim_account_set_connection(account, gc); | |
52 | |
53 return gc; | |
54 } | |
55 | |
56 void | |
57 gaim_connection_destroy(GaimConnection *gc) | |
58 { | |
5741
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
59 GaimAccount *account; |
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
60 |
5563 | 61 g_return_if_fail(gc != NULL); |
62 | |
63 if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) { | |
64 gaim_connection_disconnect(gc); | |
65 | |
66 return; | |
67 } | |
68 | |
5930
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
69 gaim_debug(GAIM_DEBUG_INFO, "connection", |
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
70 "Destroying connection %p\n", gc); |
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
71 |
5741
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
72 account = gaim_connection_get_account(gc); |
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
73 gaim_account_set_connection(account, NULL); |
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
74 |
5563 | 75 if (gc->display_name != NULL) |
76 g_free(gc->display_name); | |
77 | |
78 if (gc->away != NULL) | |
79 g_free(gc->away); | |
80 | |
81 if (gc->away_state != NULL) | |
82 g_free(gc->away_state); | |
83 | |
84 g_free(gc); | |
85 } | |
86 | |
87 void | |
88 gaim_connection_connect(GaimConnection *gc) | |
89 { | |
90 GaimAccount *account; | |
91 GaimConnectionUiOps *ops; | |
92 GaimPluginProtocolInfo *prpl_info = NULL; | |
93 | |
94 g_return_if_fail(gc != NULL); | |
95 | |
5930
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
96 gaim_debug(GAIM_DEBUG_INFO, "connection", |
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
97 "Connecting. gc = %p\n", gc); |
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
98 |
5563 | 99 ops = gaim_get_connection_ui_ops(); |
100 | |
101 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
102 | |
103 account = gaim_connection_get_account(gc); | |
104 | |
105 if ((prpl_info->options & OPT_PROTO_NO_PASSWORD) && | |
106 !(prpl_info->options & OPT_PROTO_PASSWORD_OPTIONAL) && | |
107 gaim_account_get_password(account) == NULL) { | |
108 | |
5930
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
109 gaim_debug(GAIM_DEBUG_INFO, "connection", "Requesting password\n"); |
5581
3a9b54f260e3
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5571
diff
changeset
|
110 |
5563 | 111 if (ops != NULL && ops->request_pass != NULL) |
112 ops->request_pass(gc); | |
113 | |
114 return; | |
115 } | |
116 | |
117 gaim_connection_set_state(gc, GAIM_CONNECTING); | |
118 | |
5581
3a9b54f260e3
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5571
diff
changeset
|
119 gaim_debug(GAIM_DEBUG_INFO, "connection", "Calling serv_login\n"); |
3a9b54f260e3
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5571
diff
changeset
|
120 |
6018 | 121 connections = g_list_append(connections, gc); |
122 | |
5563 | 123 serv_login(account); |
124 } | |
125 | |
126 void | |
127 gaim_connection_disconnect(GaimConnection *gc) | |
128 { | |
5926
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
129 GaimAccount *account; |
5563 | 130 GList *wins; |
131 | |
132 g_return_if_fail(gc != NULL); | |
133 | |
5926
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
134 account = gaim_connection_get_account(gc); |
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
135 |
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
136 if (gaim_account_get_connection(account) != NULL) { |
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
137 gaim_account_disconnect(account); |
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
138 return; |
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
139 } |
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
140 |
5930
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
141 gaim_debug(GAIM_DEBUG_INFO, "connection", |
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
142 "Disconnecting connection %p\n", gc); |
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
143 |
5740
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
144 if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) { |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
145 if (gaim_connection_get_state(gc) != GAIM_CONNECTING) |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
146 gaim_blist_remove_account(gaim_connection_get_account(gc)); |
5563 | 147 |
5740
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
148 serv_close(gc); |
5563 | 149 |
6018 | 150 connections = g_list_remove(connections, gc); |
151 | |
5859
022786c7ab53
[gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
5788
diff
changeset
|
152 gaim_connection_set_state(gc, GAIM_DISCONNECTED); |
5563 | 153 |
5740
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
154 gaim_event_broadcast(event_signoff, gc); |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
155 system_log(log_signoff, gc, NULL, |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
156 OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); |
5615
6500a6c8d679
[gaim-migrate @ 6022]
Christian Hammond <chipx86@chipx86.com>
parents:
5581
diff
changeset
|
157 |
5740
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
158 /* |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
159 * XXX This is a hack! Remove this and replace it with a better event |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
160 * notification system. |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
161 */ |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
162 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
163 GaimWindow *win = (GaimWindow *)wins->data; |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
164 gaim_conversation_update(gaim_window_get_conversation_at(win, 0), |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
165 GAIM_CONV_ACCOUNT_OFFLINE); |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
166 } |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
167 |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
168 gaim_request_close_with_handle(gc); |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
169 gaim_notify_close_with_handle(gc); |
5563 | 170 } |
171 | |
5622
70ae81fc802f
[gaim-migrate @ 6029]
Christian Hammond <chipx86@chipx86.com>
parents:
5615
diff
changeset
|
172 gaim_connection_destroy(gc); |
5563 | 173 } |
174 | |
6029 | 175 gboolean |
176 gaim_connection_disconnect_cb(gpointer data) | |
177 { | |
178 GaimConnection *gc = data; | |
179 | |
180 gaim_connection_disconnect(gc); | |
181 | |
182 return FALSE; | |
183 } | |
184 | |
5563 | 185 /* |
186 * d:)->-< | |
187 * | |
188 * d:O-\-< | |
189 * | |
190 * d:D-/-< | |
191 * | |
192 * d8D->-< DANCE! | |
193 */ | |
194 | |
195 void | |
196 gaim_connection_set_state(GaimConnection *gc, GaimConnectionState state) | |
197 { | |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
198 GaimConnectionUiOps *ops; |
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
199 |
5563 | 200 g_return_if_fail(gc != NULL); |
201 | |
5784
72fb22b9ac98
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
202 if (gc->state == state) |
72fb22b9ac98
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
203 return; |
72fb22b9ac98
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
204 |
5563 | 205 gc->state = state; |
206 | |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
207 ops = gaim_get_connection_ui_ops(); |
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
208 |
5905
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
209 if (gc->state == GAIM_CONNECTING) { |
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
210 connections_connecting = g_list_append(connections_connecting, gc); |
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
211 } |
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
212 else { |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
213 connections_connecting = g_list_remove(connections_connecting, gc); |
5905
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
214 } |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
215 |
5563 | 216 if (gc->state == GAIM_CONNECTED) { |
217 GaimBlistNode *gnode,*bnode; | |
218 GList *wins; | |
219 GList *add_buds=NULL; | |
220 | |
221 /* Set the time the account came online */ | |
222 time(&gc->login_time); | |
223 | |
224 if (ops != NULL && ops->connected != NULL) | |
225 ops->connected(gc); | |
226 | |
227 gaim_blist_show(); | |
228 gaim_blist_add_account(gc->account); | |
229 | |
230 /* | |
231 * XXX This is a hack! Remove this and replace it with a better event | |
232 * notification system. | |
233 */ | |
234 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5631
diff
changeset
|
235 GaimWindow *win = (GaimWindow *)wins->data; |
5563 | 236 gaim_conversation_update(gaim_window_get_conversation_at(win, 0), |
237 GAIM_CONV_ACCOUNT_ONLINE); | |
238 } | |
239 | |
240 gaim_event_broadcast(event_signon, gc); | |
241 system_log(log_signon, gc, NULL, | |
242 OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); | |
243 | |
244 #if 0 | |
245 /* away option given? */ | |
246 if (opt_away) { | |
247 away_on_login(opt_away_arg); | |
248 /* don't do it again */ | |
249 opt_away = 0; | |
250 } else if (awaymessage) { | |
251 serv_set_away(gc, GAIM_AWAY_CUSTOM, awaymessage->message); | |
252 } | |
253 if (opt_away_arg != NULL) { | |
254 g_free(opt_away_arg); | |
255 opt_away_arg = NULL; | |
256 } | |
257 #endif | |
258 | |
259 /* let the prpl know what buddies we pulled out of the local list */ | |
260 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { | |
261 if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
262 continue; | |
263 for(bnode = gnode->child; bnode; bnode = bnode->next) { | |
264 if(GAIM_BLIST_NODE_IS_BUDDY(bnode)) { | |
265 struct buddy *b = (struct buddy *)bnode; | |
266 if(b->account == gc->account) { | |
267 add_buds = g_list_append(add_buds, b->name); | |
268 } | |
269 } | |
270 } | |
271 } | |
272 | |
273 if(add_buds) { | |
274 serv_add_buddies(gc, add_buds); | |
275 g_list_free(add_buds); | |
276 } | |
277 | |
278 serv_set_permit_deny(gc); | |
279 } | |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
280 else if (gc->state == GAIM_DISCONNECTED) { |
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
281 if (ops != NULL && ops->disconnected != NULL) |
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
282 ops->disconnected(gc, NULL); |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
283 } |
5563 | 284 } |
285 | |
286 void | |
287 gaim_connection_set_account(GaimConnection *gc, GaimAccount *account) | |
288 { | |
289 g_return_if_fail(gc != NULL); | |
290 g_return_if_fail(account != NULL); | |
291 | |
292 gc->account = account; | |
293 } | |
294 | |
295 void | |
296 gaim_connection_set_display_name(GaimConnection *gc, const char *name) | |
297 { | |
298 g_return_if_fail(gc != NULL); | |
299 | |
300 if (gc->display_name != NULL) | |
301 g_free(gc->display_name); | |
302 | |
303 gc->display_name = (name == NULL ? NULL : g_strdup(name)); | |
304 } | |
305 | |
306 GaimConnectionState | |
307 gaim_connection_get_state(const GaimConnection *gc) | |
308 { | |
309 g_return_val_if_fail(gc != NULL, GAIM_DISCONNECTED); | |
310 | |
311 return gc->state; | |
312 } | |
313 | |
314 GaimAccount * | |
315 gaim_connection_get_account(const GaimConnection *gc) | |
316 { | |
317 g_return_val_if_fail(gc != NULL, NULL); | |
318 | |
319 return gc->account; | |
320 } | |
321 | |
322 const char * | |
323 gaim_connection_get_display_name(const GaimConnection *gc) | |
324 { | |
325 g_return_val_if_fail(gc != NULL, NULL); | |
326 | |
327 return gc->display_name; | |
328 } | |
329 | |
330 void | |
331 gaim_connection_update_progress(GaimConnection *gc, const char *text, | |
332 size_t step, size_t count) | |
333 { | |
334 GaimConnectionUiOps *ops; | |
335 | |
336 g_return_if_fail(gc != NULL); | |
337 g_return_if_fail(text != NULL); | |
338 g_return_if_fail(step < count); | |
339 g_return_if_fail(count > 1); | |
340 | |
341 ops = gaim_get_connection_ui_ops(); | |
342 | |
343 if (ops != NULL && ops->connect_progress != NULL) | |
344 ops->connect_progress(gc, text, step, count); | |
345 } | |
346 | |
347 void | |
5571
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
348 gaim_connection_notice(GaimConnection *gc, const char *text) |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
349 { |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
350 GaimConnectionUiOps *ops; |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
351 |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
352 g_return_if_fail(gc != NULL); |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
353 g_return_if_fail(text != NULL); |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
354 |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
355 ops = gaim_get_connection_ui_ops(); |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
356 |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
357 if (ops != NULL && ops->notice != NULL) |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
358 ops->notice(gc, text); |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
359 } |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
360 |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
361 void |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
362 gaim_connection_error(GaimConnection *gc, const char *text) |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
363 { |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
364 GaimConnectionUiOps *ops; |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
365 |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
366 g_return_if_fail(gc != NULL); |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
367 g_return_if_fail(text != NULL); |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
368 |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
369 ops = gaim_get_connection_ui_ops(); |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
370 |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
371 if (ops != NULL && ops->disconnected != NULL) |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
372 ops->disconnected(gc, text); |
5727 | 373 |
6029 | 374 g_timeout_add(0, gaim_connection_disconnect_cb, gc); |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
375 } |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
376 |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
377 void |
5563 | 378 gaim_connections_disconnect_all(void) |
379 { | |
380 GList *l; | |
381 | |
5624
4cc9e3fa22c4
[gaim-migrate @ 6031]
Christian Hammond <chipx86@chipx86.com>
parents:
5623
diff
changeset
|
382 while ((l = gaim_connections_get_all()) != NULL) |
5563 | 383 gaim_connection_destroy(l->data); |
384 } | |
385 | |
386 GList * | |
387 gaim_connections_get_all(void) | |
388 { | |
389 return connections; | |
390 } | |
391 | |
5788
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
392 GList * |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
393 gaim_connections_get_connecting(void) |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
394 { |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
395 return connections_connecting; |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
396 } |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
397 |
5563 | 398 void |
399 gaim_set_connection_ui_ops(GaimConnectionUiOps *ops) | |
400 { | |
401 connection_ui_ops = ops; | |
402 } | |
403 | |
404 GaimConnectionUiOps * | |
405 gaim_get_connection_ui_ops(void) | |
406 { | |
407 return connection_ui_ops; | |
408 } | |
409 |