Mercurial > pidgin
annotate src/server.c @ 12272:3ef381cdc47e
[gaim-migrate @ 14574]
This should fix idle time reporting for all accounts. Previously it would
only work for one account because I'm dumb.
We're also doing one idleness check every 5 seconds instead of checking
for each account every 20 seconds.
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Wed, 30 Nov 2005 06:03:49 +0000 |
| parents | 4d3119205a33 |
| children | 970fec1d7062 |
| 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" |
| 9944 | 34 #include "status.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
35 #include "util.h" |
| 1 | 36 |
| 8948 | 37 #define SECS_BEFORE_RESENDING_AUTORESPONSE 600 |
| 9285 | 38 #define SEX_BEFORE_RESENDING_AUTORESPONSE "Only after you're married" |
| 8948 | 39 |
| 2993 | 40 /* This should return the elapsed time in seconds in which Gaim will not send |
| 41 * typing notifications. | |
|
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
42 * if it returns zero, it will not send any more typing notifications |
| 3001 | 43 * typing is a flag - TRUE for typing, FALSE for stopped typing */ |
| 6059 | 44 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
|
45 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
46 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
47 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
48 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
49 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
50 if (g && prpl_info && prpl_info->send_typing) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
51 return prpl_info->send_typing(g, name, typing); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
52 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
53 return 0; |
| 2993 | 54 } |
| 1 | 55 |
| 10871 | 56 static GSList *last_auto_responses = NULL; |
| 6479 | 57 struct last_auto_response { |
| 58 GaimConnection *gc; | |
| 3815 | 59 char name[80]; |
| 6479 | 60 time_t sent; |
| 3815 | 61 }; |
| 62 | |
| 10850 | 63 static gboolean |
| 64 expire_last_auto_responses(gpointer data) | |
| 6479 | 65 { |
| 66 GSList *tmp, *cur; | |
| 67 struct last_auto_response *lar; | |
| 68 | |
| 69 tmp = last_auto_responses; | |
| 70 | |
| 71 while (tmp) { | |
| 72 cur = tmp; | |
| 73 tmp = tmp->next; | |
| 74 lar = (struct last_auto_response *)cur->data; | |
| 75 | |
| 8948 | 76 if ((time(NULL) - lar->sent) > SECS_BEFORE_RESENDING_AUTORESPONSE) { |
| 6479 | 77 last_auto_responses = g_slist_remove(last_auto_responses, lar); |
| 78 g_free(lar); | |
| 79 } | |
| 80 } | |
| 81 | |
| 82 return FALSE; /* do not run again */ | |
| 83 } | |
| 84 | |
| 10850 | 85 static struct last_auto_response * |
| 86 get_last_auto_response(GaimConnection *gc, const char *name) | |
| 6479 | 87 { |
| 88 GSList *tmp; | |
| 89 struct last_auto_response *lar; | |
| 90 | |
| 91 /* because we're modifying or creating a lar, schedule the | |
| 92 * function to expire them as the pref dictates */ | |
| 8948 | 93 gaim_timeout_add((SECS_BEFORE_RESENDING_AUTORESPONSE + 1) * 1000, expire_last_auto_responses, NULL); |
| 6479 | 94 |
| 95 tmp = last_auto_responses; | |
| 96 | |
| 97 while (tmp) { | |
| 98 lar = (struct last_auto_response *)tmp->data; | |
| 99 | |
| 100 if (gc == lar->gc && !strncmp(name, lar->name, sizeof(lar->name))) | |
| 101 return lar; | |
| 102 | |
| 103 tmp = tmp->next; | |
| 104 } | |
| 105 | |
| 106 lar = (struct last_auto_response *)g_new0(struct last_auto_response, 1); | |
| 107 g_snprintf(lar->name, sizeof(lar->name), "%s", name); | |
| 108 lar->gc = gc; | |
| 109 lar->sent = 0; | |
| 110 last_auto_responses = g_slist_append(last_auto_responses, lar); | |
| 111 | |
| 112 return lar; | |
| 113 } | |
| 114 | |
| 6059 | 115 int serv_send_im(GaimConnection *gc, const char *name, const char *message, |
| 12216 | 116 GaimMessageFlags flags) |
| 1 | 117 { |
| 9949 | 118 GaimConversation *conv; |
| 119 GaimAccount *account; | |
| 120 GaimPresence *presence; | |
| 121 GaimPluginProtocolInfo *prpl_info = NULL; | |
|
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
122 int val = -EINVAL; |
| 9594 | 123 const gchar *auto_reply_pref; |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
124 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
125 if (gc != NULL && gc->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
126 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
127 |
| 9949 | 128 account = gaim_connection_get_account(gc); |
| 129 presence = gaim_account_get_presence(account); | |
| 130 | |
| 11338 | 131 conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, name, gc->account); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
132 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
133 if (prpl_info && prpl_info->send_im) |
| 12216 | 134 val = prpl_info->send_im(gc, name, message, flags); |
|
94
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
79
diff
changeset
|
135 |
| 9594 | 136 /* |
| 137 * XXX - If "only auto-reply when away & idle" is set, then shouldn't | |
| 138 * this only reset lar->sent if we're away AND idle? | |
| 139 */ | |
| 140 auto_reply_pref = gaim_prefs_get_string("/core/away/auto_reply"); | |
| 9949 | 141 if ((gc->flags & GAIM_CONNECTION_AUTO_RESP) && |
| 142 !gaim_presence_is_available(presence) && | |
| 143 strcmp(auto_reply_pref, "never")) { | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
144 |
| 6479 | 145 struct last_auto_response *lar; |
| 146 lar = get_last_auto_response(gc, name); | |
| 147 lar->sent = time(NULL); | |
| 3815 | 148 } |
| 149 | |
| 9949 | 150 if (conv && gaim_conv_im_get_type_again_timeout(GAIM_CONV_IM(conv))) |
| 151 gaim_conv_im_stop_type_again_timeout(GAIM_CONV_IM(conv)); | |
| 3601 | 152 |
|
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
153 return val; |
| 1 | 154 } |
| 155 | |
| 9285 | 156 void serv_get_info(GaimConnection *gc, const char *name) |
| 1 | 157 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
158 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
159 |
| 9285 | 160 if (gc != NULL && gc->prpl != NULL) |
| 161 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
162 |
| 9285 | 163 if (gc && prpl_info && prpl_info->get_info) |
| 164 prpl_info->get_info(gc, name); | |
|
249
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
248
diff
changeset
|
165 } |
|
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
248
diff
changeset
|
166 |
| 9285 | 167 void serv_set_info(GaimConnection *gc, const char *info) |
| 1 | 168 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
169 GaimPluginProtocolInfo *prpl_info = NULL; |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
170 GaimAccount *account; |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
171 |
| 9285 | 172 if (gc != NULL && gc->prpl != NULL) |
| 173 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
174 |
| 9285 | 175 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
|
176 prpl_info->set_info) { |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
177 |
| 9285 | 178 account = gaim_connection_get_account(gc); |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
179 |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
180 if (gaim_signal_emit_return_1(gaim_accounts_get_handle(), |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
181 "account-setting-info", account, info)) |
| 3456 | 182 return; |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
183 |
| 9285 | 184 prpl_info->set_info(gc, info); |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
185 |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
186 gaim_signal_emit(gaim_accounts_get_handle(), |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
187 "account-set-info", account, info); |
|
1749
5bfc58c20e82
[gaim-migrate @ 1759]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1734
diff
changeset
|
188 } |
|
237
6ced2f1c8b24
[gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
200
diff
changeset
|
189 } |
|
6ced2f1c8b24
[gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
200
diff
changeset
|
190 |
| 3136 | 191 /* |
| 192 * Set buddy's alias on server roster/list | |
| 193 */ | |
| 6695 | 194 void serv_alias_buddy(GaimBuddy *b) |
| 3136 | 195 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
196 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
197 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
198 if (b != NULL && b->account->gc->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
199 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(b->account->gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
200 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
201 if (b && prpl_info && prpl_info->alias_buddy) { |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
202 prpl_info->alias_buddy(b->account->gc, b->name, b->alias); |
| 3136 | 203 } |
| 204 } | |
| 205 | |
|
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
206 void |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
207 serv_got_alias(GaimConnection *gc, const char *who, const char *alias) |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
208 { |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
209 GaimAccount *account = gaim_connection_get_account(gc); |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
210 GSList *buds, *buddies = gaim_find_buddies(account, who); |
| 8870 | 211 GaimBuddy *b; |
|
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
212 GaimConversation *conv; |
| 6058 | 213 |
|
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
214 for (buds = buddies; buds; buds = buds->next) |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
215 { |
| 8870 | 216 b = buds->data; |
| 217 gaim_blist_server_alias_buddy(b, alias); | |
|
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
218 |
| 11338 | 219 conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, b->name, account); |
|
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
220 |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
221 if (conv != NULL && b->server_alias != NULL && |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
222 strcmp(b->server_alias, alias)) |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
223 { |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
224 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
|
225 who, alias); |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
226 |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
227 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
228 time(NULL)); |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
229 |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
230 g_free(tmp); |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
231 } |
| 8870 | 232 } |
| 8894 | 233 g_slist_free(buddies); |
| 4227 | 234 } |
| 235 | |
| 3136 | 236 /* |
| 237 * Move a buddy from one group to another on server. | |
| 238 * | |
| 239 * Note: For now we'll not deal with changing gc's at the same time, but | |
| 9285 | 240 * it should be possible. Probably needs to be done, someday. Although, |
| 241 * the UI for that would be difficult, because groups are Gaim-wide. | |
| 3136 | 242 */ |
| 6695 | 243 void serv_move_buddy(GaimBuddy *b, GaimGroup *og, GaimGroup *ng) |
| 3136 | 244 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
245 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
246 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
247 if (b->account->gc != NULL && b->account->gc->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
248 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(b->account->gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
249 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
250 if (b && b->account->gc && og && ng) { |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
251 if (prpl_info && prpl_info->group_buddy) { |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
252 prpl_info->group_buddy(b->account->gc, b->name, og->name, ng->name); |
| 3136 | 253 } |
| 254 } | |
| 255 } | |
| 256 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
257 void serv_add_permit(GaimConnection *g, const char *name) |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
258 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
259 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
260 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
261 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
262 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
263 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
264 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
|
265 prpl_info->add_permit(g, name); |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
266 } |
|
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
267 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
268 void serv_add_deny(GaimConnection *g, const char *name) |
| 1 | 269 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
270 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
271 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
272 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
273 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
274 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
275 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
|
276 prpl_info->add_deny(g, name); |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
277 } |
|
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
278 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
279 void serv_rem_permit(GaimConnection *g, const char *name) |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
280 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
281 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
282 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
283 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
284 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
285 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
286 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
|
287 prpl_info->rem_permit(g, name); |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
288 } |
| 1 | 289 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
290 void serv_rem_deny(GaimConnection *g, const char *name) |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
291 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
292 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
293 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
294 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
295 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
296 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
297 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
|
298 prpl_info->rem_deny(g, name); |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
299 } |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
660
diff
changeset
|
300 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
301 void serv_set_permit_deny(GaimConnection *g) |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
302 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
303 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
304 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
305 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
306 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
307 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
308 /* |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
309 * 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
|
310 * 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
|
311 * 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
|
312 * resending the permit/deny info when you get this. |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
313 */ |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
314 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
|
315 prpl_info->set_permit_deny(g); |
| 1 | 316 } |
| 317 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
318 void serv_join_chat(GaimConnection *g, GHashTable *data) |
| 1 | 319 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
320 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
321 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
322 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
323 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
324 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
325 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
|
326 prpl_info->join_chat(g, data); |
| 1 | 327 } |
| 328 | |
| 8562 | 329 |
| 330 void serv_reject_chat(GaimConnection *g, GHashTable *data) | |
| 331 { | |
| 332 GaimPluginProtocolInfo *prpl_info = NULL; | |
| 333 | |
| 334 if (g != NULL && g->prpl != NULL) | |
| 335 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); | |
| 336 | |
| 337 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->reject_chat) | |
| 338 prpl_info->reject_chat(g, data); | |
| 339 } | |
| 340 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
341 void serv_chat_invite(GaimConnection *g, int id, const char *message, const char *name) |
| 1 | 342 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
343 GaimPluginProtocolInfo *prpl_info = NULL; |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
344 GaimConversation *conv; |
|
2359
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
345 char *buffy = message && *message ? g_strdup(message) : NULL; |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
346 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
347 conv = gaim_find_chat(g, id); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
348 |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
349 if (conv == NULL) |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
350 return; |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
351 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
352 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
353 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
354 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
355 gaim_signal_emit(gaim_conversations_get_handle(), "chat-inviting-user", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
356 conv, name, &buffy); |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
357 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
358 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
|
359 prpl_info->chat_invite(g, id, buffy, name); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
360 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
361 gaim_signal_emit(gaim_conversations_get_handle(), "chat-invited-user", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
362 conv, name, buffy); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
363 |
|
2359
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
364 if (buffy) |
|
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
365 g_free(buffy); |
| 1 | 366 } |
| 367 | |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
368 /* Ya know, nothing uses this except gaim_conversation_destroy(), |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
369 * I think I'll just merge it into that later... |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
370 * 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
|
371 * to leave a chat without destroying the conversation. |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
372 */ |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
373 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
374 void serv_chat_leave(GaimConnection *g, int id) |
| 1 | 375 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
376 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
377 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
378 if (!g_list_find(gaim_connections_get_all(), g)) |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
379 return; |
|
1015
c3579d03a0c1
[gaim-migrate @ 1025]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1013
diff
changeset
|
380 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
381 if (g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
382 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
383 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
384 if (prpl_info && prpl_info->chat_leave) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
385 prpl_info->chat_leave(g, id); |
| 1 | 386 } |
| 387 | |
| 6059 | 388 void serv_chat_whisper(GaimConnection *g, int id, const char *who, const char *message) |
| 1 | 389 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
390 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
391 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
392 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
393 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
394 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
395 if (prpl_info && prpl_info->chat_whisper) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
396 prpl_info->chat_whisper(g, id, who, message); |
| 1 | 397 } |
| 398 | |
| 12216 | 399 int serv_chat_send(GaimConnection *gc, int id, const char *message, GaimMessageFlags flags) |
| 1 | 400 { |
|
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2131
diff
changeset
|
401 int val = -EINVAL; |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
402 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
403 |
| 11907 | 404 if (gc->prpl != NULL) |
| 405 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
406 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
407 if (prpl_info && prpl_info->chat_send) |
| 12216 | 408 val = prpl_info->chat_send(gc, id, message, flags); |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
409 |
|
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2131
diff
changeset
|
410 return val; |
| 1 | 411 } |
| 412 | |
| 5842 | 413 void serv_set_buddyicon(GaimConnection *gc, const char *filename) |
| 414 { | |
| 415 GaimPluginProtocolInfo *prpl_info = NULL; | |
|
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
416 |
| 5842 | 417 if (gc->prpl != NULL) |
| 418 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 419 | |
| 420 if (prpl_info && prpl_info->set_buddy_icon) | |
| 421 prpl_info->set_buddy_icon(gc, filename); | |
|
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
422 |
|
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
423 } |
| 5842 | 424 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
425 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
426 * 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
|
427 * sure to follow along, kids |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
428 */ |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
429 void serv_got_im(GaimConnection *gc, const char *who, const char *msg, |
| 12216 | 430 GaimMessageFlags flags, time_t mtime) |
| 1 | 431 { |
| 9944 | 432 GaimAccount *account; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
433 GaimConversation *cnv; |
| 9944 | 434 GaimPresence *presence; |
| 435 GaimStatus *status; | |
| 5136 | 436 char *message, *name; |
| 6622 | 437 char *angel, *buffy; |
| 438 int plugin_return; | |
|
2273
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
439 |
| 11903 | 440 g_return_if_fail(msg != NULL); |
| 441 | |
| 9944 | 442 account = gaim_connection_get_account(gc); |
| 443 presence = gaim_account_get_presence(account); | |
| 444 | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
445 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
446 * We should update the conversation window buttons and menu, |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
447 * if it exists. |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
448 */ |
| 11338 | 449 cnv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, who, gc->account); |
|
2106
efb39c151cf7
[gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2104
diff
changeset
|
450 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
451 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
452 * 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
|
453 * been given us by the prpls. So we create temp holders and pass |
| 6982 | 454 * those instead. It's basically just to avoid segfaults. |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
455 */ |
| 6982 | 456 buffy = g_malloc(MAX(strlen(msg) + 1, BUF_LONG)); |
| 457 strcpy(buffy, msg); | |
| 458 angel = g_strdup(who); | |
| 1339 | 459 |
| 6982 | 460 plugin_return = GPOINTER_TO_INT( |
| 461 gaim_signal_emit_return_1(gaim_conversations_get_handle(), | |
| 8999 | 462 "receiving-im-msg", gc->account, |
| 12216 | 463 &angel, &buffy, cnv, &flags)); |
| 6982 | 464 |
| 465 if (!buffy || !angel || plugin_return) { | |
| 466 if (buffy) | |
| 467 g_free(buffy); | |
| 468 if (angel) | |
| 469 g_free(angel); | |
| 470 return; | |
|
1100
f168625b63fe
[gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1089
diff
changeset
|
471 } |
| 8619 | 472 |
| 8999 | 473 name = angel; |
| 6982 | 474 message = buffy; |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
475 |
| 8999 | 476 gaim_signal_emit(gaim_conversations_get_handle(), "received-im-msg", gc->account, |
| 12216 | 477 name, message, cnv, flags); |
| 8999 | 478 |
| 8882 | 479 /* Make sure URLs are clickable */ |
| 480 buffy = gaim_markup_linkify(message); | |
| 481 g_free(message); | |
| 482 message = buffy; | |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
483 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
484 /* |
| 12216 | 485 * XXX: Should we be setting this here, or relying on prpls to set it? |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
486 */ |
| 12216 | 487 flags |= GAIM_MESSAGE_RECV; |
| 1 | 488 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
489 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
490 * 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
|
491 * 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
|
492 * are three or four different ways of handling it and different |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
493 * things we have to do for each. |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
494 */ |
| 9949 | 495 if (!gaim_presence_is_available(presence)) |
| 496 { | |
| 6479 | 497 time_t t = time(NULL); |
| 6695 | 498 GaimBuddy *b = gaim_find_buddy(gc->account, name); |
| 9620 | 499 const char *alias = b ? gaim_buddy_get_alias(b) : name; |
| 6479 | 500 struct last_auto_response *lar; |
| 9594 | 501 const gchar *auto_reply_pref; |
| 9949 | 502 const char *away_msg; |
|
12116
e75ef7aa913e
[gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents:
12114
diff
changeset
|
503 |
|
e75ef7aa913e
[gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents:
12114
diff
changeset
|
504 if (cnv == NULL) |
|
e75ef7aa913e
[gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents:
12114
diff
changeset
|
505 cnv = gaim_conversation_new(GAIM_CONV_TYPE_IM, account, name); |
|
e75ef7aa913e
[gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents:
12114
diff
changeset
|
506 |
| 12216 | 507 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, message, flags, mtime); |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
508 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
509 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
510 * Don't autorespond if: |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
511 * |
|
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
512 * - it's not supported on this connection |
| 9594 | 513 * - or the away message is empty |
|
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
514 * - or it's disabled |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
515 * - 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
|
516 * is set |
|
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
517 */ |
| 9594 | 518 auto_reply_pref = gaim_prefs_get_string("/core/away/auto_reply"); |
| 10052 | 519 |
| 6622 | 520 if (!(gc->flags & GAIM_CONNECTION_AUTO_RESP) || |
| 10052 | 521 gaim_presence_is_available(presence) || |
| 9949 | 522 !strcmp(auto_reply_pref, "never") || |
| 523 (!gaim_presence_is_idle(presence) && | |
| 524 !strcmp(auto_reply_pref, "awayidle"))) { | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
525 |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
526 g_free(name); |
|
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
527 g_free(message); |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
528 return; |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
529 } |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
530 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
531 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
532 * 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
|
533 * 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
|
534 * auto-response, and then you closed the window, and then the |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
535 * 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
|
536 * 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
|
537 * got a queue. So the rest of this block is just the auto-response, |
| 6479 | 538 * if necessary. |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
539 */ |
| 6479 | 540 lar = get_last_auto_response(gc, name); |
| 8948 | 541 if ((t - lar->sent) < SECS_BEFORE_RESENDING_AUTORESPONSE) { |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
542 g_free(name); |
|
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
543 g_free(message); |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
544 return; |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
545 } |
| 6479 | 546 lar->sent = t; |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
547 |
| 10052 | 548 status = gaim_presence_get_active_status(presence); |
| 549 if (status == NULL) | |
| 550 return; | |
| 551 | |
| 552 away_msg = gaim_value_get_string( | |
| 553 gaim_status_get_attr_value(status, "message")); | |
| 554 | |
| 12082 | 555 if ((away_msg == NULL) || (*away_msg == '\0')) |
| 556 return; | |
| 557 | |
| 8700 | 558 /* Move this to oscar.c! */ |
| 12114 | 559 buffy = gaim_str_sub_away_formatters(away_msg, alias); |
| 12216 | 560 serv_send_im(gc, name, buffy, GAIM_MESSAGE_AUTO_RESP); |
| 8700 | 561 |
| 9944 | 562 #if 0 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
563 if (!cnv && awayqueue && |
|
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
564 gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) { |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
565 |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
566 struct queued_message *qm; |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
567 |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
568 qm = g_new0(struct queued_message, 1); |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
569 g_snprintf(qm->name, sizeof(qm->name), "%s", name); |
| 12114 | 570 qm->message = g_strdup(buffy); |
| 4608 | 571 qm->account = gc->account; |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
572 qm->tm = mtime; |
| 6621 | 573 qm->flags = GAIM_MESSAGE_SEND | GAIM_MESSAGE_AUTO_RESP; |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
574 message_queue = g_slist_append(message_queue, qm); |
| 9944 | 575 } |
| 576 else if (cnv != NULL) | |
| 577 #endif | |
| 578 { | |
| 12114 | 579 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, buffy, |
| 9944 | 580 GAIM_MESSAGE_SEND | GAIM_MESSAGE_AUTO_RESP, |
| 581 mtime); | |
| 582 } | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
583 |
| 12114 | 584 g_free(buffy); |
| 9944 | 585 } |
| 586 else | |
| 587 { | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
588 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
589 * 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
|
590 * 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
|
591 * earlier), then play a sound indicating we've received it and |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
592 * then display it. Easy. |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
593 */ |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
594 |
|
11709
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11706
diff
changeset
|
595 if (cnv == NULL) |
|
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11706
diff
changeset
|
596 cnv = gaim_conversation_new(GAIM_CONV_TYPE_IM, gc->account, name); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
597 |
| 12216 | 598 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, message, flags, mtime); |
| 1 | 599 } |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
600 |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
601 g_free(name); |
|
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
602 g_free(message); |
| 1 | 603 } |
| 604 | |
| 5630 | 605 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
|
606 GaimTypingState state) { |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
607 GaimConversation *conv; |
|
11709
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11706
diff
changeset
|
608 GaimConvIm *im = NULL; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
609 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
610 conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, name, gc->account); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
611 if (conv != NULL) { |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
612 im = GAIM_CONV_IM(conv); |
|
5032
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
613 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
614 gaim_conv_im_set_typing_state(im, state); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
615 gaim_conv_im_update_typing(im); |
|
6456
ccfdf9f2cdd1
[gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents:
6444
diff
changeset
|
616 } |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
617 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
618 if (state == GAIM_TYPING) |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
619 { |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
620 gaim_signal_emit(gaim_conversations_get_handle(), |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
621 "buddy-typing", gc->account, name); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
622 } |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
623 else |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
624 { |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
625 gaim_signal_emit(gaim_conversations_get_handle(), |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
626 "buddy-typing-stopped", gc->account, name); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
627 } |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
628 |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
629 if (conv != NULL && timeout > 0) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
630 gaim_conv_im_start_typing_timeout(im, timeout); |
| 2993 | 631 } |
| 1 | 632 |
| 5630 | 633 void serv_got_typing_stopped(GaimConnection *gc, const char *name) { |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
634 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
635 GaimConversation *conv; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
636 GaimConvIm *im; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
637 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
638 conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, name, gc->account); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
639 if (conv != NULL) |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
640 { |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
641 im = GAIM_CONV_IM(conv); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
642 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
643 if (im->typing_state == GAIM_NOT_TYPING) |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
644 return; |
|
5032
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
645 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
646 gaim_conv_im_stop_typing_timeout(im); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
647 gaim_conv_im_set_typing_state(im, GAIM_NOT_TYPING); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
648 gaim_conv_im_update_typing(im); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
649 } |
|
5032
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
650 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
651 gaim_signal_emit(gaim_conversations_get_handle(), |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
652 "buddy-typing-stopped", gc->account, name); |
| 2993 | 653 } |
| 1 | 654 |
| 4487 | 655 struct chat_invite_data { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
656 GaimConnection *gc; |
| 5234 | 657 GHashTable *components; |
| 4487 | 658 }; |
|
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
659 |
| 4487 | 660 static void chat_invite_data_free(struct chat_invite_data *cid) |
| 1 | 661 { |
| 5234 | 662 if (cid->components) |
| 663 g_hash_table_destroy(cid->components); | |
| 4487 | 664 g_free(cid); |
| 665 } | |
|
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
666 |
| 8562 | 667 |
| 668 static void chat_invite_reject(struct chat_invite_data *cid) | |
| 669 { | |
| 670 serv_reject_chat(cid->gc, cid->components); | |
| 671 chat_invite_data_free(cid); | |
| 672 } | |
| 673 | |
| 674 | |
| 4487 | 675 static void chat_invite_accept(struct chat_invite_data *cid) |
| 676 { | |
| 5234 | 677 serv_join_chat(cid->gc, cid->components); |
| 4487 | 678 chat_invite_data_free(cid); |
| 1 | 679 } |
| 680 | |
| 681 | |
| 682 | |
| 5630 | 683 void serv_got_chat_invite(GaimConnection *gc, const char *name, |
| 684 const char *who, const char *message, GHashTable *data) | |
| 1 | 685 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
686 GaimAccount *account; |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
687 char buf2[BUF_LONG]; |
| 4487 | 688 struct chat_invite_data *cid = g_new0(struct chat_invite_data, 1); |
|
11064
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
689 int plugin_return; |
| 1 | 690 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
691 account = gaim_connection_get_account(gc); |
| 1 | 692 |
|
11064
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
693 plugin_return = GPOINTER_TO_INT(gaim_signal_emit_return_1( |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
694 gaim_conversations_get_handle(), |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
695 "chat-invited", account, who, name, message, data)); |
| 1 | 696 |
| 4487 | 697 cid->gc = gc; |
| 5234 | 698 cid->components = data; |
| 1 | 699 |
|
11064
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
700 if (plugin_return == 0) |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
701 { |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
702 if (message != NULL) |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
703 { |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
704 g_snprintf(buf2, sizeof(buf2), |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
705 _("%s has invited %s to the chat room %s:\n%s"), |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
706 who, gaim_account_get_username(account), name, message); |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
707 } |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
708 else |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
709 g_snprintf(buf2, sizeof(buf2), |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
710 _("%s has invited %s to the chat room %s\n"), |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
711 who, gaim_account_get_username(account), name); |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
712 |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
713 |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
714 gaim_request_accept_cancel(gc, NULL, _("Accept chat invitation?"), buf2, |
| 9976 | 715 GAIM_DEFAULT_ACTION_NONE, cid, |
|
5498
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5461
diff
changeset
|
716 G_CALLBACK(chat_invite_accept), |
| 8562 | 717 G_CALLBACK(chat_invite_reject)); |
|
11064
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
718 } |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
719 else if (plugin_return > 0) |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
720 chat_invite_accept(cid); |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
721 else |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
722 chat_invite_reject(cid); |
| 1 | 723 } |
| 724 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
725 GaimConversation *serv_got_joined_chat(GaimConnection *gc, |
| 5630 | 726 int id, const char *name) |
| 1 | 727 { |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
728 GaimConversation *conv; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
729 GaimConvChat *chat; |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
730 GaimAccount *account; |
| 1 | 731 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
732 account = gaim_connection_get_account(gc); |
| 1 | 733 |
| 11338 | 734 conv = gaim_conversation_new(GAIM_CONV_TYPE_CHAT, account, name); |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
735 chat = GAIM_CONV_CHAT(conv); |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
736 |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
737 if (!g_slist_find(gc->buddy_chats, conv)) |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
738 gc->buddy_chats = g_slist_append(gc->buddy_chats, conv); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
739 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
740 gaim_conv_chat_set_id(chat, id); |
|
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4440
diff
changeset
|
741 |
|
1785
f4ae086c746b
[gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1775
diff
changeset
|
742 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
743 gaim_signal_emit(gaim_conversations_get_handle(), "chat-joined", conv); |
| 3710 | 744 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
745 return conv; |
| 1 | 746 } |
| 747 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
748 void serv_got_chat_left(GaimConnection *g, int id) |
| 1 | 749 { |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
750 GSList *bcs; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
751 GaimConversation *conv = NULL; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
752 GaimConvChat *chat = NULL; |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
753 GaimAccount *account; |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
754 |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
755 account = gaim_connection_get_account(g); |
| 1 | 756 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
757 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
758 conv = (GaimConversation *)bcs->data; |
| 1 | 759 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
760 chat = GAIM_CONV_CHAT(conv); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
761 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
762 if (gaim_conv_chat_get_id(chat) == id) |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
763 break; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
764 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
765 conv = NULL; |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
766 } |
| 1 | 767 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
768 if (!conv) |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
769 return; |
| 1 | 770 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
771 gaim_signal_emit(gaim_conversations_get_handle(), "chat-left", conv); |
|
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
772 |
|
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
773 gaim_debug(GAIM_DEBUG_INFO, "server", "Leaving room: %s\n", |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
774 gaim_conversation_get_name(conv)); |
| 1 | 775 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
776 g->buddy_chats = g_slist_remove(g->buddy_chats, conv); |
| 1 | 777 |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
778 gaim_conv_chat_left(GAIM_CONV_CHAT(conv)); |
| 1 | 779 } |
| 780 | |
| 6059 | 781 void serv_got_chat_in(GaimConnection *g, int id, const char *who, |
| 12216 | 782 GaimMessageFlags flags, const char *message, time_t mtime) |
| 1 | 783 { |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
784 GSList *bcs; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
785 GaimConversation *conv = NULL; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
786 GaimConvChat *chat = NULL; |
|
2296
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
787 char *buf; |
| 3163 | 788 char *buffy, *angel; |
| 789 int plugin_return; | |
| 1 | 790 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
791 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
792 conv = (GaimConversation *)bcs->data; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
793 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
794 chat = GAIM_CONV_CHAT(conv); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
795 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
796 if (gaim_conv_chat_get_id(chat) == id) |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
797 break; |
| 1 | 798 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
799 conv = NULL; |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
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 if (!conv) |
|
1100
f168625b63fe
[gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1089
diff
changeset
|
803 return; |
|
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
804 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
805 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
806 * 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
|
807 * 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
|
808 * 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
|
809 * 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
|
810 * don't want you to be dealing with it. |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
811 */ |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
812 |
| 3163 | 813 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG)); |
| 814 strcpy(buffy, message); | |
| 815 angel = g_strdup(who); | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
816 |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
817 plugin_return = GPOINTER_TO_INT( |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
818 gaim_signal_emit_return_1(gaim_conversations_get_handle(), |
| 8999 | 819 "receiving-chat-msg", g->account, |
| 12216 | 820 &angel, &buffy, conv, &flags)); |
| 3163 | 821 |
| 822 if (!buffy || !angel || plugin_return) { | |
| 823 if (buffy) | |
| 824 g_free(buffy); | |
| 825 if (angel) | |
| 826 g_free(angel); | |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
827 return; |
| 3163 | 828 } |
| 829 who = angel; | |
| 830 message = buffy; | |
| 1 | 831 |
| 8999 | 832 gaim_signal_emit(gaim_conversations_get_handle(), "received-chat-msg", g->account, |
| 12216 | 833 who, message, conv, flags); |
| 8999 | 834 |
| 8882 | 835 /* Make sure URLs are clickable */ |
| 836 buf = gaim_markup_linkify(message); | |
|
1643
d7e380618fd5
[gaim-migrate @ 1653]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1587
diff
changeset
|
837 |
| 12216 | 838 gaim_conv_chat_write(chat, who, buf, flags, mtime); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
839 |
| 6350 | 840 g_free(angel); |
|
2296
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
841 g_free(buf); |
| 6062 | 842 g_free(buffy); |
| 1 | 843 } |
| 9466 | 844 |
| 845 void serv_send_file(GaimConnection *gc, const char *who, const char *file) | |
| 846 { | |
| 847 GaimPluginProtocolInfo *prpl_info = NULL; | |
| 10751 | 848 |
| 9466 | 849 if (gc != NULL && gc->prpl != NULL) |
| 850 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 851 | |
| 9647 | 852 if (prpl_info && prpl_info->send_file) { |
| 853 if (!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, who)) { | |
| 854 prpl_info->send_file(gc, who, file); | |
| 855 } | |
| 856 } | |
| 9466 | 857 } |
| 12024 | 858 |
| 859 void serv_voice_chat(GaimConnection *gc, const char *who) | |
| 860 { | |
| 861 GaimPluginProtocolInfo *prpl_info = NULL; | |
| 862 | |
| 863 if (gc != NULL && gc->prpl != NULL) | |
| 864 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 865 | |
| 866 if (prpl_info && prpl_info->media_prpl_ops && prpl_info->media_prpl_ops->call) | |
| 867 prpl_info->media_prpl_ops->call(gc, who); | |
| 868 } |
