Mercurial > pidgin.yaz
annotate src/server.c @ 12114:2cbb5993c819
[gaim-migrate @ 14414]
Killed stylize(). No more gtk in server.c.
Next stop: No more server.c.
It looks like also the auto-response code was leaking, so that's fixed now.
committer: Tailor Script <tailor@pidgin.im>
| author | Sean Egan <seanegan@gmail.com> |
|---|---|
| date | Wed, 16 Nov 2005 16:59:22 +0000 |
| parents | 3b536c791a64 |
| children | e75ef7aa913e |
| 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, |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
116 GaimConvImFlags imflags) |
| 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) |
| 6982 | 134 val = prpl_info->send_im(gc, name, message, imflags); |
|
94
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
79
diff
changeset
|
135 |
| 11907 | 136 /* Only update the last_sent_time if the user actually sent the message */ |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
137 if (!(imflags & GAIM_CONV_IM_AUTO_RESP)) |
| 11907 | 138 time(&gc->last_sent_time); |
|
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
139 |
| 9594 | 140 /* |
| 141 * XXX - If "only auto-reply when away & idle" is set, then shouldn't | |
| 142 * this only reset lar->sent if we're away AND idle? | |
| 143 */ | |
| 144 auto_reply_pref = gaim_prefs_get_string("/core/away/auto_reply"); | |
| 9949 | 145 if ((gc->flags & GAIM_CONNECTION_AUTO_RESP) && |
| 146 !gaim_presence_is_available(presence) && | |
| 147 strcmp(auto_reply_pref, "never")) { | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
148 |
| 6479 | 149 struct last_auto_response *lar; |
| 150 lar = get_last_auto_response(gc, name); | |
| 151 lar->sent = time(NULL); | |
| 3815 | 152 } |
| 153 | |
| 9949 | 154 if (conv && gaim_conv_im_get_type_again_timeout(GAIM_CONV_IM(conv))) |
| 155 gaim_conv_im_stop_type_again_timeout(GAIM_CONV_IM(conv)); | |
| 3601 | 156 |
|
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
157 return val; |
| 1 | 158 } |
| 159 | |
| 9285 | 160 void serv_get_info(GaimConnection *gc, const char *name) |
| 1 | 161 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
162 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
163 |
| 9285 | 164 if (gc != NULL && gc->prpl != NULL) |
| 165 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
166 |
| 9285 | 167 if (gc && prpl_info && prpl_info->get_info) |
| 168 prpl_info->get_info(gc, name); | |
|
249
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
248
diff
changeset
|
169 } |
|
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
248
diff
changeset
|
170 |
| 9285 | 171 void serv_set_info(GaimConnection *gc, const char *info) |
| 1 | 172 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
173 GaimPluginProtocolInfo *prpl_info = NULL; |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
174 GaimAccount *account; |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
175 |
| 9285 | 176 if (gc != NULL && gc->prpl != NULL) |
| 177 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
178 |
| 9285 | 179 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
|
180 prpl_info->set_info) { |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
181 |
| 9285 | 182 account = gaim_connection_get_account(gc); |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
183 |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
184 if (gaim_signal_emit_return_1(gaim_accounts_get_handle(), |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
185 "account-setting-info", account, info)) |
| 3456 | 186 return; |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
187 |
| 9285 | 188 prpl_info->set_info(gc, info); |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
189 |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
190 gaim_signal_emit(gaim_accounts_get_handle(), |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
191 "account-set-info", account, info); |
|
1749
5bfc58c20e82
[gaim-migrate @ 1759]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1734
diff
changeset
|
192 } |
|
237
6ced2f1c8b24
[gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
200
diff
changeset
|
193 } |
|
6ced2f1c8b24
[gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
200
diff
changeset
|
194 |
| 3136 | 195 /* |
| 196 * Set buddy's alias on server roster/list | |
| 197 */ | |
| 6695 | 198 void serv_alias_buddy(GaimBuddy *b) |
| 3136 | 199 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
200 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
201 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
202 if (b != NULL && b->account->gc->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
203 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(b->account->gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
204 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
205 if (b && prpl_info && prpl_info->alias_buddy) { |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
206 prpl_info->alias_buddy(b->account->gc, b->name, b->alias); |
| 3136 | 207 } |
| 208 } | |
| 209 | |
|
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
210 void |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
211 serv_got_alias(GaimConnection *gc, const char *who, const char *alias) |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
212 { |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
213 GaimAccount *account = gaim_connection_get_account(gc); |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
214 GSList *buds, *buddies = gaim_find_buddies(account, who); |
| 8870 | 215 GaimBuddy *b; |
|
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
216 GaimConversation *conv; |
| 6058 | 217 |
|
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
218 for (buds = buddies; buds; buds = buds->next) |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
219 { |
| 8870 | 220 b = buds->data; |
| 221 gaim_blist_server_alias_buddy(b, alias); | |
|
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
222 |
| 11338 | 223 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
|
224 |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
225 if (conv != NULL && b->server_alias != NULL && |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
226 strcmp(b->server_alias, alias)) |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
227 { |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
228 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
|
229 who, alias); |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
230 |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
231 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
232 time(NULL)); |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
233 |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
234 g_free(tmp); |
|
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
235 } |
| 8870 | 236 } |
| 8894 | 237 g_slist_free(buddies); |
| 4227 | 238 } |
| 239 | |
| 3136 | 240 /* |
| 241 * Move a buddy from one group to another on server. | |
| 242 * | |
| 243 * Note: For now we'll not deal with changing gc's at the same time, but | |
| 9285 | 244 * it should be possible. Probably needs to be done, someday. Although, |
| 245 * the UI for that would be difficult, because groups are Gaim-wide. | |
| 3136 | 246 */ |
| 6695 | 247 void serv_move_buddy(GaimBuddy *b, GaimGroup *og, GaimGroup *ng) |
| 3136 | 248 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
249 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
250 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
251 if (b->account->gc != NULL && b->account->gc->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
252 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(b->account->gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
253 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
254 if (b && b->account->gc && og && ng) { |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
255 if (prpl_info && prpl_info->group_buddy) { |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
256 prpl_info->group_buddy(b->account->gc, b->name, og->name, ng->name); |
| 3136 | 257 } |
| 258 } | |
| 259 } | |
| 260 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
261 void serv_add_permit(GaimConnection *g, const char *name) |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
262 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
263 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
264 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
265 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
266 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
267 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
268 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
|
269 prpl_info->add_permit(g, name); |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
270 } |
|
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
271 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
272 void serv_add_deny(GaimConnection *g, const char *name) |
| 1 | 273 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
274 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
275 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
276 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
277 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
278 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
279 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
|
280 prpl_info->add_deny(g, name); |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
281 } |
|
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
282 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
283 void serv_rem_permit(GaimConnection *g, const char *name) |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
284 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
285 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
286 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
287 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
288 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
289 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
290 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
|
291 prpl_info->rem_permit(g, name); |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
292 } |
| 1 | 293 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
294 void serv_rem_deny(GaimConnection *g, const char *name) |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
295 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
296 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
297 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
298 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
299 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
300 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
301 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
|
302 prpl_info->rem_deny(g, name); |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
303 } |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
660
diff
changeset
|
304 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
305 void serv_set_permit_deny(GaimConnection *g) |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
306 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
307 GaimPluginProtocolInfo *prpl_info = NULL; |
|
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 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
310 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
311 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
312 /* |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
313 * 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
|
314 * 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
|
315 * 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
|
316 * resending the permit/deny info when you get this. |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
317 */ |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
318 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
|
319 prpl_info->set_permit_deny(g); |
| 1 | 320 } |
| 321 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
322 void serv_join_chat(GaimConnection *g, GHashTable *data) |
| 1 | 323 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
324 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
325 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
326 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
327 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
328 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
329 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
|
330 prpl_info->join_chat(g, data); |
| 1 | 331 } |
| 332 | |
| 8562 | 333 |
| 334 void serv_reject_chat(GaimConnection *g, GHashTable *data) | |
| 335 { | |
| 336 GaimPluginProtocolInfo *prpl_info = NULL; | |
| 337 | |
| 338 if (g != NULL && g->prpl != NULL) | |
| 339 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); | |
| 340 | |
| 341 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->reject_chat) | |
| 342 prpl_info->reject_chat(g, data); | |
| 343 } | |
| 344 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
345 void serv_chat_invite(GaimConnection *g, int id, const char *message, const char *name) |
| 1 | 346 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
347 GaimPluginProtocolInfo *prpl_info = NULL; |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
348 GaimConversation *conv; |
|
2359
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
349 char *buffy = message && *message ? g_strdup(message) : NULL; |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
350 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
351 conv = gaim_find_chat(g, id); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
352 |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
353 if (conv == NULL) |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
354 return; |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
355 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
356 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
357 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
358 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
359 gaim_signal_emit(gaim_conversations_get_handle(), "chat-inviting-user", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
360 conv, name, &buffy); |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
361 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
362 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
|
363 prpl_info->chat_invite(g, id, buffy, name); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
364 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
365 gaim_signal_emit(gaim_conversations_get_handle(), "chat-invited-user", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
366 conv, name, buffy); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
367 |
|
2359
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
368 if (buffy) |
|
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
369 g_free(buffy); |
| 1 | 370 } |
| 371 | |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
372 /* Ya know, nothing uses this except gaim_conversation_destroy(), |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
373 * I think I'll just merge it into that later... |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
374 * 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
|
375 * to leave a chat without destroying the conversation. |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
376 */ |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
377 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
378 void serv_chat_leave(GaimConnection *g, int id) |
| 1 | 379 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
380 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
381 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
382 if (!g_list_find(gaim_connections_get_all(), g)) |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
383 return; |
|
1015
c3579d03a0c1
[gaim-migrate @ 1025]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1013
diff
changeset
|
384 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
385 if (g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
386 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
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 (prpl_info && prpl_info->chat_leave) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
389 prpl_info->chat_leave(g, id); |
| 1 | 390 } |
| 391 | |
| 6059 | 392 void serv_chat_whisper(GaimConnection *g, int id, const char *who, const char *message) |
| 1 | 393 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
394 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
395 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
396 if (g != NULL && g->prpl != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
397 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
|
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 (prpl_info && prpl_info->chat_whisper) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
400 prpl_info->chat_whisper(g, id, who, message); |
| 1 | 401 } |
| 402 | |
| 11907 | 403 int serv_chat_send(GaimConnection *gc, int id, const char *message) |
| 1 | 404 { |
|
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2131
diff
changeset
|
405 int val = -EINVAL; |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
406 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
407 |
| 11907 | 408 if (gc->prpl != NULL) |
| 409 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
410 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
411 if (prpl_info && prpl_info->chat_send) |
| 11907 | 412 val = prpl_info->chat_send(gc, id, message); |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
413 |
| 11907 | 414 time(&gc->last_sent_time); |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
415 |
|
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2131
diff
changeset
|
416 return val; |
| 1 | 417 } |
| 418 | |
| 5842 | 419 void serv_set_buddyicon(GaimConnection *gc, const char *filename) |
| 420 { | |
| 421 GaimPluginProtocolInfo *prpl_info = NULL; | |
|
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
422 |
| 5842 | 423 if (gc->prpl != NULL) |
| 424 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 425 | |
| 426 if (prpl_info && prpl_info->set_buddy_icon) | |
| 427 prpl_info->set_buddy_icon(gc, filename); | |
|
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
428 |
|
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
429 } |
| 5842 | 430 |
| 9944 | 431 #if 0 |
| 1773 | 432 int find_queue_row_by_name(char *name) |
| 433 { | |
| 4412 | 434 gchar *temp; |
| 435 gint i = 0; | |
| 436 gboolean valid; | |
| 437 GtkTreeIter iter; | |
| 1773 | 438 |
| 4412 | 439 valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(awayqueuestore), &iter); |
| 440 while(valid) { | |
| 441 gtk_tree_model_get(GTK_TREE_MODEL(awayqueuestore), &iter, 0, &temp, -1); | |
| 442 if(!strcmp(name, temp)) | |
| 1773 | 443 return i; |
| 4412 | 444 g_free(temp); |
|
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
445 |
| 4412 | 446 i++; |
| 447 valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(awayqueuestore), &iter); | |
| 1773 | 448 } |
| 449 | |
| 450 return -1; | |
| 451 } | |
| 452 | |
| 453 int find_queue_total_by_name(char *name) | |
| 454 { | |
| 455 GSList *templist; | |
| 456 int i = 0; | |
| 457 | |
| 458 templist = message_queue; | |
| 459 | |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
460 while (templist) { |
| 1773 | 461 struct queued_message *qm = (struct queued_message *)templist->data; |
| 6621 | 462 if ((qm->flags & GAIM_MESSAGE_RECV) && !strcmp(name, qm->name)) |
| 1773 | 463 i++; |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
464 |
| 1773 | 465 templist = templist->next; |
| 466 } | |
| 467 | |
| 468 return i; | |
| 469 } | |
| 9944 | 470 #endif |
| 1773 | 471 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
472 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
473 * 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
|
474 * sure to follow along, kids |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
475 */ |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
476 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
|
477 GaimConvImFlags imflags, time_t mtime) |
| 1 | 478 { |
| 9944 | 479 GaimAccount *account; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
480 GaimConversation *cnv; |
| 9944 | 481 GaimPresence *presence; |
| 482 GaimStatus *status; | |
| 6982 | 483 GaimMessageFlags msgflags; |
| 5136 | 484 char *message, *name; |
| 6622 | 485 char *angel, *buffy; |
| 486 int plugin_return; | |
|
2273
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
487 |
| 11903 | 488 g_return_if_fail(msg != NULL); |
| 489 | |
| 9944 | 490 account = gaim_connection_get_account(gc); |
| 491 presence = gaim_account_get_presence(account); | |
| 492 | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
493 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
494 * We should update the conversation window buttons and menu, |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
495 * if it exists. |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
496 */ |
| 11338 | 497 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
|
498 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
499 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
500 * 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
|
501 * been given us by the prpls. So we create temp holders and pass |
| 6982 | 502 * those instead. It's basically just to avoid segfaults. |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
503 */ |
| 6982 | 504 buffy = g_malloc(MAX(strlen(msg) + 1, BUF_LONG)); |
| 505 strcpy(buffy, msg); | |
| 506 angel = g_strdup(who); | |
| 1339 | 507 |
| 6982 | 508 plugin_return = GPOINTER_TO_INT( |
| 509 gaim_signal_emit_return_1(gaim_conversations_get_handle(), | |
| 8999 | 510 "receiving-im-msg", gc->account, |
| 10104 | 511 &angel, &buffy, cnv, &imflags)); |
| 6982 | 512 |
| 513 if (!buffy || !angel || plugin_return) { | |
| 514 if (buffy) | |
| 515 g_free(buffy); | |
| 516 if (angel) | |
| 517 g_free(angel); | |
| 518 return; | |
|
1100
f168625b63fe
[gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1089
diff
changeset
|
519 } |
| 8619 | 520 |
| 8999 | 521 name = angel; |
| 6982 | 522 message = buffy; |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
523 |
| 8999 | 524 gaim_signal_emit(gaim_conversations_get_handle(), "received-im-msg", gc->account, |
| 10104 | 525 name, message, cnv, imflags); |
| 8999 | 526 |
| 8882 | 527 /* Make sure URLs are clickable */ |
| 528 buffy = gaim_markup_linkify(message); | |
| 529 g_free(message); | |
| 530 message = buffy; | |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
531 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
532 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
533 * 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
|
534 * 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
|
535 * was an auto-response, we set the appropriate flag. This is just so |
| 6982 | 536 * 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
|
537 */ |
| 6982 | 538 msgflags = GAIM_MESSAGE_RECV; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
539 if (imflags & GAIM_CONV_IM_AUTO_RESP) |
| 6982 | 540 msgflags |= GAIM_MESSAGE_AUTO_RESP; |
| 1 | 541 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
542 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
543 * 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
|
544 * 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
|
545 * are three or four different ways of handling it and different |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
546 * things we have to do for each. |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
547 */ |
| 9949 | 548 if (!gaim_presence_is_available(presence)) |
| 549 { | |
| 6479 | 550 time_t t = time(NULL); |
| 6695 | 551 GaimBuddy *b = gaim_find_buddy(gc->account, name); |
| 9620 | 552 const char *alias = b ? gaim_buddy_get_alias(b) : name; |
| 6479 | 553 struct last_auto_response *lar; |
| 9594 | 554 const gchar *auto_reply_pref; |
| 9949 | 555 const char *away_msg; |
| 556 #if 0 | |
| 557 int row; | |
| 558 #endif | |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
559 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
560 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
561 * 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
|
562 * awayness currently works, this is fucked up. It's possible |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
563 * for an account to be away without the imaway dialog being |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
564 * 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
|
565 * away without the imaway dialog being shown. So in order for |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
566 * 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
|
567 * imaway dialog actually exists, first. |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
568 */ |
| 9944 | 569 #if 0 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
570 if (!cnv && awayqueue && |
|
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
571 gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) { |
|
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
572 /* |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
573 * Alright, so we're going to queue it. Neat, eh? :) |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
574 * So first we create something to store the message, and add |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
575 * 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
|
576 * that we've queued something. |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
577 */ |
|
1769
68eddf56f419
[gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1768
diff
changeset
|
578 struct queued_message *qm; |
| 4412 | 579 GtkTreeIter iter; |
| 580 gchar path[10]; | |
| 4167 | 581 |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
582 qm = g_new0(struct queued_message, 1); |
| 5136 | 583 g_snprintf(qm->name, sizeof(qm->name), "%s", name); |
|
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
584 if(strcmp(alias, name) != 0) |
|
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
585 g_snprintf(qm->alias, sizeof(qm->alias), "(%s)", alias); |
| 6982 | 586 qm->message = g_strdup(message); |
| 4608 | 587 qm->account = gc->account; |
|
1769
68eddf56f419
[gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1768
diff
changeset
|
588 qm->tm = mtime; |
| 6982 | 589 qm->flags = msgflags; |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
590 message_queue = g_slist_append(message_queue, qm); |
| 1768 | 591 |
| 1773 | 592 row = find_queue_row_by_name(qm->name); |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
593 if (row >= 0) { |
| 1773 | 594 char number[32]; |
| 595 int qtotal; | |
| 596 | |
| 597 qtotal = find_queue_total_by_name(qm->name); | |
| 6308 | 598 g_snprintf(number, 32, ngettext("(%d message)", |
| 599 "(%d messages)", qtotal), qtotal); | |
| 4412 | 600 g_snprintf(path, 10, "%d", row); |
| 601 gtk_tree_model_get_iter_from_string( | |
| 602 GTK_TREE_MODEL(awayqueuestore), &iter, path); | |
| 603 gtk_list_store_set(awayqueuestore, &iter, | |
|
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
604 2, number, -1); |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
605 } else { |
|
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
606 gtk_tree_model_get_iter_first(GTK_TREE_MODEL(awayqueuestore), |
| 4412 | 607 &iter); |
| 608 gtk_list_store_append(awayqueuestore, &iter); | |
| 609 gtk_list_store_set(awayqueuestore, &iter, | |
| 610 0, qm->name, | |
|
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
611 1, qm->alias, |
|
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
612 2, _("(1 message)"), |
| 4412 | 613 -1); |
| 1773 | 614 } |
| 9944 | 615 } |
| 616 else | |
| 617 #endif | |
| 618 { | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
619 /* |
| 4985 | 620 * Make sure the conversation |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
621 * exists and is updated (partly handled above already), play |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
622 * the receive sound (sound.c will take care of not playing |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
623 * while away), and then write it to the convo window. |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
624 */ |
|
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4440
diff
changeset
|
625 if (cnv == NULL) |
| 11338 | 626 cnv = gaim_conversation_new(GAIM_CONV_TYPE_IM, account, name); |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
627 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
628 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, message, msgflags, mtime); |
| 1 | 629 } |
| 630 | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
631 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
632 * 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
|
633 * auto-response. That is, of course, unless the horse.... no wait. |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
634 * Don't autorespond if: |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
635 * |
|
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
636 * - it's not supported on this connection |
| 9594 | 637 * - or the away message is empty |
|
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
638 * - or it's disabled |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
639 * - 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
|
640 * is set |
|
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
641 */ |
| 9594 | 642 auto_reply_pref = gaim_prefs_get_string("/core/away/auto_reply"); |
| 10052 | 643 |
| 6622 | 644 if (!(gc->flags & GAIM_CONNECTION_AUTO_RESP) || |
| 10052 | 645 gaim_presence_is_available(presence) || |
| 9949 | 646 !strcmp(auto_reply_pref, "never") || |
| 647 (!gaim_presence_is_idle(presence) && | |
| 648 !strcmp(auto_reply_pref, "awayidle"))) { | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
649 |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
650 g_free(name); |
|
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
651 g_free(message); |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
652 return; |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
653 } |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
654 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
655 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
656 * 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
|
657 * 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
|
658 * auto-response, and then you closed the window, and then the |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
659 * 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
|
660 * 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
|
661 * got a queue. So the rest of this block is just the auto-response, |
| 6479 | 662 * if necessary. |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
663 */ |
| 6479 | 664 lar = get_last_auto_response(gc, name); |
| 8948 | 665 if ((t - lar->sent) < SECS_BEFORE_RESENDING_AUTORESPONSE) { |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
666 g_free(name); |
|
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
667 g_free(message); |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
668 return; |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
669 } |
| 6479 | 670 lar->sent = t; |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
671 |
| 10052 | 672 status = gaim_presence_get_active_status(presence); |
| 673 if (status == NULL) | |
| 674 return; | |
| 675 | |
| 676 away_msg = gaim_value_get_string( | |
| 677 gaim_status_get_attr_value(status, "message")); | |
| 678 | |
| 12082 | 679 if ((away_msg == NULL) || (*away_msg == '\0')) |
| 680 return; | |
| 681 | |
| 8700 | 682 /* Move this to oscar.c! */ |
| 12114 | 683 buffy = gaim_str_sub_away_formatters(away_msg, alias); |
| 8700 | 684 serv_send_im(gc, name, buffy, GAIM_CONV_IM_AUTO_RESP); |
| 685 | |
| 9944 | 686 #if 0 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
687 if (!cnv && awayqueue && |
|
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
688 gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) { |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
689 |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
690 struct queued_message *qm; |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
691 |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
692 qm = g_new0(struct queued_message, 1); |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
693 g_snprintf(qm->name, sizeof(qm->name), "%s", name); |
| 12114 | 694 qm->message = g_strdup(buffy); |
| 4608 | 695 qm->account = gc->account; |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
696 qm->tm = mtime; |
| 6621 | 697 qm->flags = GAIM_MESSAGE_SEND | GAIM_MESSAGE_AUTO_RESP; |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
698 message_queue = g_slist_append(message_queue, qm); |
| 9944 | 699 } |
| 700 else if (cnv != NULL) | |
| 701 #endif | |
| 702 { | |
| 12114 | 703 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, buffy, |
| 9944 | 704 GAIM_MESSAGE_SEND | GAIM_MESSAGE_AUTO_RESP, |
| 705 mtime); | |
| 706 } | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
707 |
| 12114 | 708 g_free(buffy); |
| 9944 | 709 } |
| 710 else | |
| 711 { | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
712 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
713 * 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
|
714 * 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
|
715 * earlier), then play a sound indicating we've received it and |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
716 * then display it. Easy. |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
717 */ |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
718 |
|
11709
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11706
diff
changeset
|
719 if (cnv == NULL) |
|
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11706
diff
changeset
|
720 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
|
721 |
|
11709
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11706
diff
changeset
|
722 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, message, msgflags, mtime); |
| 1 | 723 } |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
724 |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
725 g_free(name); |
|
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
726 g_free(message); |
| 1 | 727 } |
| 728 | |
| 5630 | 729 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
|
730 GaimTypingState state) { |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
731 GaimConversation *conv; |
|
11709
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
11706
diff
changeset
|
732 GaimConvIm *im = NULL; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
733 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
734 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
|
735 if (conv != NULL) { |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
736 im = GAIM_CONV_IM(conv); |
|
5032
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
737 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
738 gaim_conv_im_set_typing_state(im, state); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
739 gaim_conv_im_update_typing(im); |
|
6456
ccfdf9f2cdd1
[gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents:
6444
diff
changeset
|
740 } |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
741 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
742 if (state == GAIM_TYPING) |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
743 { |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
744 gaim_signal_emit(gaim_conversations_get_handle(), |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
745 "buddy-typing", gc->account, name); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
746 } |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
747 else |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
748 { |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
749 gaim_signal_emit(gaim_conversations_get_handle(), |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
750 "buddy-typing-stopped", gc->account, name); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
751 } |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
752 |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
753 if (conv != NULL && timeout > 0) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
754 gaim_conv_im_start_typing_timeout(im, timeout); |
| 2993 | 755 } |
| 1 | 756 |
| 5630 | 757 void serv_got_typing_stopped(GaimConnection *gc, const char *name) { |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
758 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
759 GaimConversation *conv; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
760 GaimConvIm *im; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
761 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
762 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
|
763 if (conv != NULL) |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
764 { |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
765 im = GAIM_CONV_IM(conv); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
766 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
767 if (im->typing_state == GAIM_NOT_TYPING) |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
768 return; |
|
5032
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
769 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
770 gaim_conv_im_stop_typing_timeout(im); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
771 gaim_conv_im_set_typing_state(im, GAIM_NOT_TYPING); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
772 gaim_conv_im_update_typing(im); |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
773 } |
|
5032
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
774 |
|
11706
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
775 gaim_signal_emit(gaim_conversations_get_handle(), |
|
bcc49c25ef90
[gaim-migrate @ 13997]
Richard Laager <rlaager@wiktel.com>
parents:
11643
diff
changeset
|
776 "buddy-typing-stopped", gc->account, name); |
| 2993 | 777 } |
| 1 | 778 |
| 4487 | 779 struct chat_invite_data { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
780 GaimConnection *gc; |
| 5234 | 781 GHashTable *components; |
| 4487 | 782 }; |
|
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
783 |
| 4487 | 784 static void chat_invite_data_free(struct chat_invite_data *cid) |
| 1 | 785 { |
| 5234 | 786 if (cid->components) |
| 787 g_hash_table_destroy(cid->components); | |
| 4487 | 788 g_free(cid); |
| 789 } | |
|
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
790 |
| 8562 | 791 |
| 792 static void chat_invite_reject(struct chat_invite_data *cid) | |
| 793 { | |
| 794 serv_reject_chat(cid->gc, cid->components); | |
| 795 chat_invite_data_free(cid); | |
| 796 } | |
| 797 | |
| 798 | |
| 4487 | 799 static void chat_invite_accept(struct chat_invite_data *cid) |
| 800 { | |
| 5234 | 801 serv_join_chat(cid->gc, cid->components); |
| 4487 | 802 chat_invite_data_free(cid); |
| 1 | 803 } |
| 804 | |
| 805 | |
| 806 | |
| 5630 | 807 void serv_got_chat_invite(GaimConnection *gc, const char *name, |
| 808 const char *who, const char *message, GHashTable *data) | |
| 1 | 809 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
810 GaimAccount *account; |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
811 char buf2[BUF_LONG]; |
| 4487 | 812 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
|
813 int plugin_return; |
| 1 | 814 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
815 account = gaim_connection_get_account(gc); |
| 1 | 816 |
|
11064
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
817 plugin_return = GPOINTER_TO_INT(gaim_signal_emit_return_1( |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
818 gaim_conversations_get_handle(), |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
819 "chat-invited", account, who, name, message, data)); |
| 1 | 820 |
| 4487 | 821 cid->gc = gc; |
| 5234 | 822 cid->components = data; |
| 1 | 823 |
|
11064
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
824 if (plugin_return == 0) |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
825 { |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
826 if (message != NULL) |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
827 { |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
828 g_snprintf(buf2, sizeof(buf2), |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
829 _("%s has invited %s to the chat room %s:\n%s"), |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
830 who, gaim_account_get_username(account), name, message); |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
831 } |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
832 else |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
833 g_snprintf(buf2, sizeof(buf2), |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
834 _("%s has invited %s to the chat room %s\n"), |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
835 who, gaim_account_get_username(account), name); |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
836 |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
837 |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
838 gaim_request_accept_cancel(gc, NULL, _("Accept chat invitation?"), buf2, |
| 9976 | 839 GAIM_DEFAULT_ACTION_NONE, cid, |
|
5498
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5461
diff
changeset
|
840 G_CALLBACK(chat_invite_accept), |
| 8562 | 841 G_CALLBACK(chat_invite_reject)); |
|
11064
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
842 } |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
843 else if (plugin_return > 0) |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
844 chat_invite_accept(cid); |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
845 else |
|
e4459e8ccfb5
[gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents:
11003
diff
changeset
|
846 chat_invite_reject(cid); |
| 1 | 847 } |
| 848 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
849 GaimConversation *serv_got_joined_chat(GaimConnection *gc, |
| 5630 | 850 int id, const char *name) |
| 1 | 851 { |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
852 GaimConversation *conv; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
853 GaimConvChat *chat; |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
854 GaimAccount *account; |
| 1 | 855 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
856 account = gaim_connection_get_account(gc); |
| 1 | 857 |
| 11338 | 858 conv = gaim_conversation_new(GAIM_CONV_TYPE_CHAT, account, name); |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
859 chat = GAIM_CONV_CHAT(conv); |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
860 |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
861 if (!g_slist_find(gc->buddy_chats, conv)) |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
862 gc->buddy_chats = g_slist_append(gc->buddy_chats, conv); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
863 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
864 gaim_conv_chat_set_id(chat, id); |
|
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4440
diff
changeset
|
865 |
|
1785
f4ae086c746b
[gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1775
diff
changeset
|
866 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
867 gaim_signal_emit(gaim_conversations_get_handle(), "chat-joined", conv); |
| 3710 | 868 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
869 return conv; |
| 1 | 870 } |
| 871 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
872 void serv_got_chat_left(GaimConnection *g, int id) |
| 1 | 873 { |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
874 GSList *bcs; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
875 GaimConversation *conv = NULL; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
876 GaimConvChat *chat = NULL; |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
877 GaimAccount *account; |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
878 |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
879 account = gaim_connection_get_account(g); |
| 1 | 880 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
881 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
882 conv = (GaimConversation *)bcs->data; |
| 1 | 883 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
884 chat = GAIM_CONV_CHAT(conv); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
885 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
886 if (gaim_conv_chat_get_id(chat) == id) |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
887 break; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
888 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
889 conv = NULL; |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
890 } |
| 1 | 891 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
892 if (!conv) |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
893 return; |
| 1 | 894 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
895 gaim_signal_emit(gaim_conversations_get_handle(), "chat-left", conv); |
|
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
896 |
|
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
897 gaim_debug(GAIM_DEBUG_INFO, "server", "Leaving room: %s\n", |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
898 gaim_conversation_get_name(conv)); |
| 1 | 899 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
900 g->buddy_chats = g_slist_remove(g->buddy_chats, conv); |
| 1 | 901 |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
902 gaim_conv_chat_left(GAIM_CONV_CHAT(conv)); |
| 1 | 903 } |
| 904 | |
| 6059 | 905 void serv_got_chat_in(GaimConnection *g, int id, const char *who, |
| 9584 | 906 GaimConvChatFlags chatflags, const char *message, time_t mtime) |
| 1 | 907 { |
| 9584 | 908 GaimMessageFlags msgflags = 0; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
909 GSList *bcs; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
910 GaimConversation *conv = NULL; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
911 GaimConvChat *chat = NULL; |
|
2296
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
912 char *buf; |
| 3163 | 913 char *buffy, *angel; |
| 914 int plugin_return; | |
| 1 | 915 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
916 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
917 conv = (GaimConversation *)bcs->data; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
918 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
919 chat = GAIM_CONV_CHAT(conv); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
920 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
921 if (gaim_conv_chat_get_id(chat) == id) |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
922 break; |
| 1 | 923 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
924 conv = NULL; |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
925 } |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
926 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
927 if (!conv) |
|
1100
f168625b63fe
[gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1089
diff
changeset
|
928 return; |
|
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
929 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
930 /* |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
931 * 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
|
932 * 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
|
933 * 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
|
934 * 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
|
935 * don't want you to be dealing with it. |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
936 */ |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
937 |
| 3163 | 938 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG)); |
| 939 strcpy(buffy, message); | |
| 940 angel = g_strdup(who); | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
941 |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
942 plugin_return = GPOINTER_TO_INT( |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
943 gaim_signal_emit_return_1(gaim_conversations_get_handle(), |
| 8999 | 944 "receiving-chat-msg", g->account, |
| 10104 | 945 &angel, &buffy, conv, &chatflags)); |
| 3163 | 946 |
| 947 if (!buffy || !angel || plugin_return) { | |
| 948 if (buffy) | |
| 949 g_free(buffy); | |
| 950 if (angel) | |
| 951 g_free(angel); | |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
952 return; |
| 3163 | 953 } |
| 954 who = angel; | |
| 955 message = buffy; | |
| 1 | 956 |
| 8999 | 957 gaim_signal_emit(gaim_conversations_get_handle(), "received-chat-msg", g->account, |
| 10104 | 958 who, message, conv, chatflags); |
| 8999 | 959 |
| 8882 | 960 /* Make sure URLs are clickable */ |
| 961 buf = gaim_markup_linkify(message); | |
|
1643
d7e380618fd5
[gaim-migrate @ 1653]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1587
diff
changeset
|
962 |
| 9584 | 963 if (chatflags & GAIM_CONV_CHAT_WHISPER) |
| 964 msgflags |= GAIM_MESSAGE_WHISPER; | |
| 965 if (chatflags & GAIM_CONV_CHAT_DELAYED) | |
| 966 msgflags |= GAIM_MESSAGE_DELAYED; | |
| 10104 | 967 if (chatflags & GAIM_CONV_CHAT_ALERT) |
| 968 msgflags |= GAIM_MESSAGE_NICK; | |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
969 |
| 9584 | 970 gaim_conv_chat_write(chat, who, buf, msgflags, mtime); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
971 |
| 6350 | 972 g_free(angel); |
|
2296
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
973 g_free(buf); |
| 6062 | 974 g_free(buffy); |
| 1 | 975 } |
| 9466 | 976 |
| 977 void serv_send_file(GaimConnection *gc, const char *who, const char *file) | |
| 978 { | |
| 979 GaimPluginProtocolInfo *prpl_info = NULL; | |
| 10751 | 980 |
| 9466 | 981 if (gc != NULL && gc->prpl != NULL) |
| 982 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 983 | |
| 9647 | 984 if (prpl_info && prpl_info->send_file) { |
| 985 if (!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, who)) { | |
| 986 prpl_info->send_file(gc, who, file); | |
| 987 } | |
| 988 } | |
| 9466 | 989 } |
| 12024 | 990 |
| 991 void serv_voice_chat(GaimConnection *gc, const char *who) | |
| 992 { | |
| 993 GaimPluginProtocolInfo *prpl_info = NULL; | |
| 994 | |
| 995 if (gc != NULL && gc->prpl != NULL) | |
| 996 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 997 | |
| 998 if (prpl_info && prpl_info->media_prpl_ops && prpl_info->media_prpl_ops->call) | |
| 999 prpl_info->media_prpl_ops->call(gc, who); | |
| 1000 } |
