Mercurial > pidgin.yaz
annotate src/server.c @ 10977:2ce8ec01a064
[gaim-migrate @ 12803]
adding sametime support to the build
committer: Tailor Script <tailor@pidgin.im>
author | Christopher O'Brien <siege@pidgin.im> |
---|---|
date | Tue, 07 Jun 2005 02:52:39 +0000 |
parents | 6240d7fd5b2c |
children | 2b772e7094ef |
rev | line source |
---|---|
1 | 1 /* |
2 * gaim | |
3 * | |
8046 | 4 * Gaim is the legal property of its developers, whose names are too numerous |
5 * to list here. Please refer to the COPYRIGHT file distributed with this | |
6 * source distribution. | |
1 | 7 * |
8 * This program is free software; you can redistribute it and/or modify | |
9 * it under the terms of the GNU General Public License as published by | |
10 * the Free Software Foundation; either version 2 of the License, or | |
11 * (at your option) any later version. | |
12 * | |
13 * This program is distributed in the hope that it will be useful, | |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 * GNU General Public License for more details. | |
17 * | |
18 * You should have received a copy of the GNU General Public License | |
19 * along with this program; if not, write to the Free Software | |
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
21 * | |
22 */ | |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
23 #include "internal.h" |
9944 | 24 #include "blist.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
25 #include "conversation.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
26 #include "debug.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
27 #include "log.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
28 #include "notify.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
29 #include "prefs.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
30 #include "prpl.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
31 #include "request.h" |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
32 #include "signals.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
33 #include "server.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
34 #include "sound.h" |
9944 | 35 #include "status.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
36 #include "util.h" |
1 | 37 |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
38 /* XXX UI Stuff */ |
9730 | 39 #include "gtkdialogs.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
40 #include "gaim.h" |
2768
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
41 #include "gtkimhtml.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
42 #include "gtkutils.h" |
4687 | 43 |
8948 | 44 #define SECS_BEFORE_RESENDING_AUTORESPONSE 600 |
9285 | 45 #define SEX_BEFORE_RESENDING_AUTORESPONSE "Only after you're married" |
8948 | 46 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
47 void serv_touch_idle(GaimConnection *gc) |
1 | 48 { |
49 /* Are we idle? If so, not anymore */ | |
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
50 if (gc->is_idle > 0) { |
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
51 gc->is_idle = 0; |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
52 serv_set_idle(gc, 0); |
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
53 } |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
54 time(&gc->last_sent_time); |
1834
0695f52c06da
[gaim-migrate @ 1844]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1815
diff
changeset
|
55 if (gc->is_auto_away) |
0695f52c06da
[gaim-migrate @ 1844]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1815
diff
changeset
|
56 check_idle(gc); |
1 | 57 } |
58 | |
2993 | 59 /* This should return the elapsed time in seconds in which Gaim will not send |
60 * typing notifications. | |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
61 * if it returns zero, it will not send any more typing notifications |
3001 | 62 * typing is a flag - TRUE for typing, FALSE for stopped typing */ |
6059 | 63 int serv_send_typing(GaimConnection *g, const char *name, int typing) { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
64 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
65 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
66 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
67 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
68 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
69 if (g && prpl_info && prpl_info->send_typing) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
70 return prpl_info->send_typing(g, name, typing); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
71 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
72 return 0; |
2993 | 73 } |
1 | 74 |
10871 | 75 static GSList *last_auto_responses = NULL; |
6479 | 76 struct last_auto_response { |
77 GaimConnection *gc; | |
3815 | 78 char name[80]; |
6479 | 79 time_t sent; |
3815 | 80 }; |
81 | |
10850 | 82 static gboolean |
83 expire_last_auto_responses(gpointer data) | |
6479 | 84 { |
85 GSList *tmp, *cur; | |
86 struct last_auto_response *lar; | |
87 | |
88 tmp = last_auto_responses; | |
89 | |
90 while (tmp) { | |
91 cur = tmp; | |
92 tmp = tmp->next; | |
93 lar = (struct last_auto_response *)cur->data; | |
94 | |
8948 | 95 if ((time(NULL) - lar->sent) > SECS_BEFORE_RESENDING_AUTORESPONSE) { |
6479 | 96 last_auto_responses = g_slist_remove(last_auto_responses, lar); |
97 g_free(lar); | |
98 } | |
99 } | |
100 | |
101 return FALSE; /* do not run again */ | |
102 } | |
103 | |
10850 | 104 static struct last_auto_response * |
105 get_last_auto_response(GaimConnection *gc, const char *name) | |
6479 | 106 { |
107 GSList *tmp; | |
108 struct last_auto_response *lar; | |
109 | |
110 /* because we're modifying or creating a lar, schedule the | |
111 * function to expire them as the pref dictates */ | |
8948 | 112 gaim_timeout_add((SECS_BEFORE_RESENDING_AUTORESPONSE + 1) * 1000, expire_last_auto_responses, NULL); |
6479 | 113 |
114 tmp = last_auto_responses; | |
115 | |
116 while (tmp) { | |
117 lar = (struct last_auto_response *)tmp->data; | |
118 | |
119 if (gc == lar->gc && !strncmp(name, lar->name, sizeof(lar->name))) | |
120 return lar; | |
121 | |
122 tmp = tmp->next; | |
123 } | |
124 | |
125 lar = (struct last_auto_response *)g_new0(struct last_auto_response, 1); | |
126 g_snprintf(lar->name, sizeof(lar->name), "%s", name); | |
127 lar->gc = gc; | |
128 lar->sent = 0; | |
129 last_auto_responses = g_slist_append(last_auto_responses, lar); | |
130 | |
131 return lar; | |
132 } | |
133 | |
6059 | 134 int serv_send_im(GaimConnection *gc, const char *name, const char *message, |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
135 GaimConvImFlags imflags) |
1 | 136 { |
9949 | 137 GaimConversation *conv; |
138 GaimAccount *account; | |
139 GaimPresence *presence; | |
140 GaimPluginProtocolInfo *prpl_info = NULL; | |
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
141 int val = -EINVAL; |
9594 | 142 const gchar *auto_reply_pref; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
143 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
144 if (gc != NULL && gc->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
145 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
146 |
9949 | 147 account = gaim_connection_get_account(gc); |
148 presence = gaim_account_get_presence(account); | |
149 | |
10246 | 150 conv = gaim_find_conversation_with_account(GAIM_CONV_IM, name, gc->account); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
151 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
152 if (prpl_info && prpl_info->send_im) |
6982 | 153 val = prpl_info->send_im(gc, name, message, imflags); |
94
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
79
diff
changeset
|
154 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
155 if (!(imflags & GAIM_CONV_IM_AUTO_RESP)) |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
156 serv_touch_idle(gc); |
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
157 |
9594 | 158 /* |
159 * XXX - If "only auto-reply when away & idle" is set, then shouldn't | |
160 * this only reset lar->sent if we're away AND idle? | |
161 */ | |
162 auto_reply_pref = gaim_prefs_get_string("/core/away/auto_reply"); | |
9949 | 163 if ((gc->flags & GAIM_CONNECTION_AUTO_RESP) && |
164 !gaim_presence_is_available(presence) && | |
165 strcmp(auto_reply_pref, "never")) { | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
166 |
6479 | 167 struct last_auto_response *lar; |
168 lar = get_last_auto_response(gc, name); | |
169 lar->sent = time(NULL); | |
3815 | 170 } |
171 | |
9949 | 172 if (conv && gaim_conv_im_get_type_again_timeout(GAIM_CONV_IM(conv))) |
173 gaim_conv_im_stop_type_again_timeout(GAIM_CONV_IM(conv)); | |
3601 | 174 |
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
175 return val; |
1 | 176 } |
177 | |
9285 | 178 void serv_get_info(GaimConnection *gc, const char *name) |
1 | 179 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
180 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
181 |
9285 | 182 if (gc != NULL && gc->prpl != NULL) |
183 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
184 |
9285 | 185 if (gc && prpl_info && prpl_info->get_info) |
186 prpl_info->get_info(gc, name); | |
249
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
248
diff
changeset
|
187 } |
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
248
diff
changeset
|
188 |
9285 | 189 void serv_set_info(GaimConnection *gc, const char *info) |
1 | 190 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
191 GaimPluginProtocolInfo *prpl_info = NULL; |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
192 GaimAccount *account; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
193 |
9285 | 194 if (gc != NULL && gc->prpl != NULL) |
195 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
196 |
9285 | 197 if (prpl_info && g_list_find(gaim_connections_get_all(), gc) && |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
198 prpl_info->set_info) { |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
199 |
9285 | 200 account = gaim_connection_get_account(gc); |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
201 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
202 if (gaim_signal_emit_return_1(gaim_accounts_get_handle(), |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
203 "account-setting-info", account, info)) |
3456 | 204 return; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
205 |
9285 | 206 prpl_info->set_info(gc, info); |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
207 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
208 gaim_signal_emit(gaim_accounts_get_handle(), |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
209 "account-set-info", account, info); |
1749
5bfc58c20e82
[gaim-migrate @ 1759]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1734
diff
changeset
|
210 } |
237
6ced2f1c8b24
[gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
200
diff
changeset
|
211 } |
6ced2f1c8b24
[gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
200
diff
changeset
|
212 |
9285 | 213 void serv_change_passwd(GaimConnection *gc, const char *orig, const char *new) |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
214 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
215 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
216 |
9285 | 217 if (gc != NULL && gc->prpl != NULL) |
218 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
219 |
9285 | 220 if (prpl_info && g_list_find(gaim_connections_get_all(), gc) && prpl_info->change_passwd) |
221 prpl_info->change_passwd(gc, orig, new); | |
1 | 222 } |
223 | |
9285 | 224 void serv_add_buddy(GaimConnection *gc, GaimBuddy *buddy) |
1 | 225 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
226 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
227 |
9285 | 228 if (gc != NULL && gc->prpl != NULL) |
229 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
230 |
9285 | 231 if (prpl_info && g_list_find(gaim_connections_get_all(), gc) && prpl_info->add_buddy) |
232 prpl_info->add_buddy(gc, buddy, gaim_find_buddys_group(buddy)); | |
1 | 233 } |
234 | |
8870 | 235 void serv_add_buddies(GaimConnection *gc, GList *buddies) |
1 | 236 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
237 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
238 |
8870 | 239 if (gc != NULL && gc->prpl != NULL) |
240 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
241 |
8870 | 242 if (prpl_info && g_list_find(gaim_connections_get_all(), gc)) { |
9285 | 243 GList *cur, *groups = NULL; |
244 | |
245 /* Make a list of what the groups each buddy is in */ | |
246 for (cur = buddies; cur != NULL; cur = cur->next) { | |
247 GaimBlistNode *node = cur->data; | |
9381 | 248 groups = g_list_append(groups, node->parent->parent); |
9285 | 249 } |
250 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
251 if (prpl_info->add_buddies) |
9285 | 252 prpl_info->add_buddies(gc, buddies, groups); |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
253 else if (prpl_info->add_buddy) { |
9285 | 254 GList *curb = buddies; |
255 GList *curg = groups; | |
256 while ((curb != NULL) && (curg != NULL)) { | |
257 prpl_info->add_buddy(gc, curb->data, curg->data); | |
258 curb = curb->next; | |
259 curg = curg->next; | |
260 } | |
261 } | |
262 | |
263 g_list_free(groups); | |
264 } | |
265 } | |
266 | |
267 | |
268 void serv_remove_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) | |
269 { | |
270 GaimPluginProtocolInfo *prpl_info = NULL; | |
271 | |
272 if (gc != NULL && gc->prpl != NULL) | |
273 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
274 | |
275 if (prpl_info && g_list_find(gaim_connections_get_all(), gc) && prpl_info->remove_buddy) | |
276 prpl_info->remove_buddy(gc, buddy, group); | |
277 } | |
278 | |
279 void serv_remove_buddies(GaimConnection *gc, GList *buddies, GList *groups) | |
280 { | |
281 GaimPluginProtocolInfo *prpl_info = NULL; | |
282 | |
283 if (!g_list_find(gaim_connections_get_all(), gc)) | |
284 return; | |
285 | |
286 if (gc != NULL && gc->prpl != NULL) | |
287 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
288 | |
289 if (prpl_info && g_list_find(gaim_connections_get_all(), gc)) { | |
290 if (prpl_info->remove_buddies) { | |
291 prpl_info->remove_buddies(gc, buddies, groups); | |
292 } else { | |
293 GList *curb = buddies; | |
294 GList *curg = groups; | |
295 while ((curb != NULL) && (curg != NULL)) { | |
296 serv_remove_buddy(gc, curb->data, curg->data); | |
297 curb = curb->next; | |
298 curg = curg->next; | |
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1303
diff
changeset
|
299 } |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
300 } |
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1303
diff
changeset
|
301 } |
1 | 302 } |
303 | |
9285 | 304 void serv_remove_group(GaimConnection *gc, GaimGroup *group) |
6885
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
305 { |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
306 GaimPluginProtocolInfo *prpl_info = NULL; |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
307 |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
308 if (gc != NULL && gc->prpl != NULL) |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
309 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
310 |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
311 if (prpl_info && g_list_find(gaim_connections_get_all(), gc) && |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
312 prpl_info->remove_group) |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
313 { |
9285 | 314 prpl_info->remove_group(gc, group); |
2334
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
315 } |
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
316 } |
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
317 |
3136 | 318 /* |
319 * Set buddy's alias on server roster/list | |
320 */ | |
6695 | 321 void serv_alias_buddy(GaimBuddy *b) |
3136 | 322 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
323 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
324 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
325 if (b != NULL && b->account->gc->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
326 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(b->account->gc->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
327 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
328 if (b && prpl_info && prpl_info->alias_buddy) { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
329 prpl_info->alias_buddy(b->account->gc, b->name, b->alias); |
3136 | 330 } |
331 } | |
332 | |
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
333 void |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
334 serv_got_alias(GaimConnection *gc, const char *who, const char *alias) |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
335 { |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
336 GaimAccount *account = gaim_connection_get_account(gc); |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
337 GSList *buds, *buddies = gaim_find_buddies(account, who); |
8870 | 338 GaimBuddy *b; |
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
339 GaimConversation *conv; |
6058 | 340 |
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
341 for (buds = buddies; buds; buds = buds->next) |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
342 { |
8870 | 343 b = buds->data; |
344 gaim_blist_server_alias_buddy(b, alias); | |
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
345 |
10246 | 346 conv = gaim_find_conversation_with_account(GAIM_CONV_IM, b->name, account); |
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
347 |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
348 if (conv != NULL && b->server_alias != NULL && |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
349 strcmp(b->server_alias, alias)) |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
350 { |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
351 char *tmp = g_strdup_printf(_("%s is now known as %s.\n"), |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
352 who, alias); |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
353 |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
354 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
355 time(NULL)); |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
356 |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
357 g_free(tmp); |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
358 } |
8870 | 359 } |
8894 | 360 g_slist_free(buddies); |
4227 | 361 } |
362 | |
3136 | 363 /* |
364 * Move a buddy from one group to another on server. | |
365 * | |
366 * Note: For now we'll not deal with changing gc's at the same time, but | |
9285 | 367 * it should be possible. Probably needs to be done, someday. Although, |
368 * the UI for that would be difficult, because groups are Gaim-wide. | |
3136 | 369 */ |
6695 | 370 void serv_move_buddy(GaimBuddy *b, GaimGroup *og, GaimGroup *ng) |
3136 | 371 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
372 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
373 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
374 if (b->account->gc != NULL && b->account->gc->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
375 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(b->account->gc->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
376 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
377 if (b && b->account->gc && og && ng) { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
378 if (prpl_info && prpl_info->group_buddy) { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
379 prpl_info->group_buddy(b->account->gc, b->name, og->name, ng->name); |
3136 | 380 } |
381 } | |
382 } | |
383 | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
384 void serv_add_permit(GaimConnection *g, const char *name) |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
385 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
386 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
387 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
388 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
389 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
390 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
391 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->add_permit) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
392 prpl_info->add_permit(g, name); |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
393 } |
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
394 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
395 void serv_add_deny(GaimConnection *g, const char *name) |
1 | 396 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
397 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
398 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
399 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
400 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
401 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
402 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->add_deny) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
403 prpl_info->add_deny(g, name); |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
404 } |
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
405 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
406 void serv_rem_permit(GaimConnection *g, const char *name) |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
407 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
408 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
409 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
410 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
411 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
412 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
413 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->rem_permit) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
414 prpl_info->rem_permit(g, name); |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
415 } |
1 | 416 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
417 void serv_rem_deny(GaimConnection *g, const char *name) |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
418 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
419 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
420 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
421 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
422 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
423 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
424 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->rem_deny) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
425 prpl_info->rem_deny(g, name); |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
426 } |
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
660
diff
changeset
|
427 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
428 void serv_set_permit_deny(GaimConnection *g) |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
429 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
430 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
431 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
432 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
433 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
434 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
435 /* |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
436 * this is called when either you import a buddy list, and make lots |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
437 * of changes that way, or when the user toggles the permit/deny mode |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
438 * in the prefs. In either case you should probably be resetting and |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
439 * resending the permit/deny info when you get this. |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
440 */ |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
441 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->set_permit_deny) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
442 prpl_info->set_permit_deny(g); |
1 | 443 } |
444 | |
1026 | 445 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
446 void serv_set_idle(GaimConnection *g, int time) |
1 | 447 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
448 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
449 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
450 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
451 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
452 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
453 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->set_idle) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
454 prpl_info->set_idle(g, time); |
1 | 455 } |
456 | |
9753 | 457 void serv_warn(GaimConnection *g, const char *name, gboolean anonymous) |
1 | 458 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
459 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
460 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
461 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
462 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
463 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
464 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->warn) |
9753 | 465 prpl_info->warn(g, name, anonymous); |
1 | 466 } |
467 | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
468 void serv_join_chat(GaimConnection *g, GHashTable *data) |
1 | 469 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
470 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
471 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
472 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
473 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
474 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
475 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->join_chat) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
476 prpl_info->join_chat(g, data); |
1 | 477 } |
478 | |
8562 | 479 |
480 void serv_reject_chat(GaimConnection *g, GHashTable *data) | |
481 { | |
482 GaimPluginProtocolInfo *prpl_info = NULL; | |
483 | |
484 if (g != NULL && g->prpl != NULL) | |
485 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); | |
486 | |
487 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->reject_chat) | |
488 prpl_info->reject_chat(g, data); | |
489 } | |
490 | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
491 void serv_chat_invite(GaimConnection *g, int id, const char *message, const char *name) |
1 | 492 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
493 GaimPluginProtocolInfo *prpl_info = NULL; |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
494 GaimConversation *conv; |
2359
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
495 char *buffy = message && *message ? g_strdup(message) : NULL; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
496 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
497 conv = gaim_find_chat(g, id); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
498 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
499 if (conv == NULL) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
500 return; |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
501 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
502 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
503 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
504 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
505 gaim_signal_emit(gaim_conversations_get_handle(), "chat-inviting-user", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
506 conv, name, &buffy); |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
507 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
508 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->chat_invite) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
509 prpl_info->chat_invite(g, id, buffy, name); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
510 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
511 gaim_signal_emit(gaim_conversations_get_handle(), "chat-invited-user", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
512 conv, name, buffy); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
513 |
2359
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
514 if (buffy) |
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
515 g_free(buffy); |
1 | 516 } |
517 | |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
518 /* Ya know, nothing uses this except gaim_conversation_destroy(), |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
519 * I think I'll just merge it into that later... |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
520 * Then again, something might want to use this, from outside prpl-land |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
521 * to leave a chat without destroying the conversation. |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
522 */ |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
523 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
524 void serv_chat_leave(GaimConnection *g, int id) |
1 | 525 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
526 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
527 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
528 if (!g_list_find(gaim_connections_get_all(), g)) |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
529 return; |
1015
c3579d03a0c1
[gaim-migrate @ 1025]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1013
diff
changeset
|
530 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
531 if (g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
532 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
533 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
534 if (prpl_info && prpl_info->chat_leave) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
535 prpl_info->chat_leave(g, id); |
1 | 536 } |
537 | |
6059 | 538 void serv_chat_whisper(GaimConnection *g, int id, const char *who, const char *message) |
1 | 539 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
540 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
541 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
542 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
543 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
544 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
545 if (prpl_info && prpl_info->chat_whisper) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
546 prpl_info->chat_whisper(g, id, who, message); |
1 | 547 } |
548 | |
6059 | 549 int serv_chat_send(GaimConnection *g, int id, const char *message) |
1 | 550 { |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2131
diff
changeset
|
551 int val = -EINVAL; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
552 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
553 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
554 if (g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
555 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
556 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
557 if (prpl_info && prpl_info->chat_send) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
558 val = prpl_info->chat_send(g, id, message); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
559 |
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
560 serv_touch_idle(g); |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
561 |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2131
diff
changeset
|
562 return val; |
1 | 563 } |
564 | |
5842 | 565 void serv_set_buddyicon(GaimConnection *gc, const char *filename) |
566 { | |
567 GaimPluginProtocolInfo *prpl_info = NULL; | |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
568 |
5842 | 569 if (gc->prpl != NULL) |
570 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
571 | |
572 if (prpl_info && prpl_info->set_buddy_icon) | |
573 prpl_info->set_buddy_icon(gc, filename); | |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
574 |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
575 } |
5842 | 576 |
9944 | 577 #if 0 |
1773 | 578 int find_queue_row_by_name(char *name) |
579 { | |
4412 | 580 gchar *temp; |
581 gint i = 0; | |
582 gboolean valid; | |
583 GtkTreeIter iter; | |
1773 | 584 |
4412 | 585 valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(awayqueuestore), &iter); |
586 while(valid) { | |
587 gtk_tree_model_get(GTK_TREE_MODEL(awayqueuestore), &iter, 0, &temp, -1); | |
588 if(!strcmp(name, temp)) | |
1773 | 589 return i; |
4412 | 590 g_free(temp); |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
591 |
4412 | 592 i++; |
593 valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(awayqueuestore), &iter); | |
1773 | 594 } |
595 | |
596 return -1; | |
597 } | |
598 | |
599 int find_queue_total_by_name(char *name) | |
600 { | |
601 GSList *templist; | |
602 int i = 0; | |
603 | |
604 templist = message_queue; | |
605 | |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
606 while (templist) { |
1773 | 607 struct queued_message *qm = (struct queued_message *)templist->data; |
6621 | 608 if ((qm->flags & GAIM_MESSAGE_RECV) && !strcmp(name, qm->name)) |
1773 | 609 i++; |
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
610 |
1773 | 611 templist = templist->next; |
612 } | |
613 | |
614 return i; | |
615 } | |
9944 | 616 #endif |
1773 | 617 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
618 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
619 * woo. i'm actually going to comment this function. isn't that fun. make |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
620 * sure to follow along, kids |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
621 */ |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
622 void serv_got_im(GaimConnection *gc, const char *who, const char *msg, |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
623 GaimConvImFlags imflags, time_t mtime) |
1 | 624 { |
9944 | 625 GaimAccount *account; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
626 GaimConversation *cnv; |
9944 | 627 GaimPresence *presence; |
628 GaimStatus *status; | |
6982 | 629 GaimMessageFlags msgflags; |
5136 | 630 char *message, *name; |
6622 | 631 char *angel, *buffy; |
632 int plugin_return; | |
2273
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
633 |
9944 | 634 account = gaim_connection_get_account(gc); |
635 presence = gaim_account_get_presence(account); | |
636 | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
637 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
638 * We should update the conversation window buttons and menu, |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
639 * if it exists. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
640 */ |
10246 | 641 cnv = gaim_find_conversation_with_account(GAIM_CONV_IM, who, gc->account); |
2106
efb39c151cf7
[gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2104
diff
changeset
|
642 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
643 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
644 * Plugin stuff. we pass a char ** but we don't want to pass what's |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
645 * been given us by the prpls. So we create temp holders and pass |
6982 | 646 * those instead. It's basically just to avoid segfaults. |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
647 */ |
6982 | 648 buffy = g_malloc(MAX(strlen(msg) + 1, BUF_LONG)); |
649 strcpy(buffy, msg); | |
650 angel = g_strdup(who); | |
1339 | 651 |
6982 | 652 plugin_return = GPOINTER_TO_INT( |
653 gaim_signal_emit_return_1(gaim_conversations_get_handle(), | |
8999 | 654 "receiving-im-msg", gc->account, |
10104 | 655 &angel, &buffy, cnv, &imflags)); |
6982 | 656 |
657 if (!buffy || !angel || plugin_return) { | |
658 if (buffy) | |
659 g_free(buffy); | |
660 if (angel) | |
661 g_free(angel); | |
662 return; | |
1100
f168625b63fe
[gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1089
diff
changeset
|
663 } |
8619 | 664 |
8999 | 665 name = angel; |
6982 | 666 message = buffy; |
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
667 |
8999 | 668 gaim_signal_emit(gaim_conversations_get_handle(), "received-im-msg", gc->account, |
10104 | 669 name, message, cnv, imflags); |
8999 | 670 |
8882 | 671 /* Make sure URLs are clickable */ |
672 buffy = gaim_markup_linkify(message); | |
673 g_free(message); | |
674 message = buffy; | |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
675 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
676 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
677 * Um. When we call gaim_conversation_write with the message we received, |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
678 * it's nice to pass whether or not it was an auto-response. So if it |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
679 * was an auto-response, we set the appropriate flag. This is just so |
6982 | 680 * prpls don't have to know about GAIM_MESSAGE_* (though some do anyway). |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
681 */ |
6982 | 682 msgflags = GAIM_MESSAGE_RECV; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
683 if (imflags & GAIM_CONV_IM_AUTO_RESP) |
6982 | 684 msgflags |= GAIM_MESSAGE_AUTO_RESP; |
1 | 685 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
686 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
687 * Alright. Two cases for how to handle this. Either we're away or |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
688 * we're not. If we're not, then it's easy. If we are, then there |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
689 * are three or four different ways of handling it and different |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
690 * things we have to do for each. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
691 */ |
9949 | 692 if (!gaim_presence_is_available(presence)) |
693 { | |
6479 | 694 time_t t = time(NULL); |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
695 char *tmpmsg; |
6695 | 696 GaimBuddy *b = gaim_find_buddy(gc->account, name); |
9620 | 697 const char *alias = b ? gaim_buddy_get_alias(b) : name; |
6479 | 698 struct last_auto_response *lar; |
9594 | 699 const gchar *auto_reply_pref; |
9949 | 700 const char *away_msg; |
701 #if 0 | |
702 int row; | |
703 #endif | |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
704 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
705 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
706 * Either we're going to queue it or not. Because of the way |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
707 * awayness currently works, this is fucked up. It's possible |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
708 * for an account to be away without the imaway dialog being |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
709 * shown. In fact, it's possible for *all* the accounts to be |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
710 * away without the imaway dialog being shown. So in order for |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
711 * this to be queued properly, we have to make sure that the |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
712 * imaway dialog actually exists, first. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
713 */ |
9944 | 714 #if 0 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
715 if (!cnv && awayqueue && |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
716 gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) { |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
717 /* |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
718 * Alright, so we're going to queue it. Neat, eh? :) |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
719 * So first we create something to store the message, and add |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
720 * it to our queue. Then we update the away dialog to indicate |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
721 * that we've queued something. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
722 */ |
1769
68eddf56f419
[gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1768
diff
changeset
|
723 struct queued_message *qm; |
4412 | 724 GtkTreeIter iter; |
725 gchar path[10]; | |
4167 | 726 |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
727 qm = g_new0(struct queued_message, 1); |
5136 | 728 g_snprintf(qm->name, sizeof(qm->name), "%s", name); |
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
729 if(strcmp(alias, name) != 0) |
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
730 g_snprintf(qm->alias, sizeof(qm->alias), "(%s)", alias); |
6982 | 731 qm->message = g_strdup(message); |
4608 | 732 qm->account = gc->account; |
1769
68eddf56f419
[gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1768
diff
changeset
|
733 qm->tm = mtime; |
6982 | 734 qm->flags = msgflags; |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
735 message_queue = g_slist_append(message_queue, qm); |
1768 | 736 |
1773 | 737 row = find_queue_row_by_name(qm->name); |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
738 if (row >= 0) { |
1773 | 739 char number[32]; |
740 int qtotal; | |
741 | |
742 qtotal = find_queue_total_by_name(qm->name); | |
6308 | 743 g_snprintf(number, 32, ngettext("(%d message)", |
744 "(%d messages)", qtotal), qtotal); | |
4412 | 745 g_snprintf(path, 10, "%d", row); |
746 gtk_tree_model_get_iter_from_string( | |
747 GTK_TREE_MODEL(awayqueuestore), &iter, path); | |
748 gtk_list_store_set(awayqueuestore, &iter, | |
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
749 2, number, -1); |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
750 } else { |
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
751 gtk_tree_model_get_iter_first(GTK_TREE_MODEL(awayqueuestore), |
4412 | 752 &iter); |
753 gtk_list_store_append(awayqueuestore, &iter); | |
754 gtk_list_store_set(awayqueuestore, &iter, | |
755 0, qm->name, | |
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
756 1, qm->alias, |
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
757 2, _("(1 message)"), |
4412 | 758 -1); |
1773 | 759 } |
9944 | 760 } |
761 else | |
762 #endif | |
763 { | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
764 /* |
4985 | 765 * Make sure the conversation |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
766 * exists and is updated (partly handled above already), play |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
767 * the receive sound (sound.c will take care of not playing |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
768 * while away), and then write it to the convo window. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
769 */ |
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4440
diff
changeset
|
770 if (cnv == NULL) |
9944 | 771 cnv = gaim_conversation_new(GAIM_CONV_IM, account, name); |
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
772 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
773 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, message, msgflags, mtime); |
9477 | 774 gaim_conv_window_flash(gaim_conversation_get_window(cnv)); |
1 | 775 } |
776 | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
777 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
778 * Regardless of whether we queue it or not, we should send an |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
779 * auto-response. That is, of course, unless the horse.... no wait. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
780 * Don't autorespond if: |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
781 * |
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
782 * - it's not supported on this connection |
9594 | 783 * - or the away message is empty |
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
784 * - or it's disabled |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
785 * - or we're not idle and the 'only auto respond if idle' pref |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
786 * is set |
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
787 */ |
9594 | 788 auto_reply_pref = gaim_prefs_get_string("/core/away/auto_reply"); |
10052 | 789 |
6622 | 790 if (!(gc->flags & GAIM_CONNECTION_AUTO_RESP) || |
10052 | 791 gaim_presence_is_available(presence) || |
9949 | 792 !strcmp(auto_reply_pref, "never") || |
793 (!gaim_presence_is_idle(presence) && | |
794 !strcmp(auto_reply_pref, "awayidle"))) { | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
795 |
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
796 g_free(name); |
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
797 g_free(message); |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
798 return; |
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
799 } |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
800 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
801 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
802 * This used to be based on the conversation window. But um, if |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
803 * you went away, and someone sent you a message and got your |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
804 * auto-response, and then you closed the window, and then the |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
805 * sent you another one, they'd get the auto-response back too |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
806 * soon. Besides that, we need to keep track of this even if we've |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
807 * got a queue. So the rest of this block is just the auto-response, |
6479 | 808 * if necessary. |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
809 */ |
6479 | 810 lar = get_last_auto_response(gc, name); |
8948 | 811 if ((t - lar->sent) < SECS_BEFORE_RESENDING_AUTORESPONSE) { |
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
812 g_free(name); |
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
813 g_free(message); |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
814 return; |
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
815 } |
6479 | 816 lar->sent = t; |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
817 |
10052 | 818 status = gaim_presence_get_active_status(presence); |
819 if (status == NULL) | |
820 return; | |
821 | |
822 away_msg = gaim_value_get_string( | |
823 gaim_status_get_attr_value(status, "message")); | |
824 | |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
825 /* apply default fonts and colors */ |
9944 | 826 tmpmsg = stylize(away_msg, MSG_LEN); |
8700 | 827 |
828 /* Move this to oscar.c! */ | |
829 buffy = gaim_str_sub_away_formatters(tmpmsg, alias); | |
830 serv_send_im(gc, name, buffy, GAIM_CONV_IM_AUTO_RESP); | |
831 g_free(buffy); | |
832 | |
9944 | 833 #if 0 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
834 if (!cnv && awayqueue && |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
835 gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) { |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
836 |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
837 struct queued_message *qm; |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
838 |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
839 qm = g_new0(struct queued_message, 1); |
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
840 g_snprintf(qm->name, sizeof(qm->name), "%s", name); |
7108
6faeeecab0dc
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
841 qm->message = g_strdup(gaim_str_sub_away_formatters(tmpmsg, alias)); |
4608 | 842 qm->account = gc->account; |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
843 qm->tm = mtime; |
6621 | 844 qm->flags = GAIM_MESSAGE_SEND | GAIM_MESSAGE_AUTO_RESP; |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
845 message_queue = g_slist_append(message_queue, qm); |
9944 | 846 } |
847 else if (cnv != NULL) | |
848 #endif | |
849 { | |
850 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, | |
851 gaim_str_sub_away_formatters(tmpmsg, alias), | |
852 GAIM_MESSAGE_SEND | GAIM_MESSAGE_AUTO_RESP, | |
853 mtime); | |
854 } | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
855 |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
856 g_free(tmpmsg); |
9944 | 857 } |
858 else | |
859 { | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
860 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
861 * We're not away. This is easy. If the convo window doesn't |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
862 * exist, create and update it (if it does exist it was updated |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
863 * earlier), then play a sound indicating we've received it and |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
864 * then display it. Easy. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
865 */ |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
866 |
5554
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
867 /* XXX UGLY HACK OF THE YEAR |
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
868 * Robot101 will fix this after his exams. honest. |
6243 | 869 * I guess he didn't specify WHICH exams, exactly... |
5554
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
870 */ |
9944 | 871 /* XXX CORE/UI */ |
872 #if 0 | |
5554
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
873 if (docklet_count && |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
874 gaim_prefs_get_bool("/plugins/gtk/docklet/queue_messages") && |
10246 | 875 !gaim_find_conversation_with_account(GAIM_CONV_IM, name, gc->account)) { |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
876 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
877 * We're gonna queue it up and wait for the user to ask for |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
878 * it... probably by clicking the docklet or windows tray icon. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
879 */ |
3517 | 880 struct queued_message *qm; |
881 qm = g_new0(struct queued_message, 1); | |
882 g_snprintf(qm->name, sizeof(qm->name), "%s", name); | |
883 qm->message = g_strdup(message); | |
4608 | 884 qm->account = gc->account; |
3517 | 885 qm->tm = mtime; |
6982 | 886 qm->flags = msgflags; |
3517 | 887 unread_message_queue = g_slist_append(unread_message_queue, qm); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
888 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
889 else { |
9944 | 890 #endif |
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4440
diff
changeset
|
891 if (cnv == NULL) |
4491 | 892 cnv = gaim_conversation_new(GAIM_CONV_IM, gc->account, name); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
893 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
894 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, message, msgflags, mtime); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
895 gaim_conv_window_flash(gaim_conversation_get_window(cnv)); |
9944 | 896 #if 0 |
1 | 897 } |
9944 | 898 #endif |
1 | 899 } |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
900 |
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
901 g_free(name); |
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
902 g_free(message); |
1 | 903 } |
904 | |
5630 | 905 void serv_got_typing(GaimConnection *gc, const char *name, int timeout, |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
906 GaimTypingState state) { |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
907 |
6695 | 908 GaimBuddy *b; |
10246 | 909 GaimConversation *cnv; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
910 GaimConvIm *im; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
911 |
10246 | 912 cnv = gaim_find_conversation_with_account(GAIM_CONV_IM, name, gc->account); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
913 if (!cnv) |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
914 return; |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
915 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
916 im = GAIM_CONV_IM(cnv); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
917 |
4491 | 918 gaim_conversation_set_account(cnv, gc->account); |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
919 gaim_conv_im_set_typing_state(im, state); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
920 gaim_conv_im_update_typing(im); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
921 |
5032
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
922 b = gaim_find_buddy(gc->account, name); |
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
923 |
6837
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
924 if (b != NULL) |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
925 { |
6456
ccfdf9f2cdd1
[gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents:
6444
diff
changeset
|
926 if (state == GAIM_TYPING) |
6837
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
927 { |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
928 gaim_signal_emit(gaim_conversations_get_handle(), |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
929 "buddy-typing", cnv); |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
930 } |
6456
ccfdf9f2cdd1
[gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents:
6444
diff
changeset
|
931 else |
6837
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
932 { |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
933 gaim_signal_emit(gaim_conversations_get_handle(), |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
934 "buddy-typing-stopped", cnv); |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
935 } |
6456
ccfdf9f2cdd1
[gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents:
6444
diff
changeset
|
936 } |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
937 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
938 if (timeout > 0) |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
939 gaim_conv_im_start_typing_timeout(im, timeout); |
2993 | 940 } |
1 | 941 |
5630 | 942 void serv_got_typing_stopped(GaimConnection *gc, const char *name) { |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
943 |
10246 | 944 GaimConversation *c; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
945 GaimConvIm *im; |
6695 | 946 GaimBuddy *b; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
947 |
10246 | 948 c = gaim_find_conversation_with_account(GAIM_CONV_IM, name, gc->account); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
949 if (!c) |
3787 | 950 return; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
951 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
952 im = GAIM_CONV_IM(c); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
953 |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
954 if (im->typing_state == GAIM_NOT_TYPING) |
5304 | 955 return; |
956 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
957 gaim_conv_im_stop_typing_timeout(im); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
958 gaim_conv_im_set_typing_state(im, GAIM_NOT_TYPING); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
959 gaim_conv_im_update_typing(im); |
5032
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
960 |
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
961 b = gaim_find_buddy(gc->account, name); |
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
962 |
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
963 if (b != NULL) |
6837
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
964 { |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
965 gaim_signal_emit(gaim_conversations_get_handle(), |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
966 "buddy-typing-stopped", c); |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
967 } |
2993 | 968 } |
1 | 969 |
4487 | 970 struct chat_invite_data { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
971 GaimConnection *gc; |
5234 | 972 GHashTable *components; |
4487 | 973 }; |
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
974 |
4487 | 975 static void chat_invite_data_free(struct chat_invite_data *cid) |
1 | 976 { |
5234 | 977 if (cid->components) |
978 g_hash_table_destroy(cid->components); | |
4487 | 979 g_free(cid); |
980 } | |
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
981 |
8562 | 982 |
983 static void chat_invite_reject(struct chat_invite_data *cid) | |
984 { | |
985 serv_reject_chat(cid->gc, cid->components); | |
986 chat_invite_data_free(cid); | |
987 } | |
988 | |
989 | |
4487 | 990 static void chat_invite_accept(struct chat_invite_data *cid) |
991 { | |
5234 | 992 serv_join_chat(cid->gc, cid->components); |
4487 | 993 chat_invite_data_free(cid); |
1 | 994 } |
995 | |
996 | |
997 | |
5630 | 998 void serv_got_chat_invite(GaimConnection *gc, const char *name, |
999 const char *who, const char *message, GHashTable *data) | |
1 | 1000 { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1001 GaimAccount *account; |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1002 char buf2[BUF_LONG]; |
4487 | 1003 struct chat_invite_data *cid = g_new0(struct chat_invite_data, 1); |
1 | 1004 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1005 account = gaim_connection_get_account(gc); |
1 | 1006 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1007 gaim_signal_emit(gaim_conversations_get_handle(), |
9514 | 1008 "chat-invited", account, who, name, message, data); |
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
1009 |
9933 | 1010 if (message != NULL) |
10518 | 1011 { |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1012 g_snprintf(buf2, sizeof(buf2), |
10774 | 1013 _("%s has invited %s to the chat room %s:\n%s"), |
1014 who, gaim_account_get_username(account), name, message); | |
10518 | 1015 } |
414
f9dc74875833
[gaim-migrate @ 424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
411
diff
changeset
|
1016 else |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1017 g_snprintf(buf2, sizeof(buf2), |
9933 | 1018 _("%s has invited %s to the chat room %s\n"), |
10774 | 1019 who, gaim_account_get_username(account), name); |
1 | 1020 |
4487 | 1021 cid->gc = gc; |
5234 | 1022 cid->components = data; |
1 | 1023 |
9976 | 1024 gaim_request_accept_cancel(gc, NULL, _("Accept chat invitation?"), buf2, |
1025 GAIM_DEFAULT_ACTION_NONE, cid, | |
5498
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5461
diff
changeset
|
1026 G_CALLBACK(chat_invite_accept), |
8562 | 1027 G_CALLBACK(chat_invite_reject)); |
1 | 1028 } |
1029 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
1030 GaimConversation *serv_got_joined_chat(GaimConnection *gc, |
5630 | 1031 int id, const char *name) |
1 | 1032 { |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1033 GaimConversation *conv; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1034 GaimConvChat *chat; |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1035 GaimAccount *account; |
1 | 1036 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1037 account = gaim_connection_get_account(gc); |
1 | 1038 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1039 conv = gaim_conversation_new(GAIM_CONV_CHAT, account, name); |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1040 chat = GAIM_CONV_CHAT(conv); |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1041 |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1042 if (!g_slist_find(gc->buddy_chats, conv)) |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1043 gc->buddy_chats = g_slist_append(gc->buddy_chats, conv); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1044 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1045 gaim_conv_chat_set_id(chat, id); |
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4440
diff
changeset
|
1046 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1047 gaim_conv_window_show(gaim_conversation_get_window(conv)); |
10827 | 1048 gaim_conv_window_switch_conversation(gaim_conversation_get_window(conv), conv); |
1785
f4ae086c746b
[gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1775
diff
changeset
|
1049 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1050 gaim_signal_emit(gaim_conversations_get_handle(), "chat-joined", conv); |
3710 | 1051 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1052 return conv; |
1 | 1053 } |
1054 | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1055 void serv_got_chat_left(GaimConnection *g, int id) |
1 | 1056 { |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1057 GSList *bcs; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
1058 GaimConversation *conv = NULL; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1059 GaimConvChat *chat = NULL; |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1060 GaimAccount *account; |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1061 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1062 account = gaim_connection_get_account(g); |
1 | 1063 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1064 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
1065 conv = (GaimConversation *)bcs->data; |
1 | 1066 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1067 chat = GAIM_CONV_CHAT(conv); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1068 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1069 if (gaim_conv_chat_get_id(chat) == id) |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1070 break; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1071 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1072 conv = NULL; |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1073 } |
1 | 1074 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1075 if (!conv) |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1076 return; |
1 | 1077 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1078 gaim_signal_emit(gaim_conversations_get_handle(), "chat-left", conv); |
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
1079 |
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1080 gaim_debug(GAIM_DEBUG_INFO, "server", "Leaving room: %s\n", |
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1081 gaim_conversation_get_name(conv)); |
1 | 1082 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1083 g->buddy_chats = g_slist_remove(g->buddy_chats, conv); |
1 | 1084 |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1085 gaim_conv_chat_left(GAIM_CONV_CHAT(conv)); |
1 | 1086 } |
1087 | |
6059 | 1088 void serv_got_chat_in(GaimConnection *g, int id, const char *who, |
9584 | 1089 GaimConvChatFlags chatflags, const char *message, time_t mtime) |
1 | 1090 { |
9584 | 1091 GaimMessageFlags msgflags = 0; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1092 GSList *bcs; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
1093 GaimConversation *conv = NULL; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1094 GaimConvChat *chat = NULL; |
2296
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
1095 char *buf; |
3163 | 1096 char *buffy, *angel; |
1097 int plugin_return; | |
1 | 1098 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1099 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
1100 conv = (GaimConversation *)bcs->data; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1101 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1102 chat = GAIM_CONV_CHAT(conv); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1103 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1104 if (gaim_conv_chat_get_id(chat) == id) |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1105 break; |
1 | 1106 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1107 conv = NULL; |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1108 } |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1109 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1110 if (!conv) |
1100
f168625b63fe
[gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1089
diff
changeset
|
1111 return; |
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
1112 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1113 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1114 * Plugin stuff. We pass a char ** but we don't want to pass what's |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1115 * been given us by the prpls. so we create temp holders and pass those |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1116 * instead. It's basically just to avoid segfaults. Of course, if the |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1117 * data is binary, plugins don't see it. Bitch all you want; i really |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1118 * don't want you to be dealing with it. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1119 */ |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1120 |
3163 | 1121 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG)); |
1122 strcpy(buffy, message); | |
1123 angel = g_strdup(who); | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1124 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1125 plugin_return = GPOINTER_TO_INT( |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1126 gaim_signal_emit_return_1(gaim_conversations_get_handle(), |
8999 | 1127 "receiving-chat-msg", g->account, |
10104 | 1128 &angel, &buffy, conv, &chatflags)); |
3163 | 1129 |
1130 if (!buffy || !angel || plugin_return) { | |
1131 if (buffy) | |
1132 g_free(buffy); | |
1133 if (angel) | |
1134 g_free(angel); | |
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
1135 return; |
3163 | 1136 } |
1137 who = angel; | |
1138 message = buffy; | |
1 | 1139 |
8999 | 1140 gaim_signal_emit(gaim_conversations_get_handle(), "received-chat-msg", g->account, |
10104 | 1141 who, message, conv, chatflags); |
8999 | 1142 |
8882 | 1143 /* Make sure URLs are clickable */ |
1144 buf = gaim_markup_linkify(message); | |
1643
d7e380618fd5
[gaim-migrate @ 1653]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1587
diff
changeset
|
1145 |
9584 | 1146 if (chatflags & GAIM_CONV_CHAT_WHISPER) |
1147 msgflags |= GAIM_MESSAGE_WHISPER; | |
1148 if (chatflags & GAIM_CONV_CHAT_DELAYED) | |
1149 msgflags |= GAIM_MESSAGE_DELAYED; | |
10104 | 1150 if (chatflags & GAIM_CONV_CHAT_ALERT) |
1151 msgflags |= GAIM_MESSAGE_NICK; | |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1152 |
9584 | 1153 gaim_conv_chat_write(chat, who, buf, msgflags, mtime); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1154 |
6350 | 1155 g_free(angel); |
2296
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
1156 g_free(buf); |
6062 | 1157 g_free(buffy); |
1 | 1158 } |
9466 | 1159 |
1160 void serv_send_file(GaimConnection *gc, const char *who, const char *file) | |
1161 { | |
1162 GaimPluginProtocolInfo *prpl_info = NULL; | |
10751 | 1163 |
9466 | 1164 if (gc != NULL && gc->prpl != NULL) |
1165 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
1166 | |
9647 | 1167 if (prpl_info && prpl_info->send_file) { |
1168 if (!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, who)) { | |
1169 prpl_info->send_file(gc, who, file); | |
1170 } | |
1171 } | |
9466 | 1172 } |