Mercurial > pidgin.yaz
annotate src/server.c @ 9933:cee849d17167
[gaim-migrate @ 10825]
Another patch from Dave West. This makes the file transfer message
show up when someone sends you an AIM file transfer. It also attempts
to decode the message to UTF-8. The chat invitation messages also
benefit from this attempted conversion.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 02 Sep 2004 03:46:53 +0000 |
parents | fb08a0973b3e |
children | e4a27c9aec4c |
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" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
24 #include "conversation.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
25 #include "debug.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
26 #include "log.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
27 #include "notify.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
28 #include "prefs.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
29 #include "prpl.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
30 #include "request.h" |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
31 #include "signals.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
32 #include "server.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
33 #include "sound.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
34 #include "util.h" |
1 | 35 |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
36 /* XXX UI Stuff */ |
9730 | 37 #include "away.h" |
38 #include "gtkdialogs.h" | |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
39 #include "gaim.h" |
2768
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
40 #include "gtkimhtml.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
41 #include "gtkutils.h" |
4687 | 42 |
8948 | 43 #define SECS_BEFORE_RESENDING_AUTORESPONSE 600 |
9285 | 44 #define SEX_BEFORE_RESENDING_AUTORESPONSE "Only after you're married" |
8948 | 45 |
9236
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
46 static void add_idle_buddy(GaimBuddy *buddy); |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
47 static void remove_idle_buddy(GaimBuddy *buddy); |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
48 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
49 void serv_login(GaimAccount *account) |
1 | 50 { |
7956 | 51 GaimPlugin *p = gaim_find_prpl(gaim_account_get_protocol_id(account)); |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
52 GaimPluginProtocolInfo *prpl_info = NULL; |
4040 | 53 |
5581
3a9b54f260e3
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5573
diff
changeset
|
54 if (account->gc == NULL || p == NULL) |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
55 return; |
2531 | 56 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
57 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(p); |
3572 | 58 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
59 if (prpl_info->login) { |
5728
4115f24e6e24
[gaim-migrate @ 6152]
Christian Hammond <chipx86@chipx86.com>
parents:
5706
diff
changeset
|
60 if (gaim_account_get_password(account) == NULL && |
4115f24e6e24
[gaim-migrate @ 6152]
Christian Hammond <chipx86@chipx86.com>
parents:
5706
diff
changeset
|
61 !(prpl_info->options & OPT_PROTO_NO_PASSWORD) && |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
62 !(prpl_info->options & OPT_PROTO_PASSWORD_OPTIONAL)) { |
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5411
diff
changeset
|
63 gaim_notify_error(NULL, NULL, |
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5411
diff
changeset
|
64 _("Please enter your password"), NULL); |
2531 | 65 return; |
66 } | |
67 | |
9899 | 68 gaim_debug_info("server", PACKAGE " " VERSION |
69 " logging in %s using %s\n", | |
70 gaim_account_get_username(account), | |
71 gaim_account_get_protocol_name(account)); | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
72 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
73 gaim_signal_emit(gaim_accounts_get_handle(), |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
74 "account-connecting", account); |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
75 prpl_info->login(account); |
423
0d4e80bdb96b
[gaim-migrate @ 433]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
414
diff
changeset
|
76 } |
1 | 77 } |
78 | |
2382
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
79 static gboolean send_keepalive(gpointer d) |
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
80 { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
81 GaimConnection *gc = d; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
82 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
83 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
84 if (gc != NULL && gc->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
85 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
86 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
87 if (prpl_info && prpl_info->keepalive) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
88 prpl_info->keepalive(gc); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
89 |
2382
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
90 return TRUE; |
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
91 } |
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
92 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
93 static void update_keepalive(GaimConnection *gc, gboolean on) |
2382
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
94 { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
95 if (on && !gc->keep_alive) { |
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
96 gaim_debug(GAIM_DEBUG_INFO, "server", "allowing NOP\n"); |
8273
f24172f53650
[gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents:
8260
diff
changeset
|
97 gc->keep_alive = gaim_timeout_add(60000, send_keepalive, gc); |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
98 } else if (!on && gc->keep_alive > 0) { |
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
99 gaim_debug(GAIM_DEBUG_INFO, "server", "removing NOP\n"); |
8287
ef881489396e
[gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents:
8273
diff
changeset
|
100 gaim_timeout_remove(gc->keep_alive); |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
101 gc->keep_alive = 0; |
2382
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
102 } |
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
103 } |
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
104 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
105 void serv_close(GaimConnection *gc) |
1 | 106 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
107 GaimPlugin *prpl; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
108 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
109 |
2017
eee309c0de93
[gaim-migrate @ 2027]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2001
diff
changeset
|
110 while (gc->buddy_chats) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
111 GaimConversation *b = gc->buddy_chats->data; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
112 |
1063
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1057
diff
changeset
|
113 gc->buddy_chats = g_slist_remove(gc->buddy_chats, b); |
8260
1fa30b3f7e6d
[gaim-migrate @ 8983]
Christian Hammond <chipx86@chipx86.com>
parents:
8256
diff
changeset
|
114 gaim_conv_chat_left(GAIM_CONV_CHAT(b)); |
1063
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1057
diff
changeset
|
115 } |
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1057
diff
changeset
|
116 |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
117 if (gc->idle_timer > 0) |
8287
ef881489396e
[gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents:
8273
diff
changeset
|
118 gaim_timeout_remove(gc->idle_timer); |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
119 gc->idle_timer = 0; |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
120 |
2382
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
121 update_keepalive(gc, FALSE); |
1050
c4baa5509558
[gaim-migrate @ 1060]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1038
diff
changeset
|
122 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
123 if (gc->prpl != NULL) { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
124 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
125 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
126 if (prpl_info->close) |
5912
b3c412884a22
[gaim-migrate @ 6344]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5872
diff
changeset
|
127 (prpl_info->close)(gc); |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
128 } |
4040 | 129 |
3572 | 130 prpl = gc->prpl; |
1 | 131 } |
132 | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
133 void serv_touch_idle(GaimConnection *gc) |
1 | 134 { |
135 /* Are we idle? If so, not anymore */ | |
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
136 if (gc->is_idle > 0) { |
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
137 gc->is_idle = 0; |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
138 serv_set_idle(gc, 0); |
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
139 } |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
140 time(&gc->last_sent_time); |
1834
0695f52c06da
[gaim-migrate @ 1844]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1815
diff
changeset
|
141 if (gc->is_auto_away) |
0695f52c06da
[gaim-migrate @ 1844]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1815
diff
changeset
|
142 check_idle(gc); |
1 | 143 } |
144 | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
145 void serv_finish_login(GaimConnection *gc) |
1 | 146 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
147 GaimPluginProtocolInfo *prpl_info = NULL; |
5706
8e618a7111a5
[gaim-migrate @ 6127]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
148 GaimAccount *account; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
149 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
150 if (gc != NULL && gc->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
151 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
152 |
5706
8e618a7111a5
[gaim-migrate @ 6127]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
153 account = gaim_connection_get_account(gc); |
8e618a7111a5
[gaim-migrate @ 6127]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
154 |
9058 | 155 if (gaim_account_get_user_info(account) != NULL) |
5954 | 156 serv_set_info(gc, gaim_account_get_user_info(account)); |
1 | 157 |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
158 if (gc->idle_timer > 0) |
8287
ef881489396e
[gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents:
8273
diff
changeset
|
159 gaim_timeout_remove(gc->idle_timer); |
1 | 160 |
8273
f24172f53650
[gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents:
8260
diff
changeset
|
161 gc->idle_timer = gaim_timeout_add(20000, check_idle, gc); |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
162 serv_touch_idle(gc); |
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
163 |
1772
896432d66303
[gaim-migrate @ 1782]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1771
diff
changeset
|
164 update_keepalive(gc, TRUE); |
1 | 165 } |
166 | |
2993 | 167 /* This should return the elapsed time in seconds in which Gaim will not send |
168 * typing notifications. | |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
169 * if it returns zero, it will not send any more typing notifications |
3001 | 170 * typing is a flag - TRUE for typing, FALSE for stopped typing */ |
6059 | 171 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
|
172 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
173 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
174 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
175 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
176 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
177 if (g && prpl_info && prpl_info->send_typing) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
178 return prpl_info->send_typing(g, name, typing); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
179 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
180 return 0; |
2993 | 181 } |
1 | 182 |
6479 | 183 GSList *last_auto_responses = NULL; |
184 struct last_auto_response { | |
185 GaimConnection *gc; | |
3815 | 186 char name[80]; |
6479 | 187 time_t sent; |
3815 | 188 }; |
189 | |
6479 | 190 gboolean expire_last_auto_responses(gpointer data) |
191 { | |
192 GSList *tmp, *cur; | |
193 struct last_auto_response *lar; | |
194 | |
195 tmp = last_auto_responses; | |
196 | |
197 while (tmp) { | |
198 cur = tmp; | |
199 tmp = tmp->next; | |
200 lar = (struct last_auto_response *)cur->data; | |
201 | |
8948 | 202 if ((time(NULL) - lar->sent) > SECS_BEFORE_RESENDING_AUTORESPONSE) { |
6479 | 203 last_auto_responses = g_slist_remove(last_auto_responses, lar); |
204 g_free(lar); | |
205 } | |
206 } | |
207 | |
208 return FALSE; /* do not run again */ | |
209 } | |
210 | |
211 struct last_auto_response *get_last_auto_response(GaimConnection *gc, const char *name) | |
212 { | |
213 GSList *tmp; | |
214 struct last_auto_response *lar; | |
215 | |
216 /* because we're modifying or creating a lar, schedule the | |
217 * function to expire them as the pref dictates */ | |
8948 | 218 gaim_timeout_add((SECS_BEFORE_RESENDING_AUTORESPONSE + 1) * 1000, expire_last_auto_responses, NULL); |
6479 | 219 |
220 tmp = last_auto_responses; | |
221 | |
222 while (tmp) { | |
223 lar = (struct last_auto_response *)tmp->data; | |
224 | |
225 if (gc == lar->gc && !strncmp(name, lar->name, sizeof(lar->name))) | |
226 return lar; | |
227 | |
228 tmp = tmp->next; | |
229 } | |
230 | |
231 lar = (struct last_auto_response *)g_new0(struct last_auto_response, 1); | |
232 g_snprintf(lar->name, sizeof(lar->name), "%s", name); | |
233 lar->gc = gc; | |
234 lar->sent = 0; | |
235 last_auto_responses = g_slist_append(last_auto_responses, lar); | |
236 | |
237 return lar; | |
238 } | |
239 | |
240 void flush_last_auto_responses(GaimConnection *gc) | |
241 { | |
242 GSList *tmp, *cur; | |
243 struct last_auto_response *lar; | |
244 | |
245 tmp = last_auto_responses; | |
246 | |
247 while (tmp) { | |
248 cur = tmp; | |
249 tmp = tmp->next; | |
250 lar = (struct last_auto_response *)cur->data; | |
251 | |
252 if (lar->gc == gc) { | |
253 last_auto_responses = g_slist_remove(last_auto_responses, lar); | |
254 g_free(lar); | |
255 } | |
256 } | |
257 } | |
3815 | 258 |
6059 | 259 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
|
260 GaimConvImFlags imflags) |
1 | 261 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
262 GaimConversation *c; |
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
263 int val = -EINVAL; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
264 GaimPluginProtocolInfo *prpl_info = NULL; |
9594 | 265 const gchar *auto_reply_pref; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
266 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
267 if (gc != NULL && gc->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
268 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
269 |
6640
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6624
diff
changeset
|
270 c = gaim_find_conversation_with_account(name, gc->account); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
271 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
272 if (prpl_info && prpl_info->send_im) |
6982 | 273 val = prpl_info->send_im(gc, name, message, imflags); |
94
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
79
diff
changeset
|
274 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
275 if (!(imflags & GAIM_CONV_IM_AUTO_RESP)) |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
276 serv_touch_idle(gc); |
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
277 |
9594 | 278 /* |
279 * XXX - If "only auto-reply when away & idle" is set, then shouldn't | |
280 * this only reset lar->sent if we're away AND idle? | |
281 */ | |
282 auto_reply_pref = gaim_prefs_get_string("/core/away/auto_reply"); | |
8948 | 283 if (gc->away && (gc->flags & GAIM_CONNECTION_AUTO_RESP) && |
9594 | 284 strcmp(auto_reply_pref, "never")) { |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
285 |
6479 | 286 struct last_auto_response *lar; |
287 lar = get_last_auto_response(gc, name); | |
288 lar->sent = time(NULL); | |
3815 | 289 } |
290 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
291 if (c && gaim_conv_im_get_type_again_timeout(GAIM_CONV_IM(c))) |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
292 gaim_conv_im_stop_type_again_timeout(GAIM_CONV_IM(c)); |
3601 | 293 |
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
294 return val; |
1 | 295 } |
296 | |
9285 | 297 void serv_get_info(GaimConnection *gc, const char *name) |
1 | 298 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
299 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
300 |
9285 | 301 if (gc != NULL && gc->prpl != NULL) |
302 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
303 |
9285 | 304 if (gc && prpl_info && prpl_info->get_info) |
305 prpl_info->get_info(gc, name); | |
249
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
248
diff
changeset
|
306 } |
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
248
diff
changeset
|
307 |
6059 | 308 void serv_set_away(GaimConnection *gc, const char *state, const char *message) |
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1376
diff
changeset
|
309 { |
5308 | 310 GaimPluginProtocolInfo *prpl_info = NULL; |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
311 GaimAccount *account; |
5308 | 312 |
5328
e938119382cf
[gaim-migrate @ 5701]
Christian Hammond <chipx86@chipx86.com>
parents:
5325
diff
changeset
|
313 if (gc->away_state == NULL && state == NULL && |
e938119382cf
[gaim-migrate @ 5701]
Christian Hammond <chipx86@chipx86.com>
parents:
5325
diff
changeset
|
314 gc->away == NULL && message == NULL) { |
5311
3f625896f932
[gaim-migrate @ 5683]
Christian Hammond <chipx86@chipx86.com>
parents:
5308
diff
changeset
|
315 |
5304 | 316 return; |
5311
3f625896f932
[gaim-migrate @ 5683]
Christian Hammond <chipx86@chipx86.com>
parents:
5308
diff
changeset
|
317 } |
5304 | 318 |
5328
e938119382cf
[gaim-migrate @ 5701]
Christian Hammond <chipx86@chipx86.com>
parents:
5325
diff
changeset
|
319 if ((gc->away_state != NULL && state != NULL && |
e938119382cf
[gaim-migrate @ 5701]
Christian Hammond <chipx86@chipx86.com>
parents:
5325
diff
changeset
|
320 !strcmp(gc->away_state, state) && |
e938119382cf
[gaim-migrate @ 5701]
Christian Hammond <chipx86@chipx86.com>
parents:
5325
diff
changeset
|
321 !strcmp(gc->away_state, GAIM_AWAY_CUSTOM)) && |
e938119382cf
[gaim-migrate @ 5701]
Christian Hammond <chipx86@chipx86.com>
parents:
5325
diff
changeset
|
322 (gc->away != NULL && message != NULL && !strcmp(gc->away, message))) { |
e938119382cf
[gaim-migrate @ 5701]
Christian Hammond <chipx86@chipx86.com>
parents:
5325
diff
changeset
|
323 |
5311
3f625896f932
[gaim-migrate @ 5683]
Christian Hammond <chipx86@chipx86.com>
parents:
5308
diff
changeset
|
324 return; |
5328
e938119382cf
[gaim-migrate @ 5701]
Christian Hammond <chipx86@chipx86.com>
parents:
5325
diff
changeset
|
325 } |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
326 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
327 if (gc != NULL && gc->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
328 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
329 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
330 account = gaim_connection_get_account(gc); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
331 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
332 if (prpl_info && prpl_info->set_away) { |
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
333 if (gc->away_state) { |
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
334 g_free(gc->away_state); |
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
335 gc->away_state = NULL; |
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
336 } |
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
337 |
6019 | 338 prpl_info->set_away(gc, state, message); |
2000 | 339 |
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
340 if (gc->away && state) { |
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
341 gc->away_state = g_strdup(state); |
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
342 } |
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
343 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
344 gaim_signal_emit(gaim_accounts_get_handle(), "account-away", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
345 account, state, message); |
1404
96e93119268d
[gaim-migrate @ 1414]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1401
diff
changeset
|
346 } |
1937 | 347 |
7431 | 348 /* LOG system_log(log_away, gc, NULL, OPT_LOG_BUDDY_AWAY | OPT_LOG_MY_SIGNON); */ |
6479 | 349 /* New away message... Clear out the record of sent autoresponses */ |
350 flush_last_auto_responses(gc); | |
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1376
diff
changeset
|
351 } |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1376
diff
changeset
|
352 |
6059 | 353 void serv_set_away_all(const char *message) |
1 | 354 { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
355 GList *c; |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
356 GaimConnection *g; |
976
2586b2a3725e
[gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
973
diff
changeset
|
357 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
358 for (c = gaim_connections_get_all(); c != NULL; c = c->next) { |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
359 g = (GaimConnection *)c->data; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
360 |
1575
427e1409917c
[gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1555
diff
changeset
|
361 serv_set_away(g, GAIM_AWAY_CUSTOM, message); |
423
0d4e80bdb96b
[gaim-migrate @ 433]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
414
diff
changeset
|
362 } |
1 | 363 } |
364 | |
9285 | 365 void serv_set_info(GaimConnection *gc, const char *info) |
1 | 366 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
367 GaimPluginProtocolInfo *prpl_info = NULL; |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
368 GaimAccount *account; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
369 |
9285 | 370 if (gc != NULL && gc->prpl != NULL) |
371 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
372 |
9285 | 373 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
|
374 prpl_info->set_info) { |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
375 |
9285 | 376 account = gaim_connection_get_account(gc); |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
377 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
378 if (gaim_signal_emit_return_1(gaim_accounts_get_handle(), |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
379 "account-setting-info", account, info)) |
3456 | 380 return; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
381 |
9285 | 382 prpl_info->set_info(gc, info); |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
383 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
384 gaim_signal_emit(gaim_accounts_get_handle(), |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
385 "account-set-info", account, info); |
1749
5bfc58c20e82
[gaim-migrate @ 1759]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1734
diff
changeset
|
386 } |
237
6ced2f1c8b24
[gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
200
diff
changeset
|
387 } |
6ced2f1c8b24
[gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
200
diff
changeset
|
388 |
9285 | 389 void serv_change_passwd(GaimConnection *gc, const char *orig, const char *new) |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
390 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
391 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
392 |
9285 | 393 if (gc != NULL && gc->prpl != NULL) |
394 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
395 |
9285 | 396 if (prpl_info && g_list_find(gaim_connections_get_all(), gc) && prpl_info->change_passwd) |
397 prpl_info->change_passwd(gc, orig, new); | |
1 | 398 } |
399 | |
9285 | 400 void serv_add_buddy(GaimConnection *gc, GaimBuddy *buddy) |
1 | 401 { |
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 |
9285 | 404 if (gc != NULL && 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 |
9285 | 407 if (prpl_info && g_list_find(gaim_connections_get_all(), gc) && prpl_info->add_buddy) |
408 prpl_info->add_buddy(gc, buddy, gaim_find_buddys_group(buddy)); | |
1 | 409 } |
410 | |
8870 | 411 void serv_add_buddies(GaimConnection *gc, GList *buddies) |
1 | 412 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
413 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
414 |
8870 | 415 if (gc != NULL && gc->prpl != NULL) |
416 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
417 |
8870 | 418 if (prpl_info && g_list_find(gaim_connections_get_all(), gc)) { |
9285 | 419 GList *cur, *groups = NULL; |
420 | |
421 /* Make a list of what the groups each buddy is in */ | |
422 for (cur = buddies; cur != NULL; cur = cur->next) { | |
423 GaimBlistNode *node = cur->data; | |
9381 | 424 groups = g_list_append(groups, node->parent->parent); |
9285 | 425 } |
426 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
427 if (prpl_info->add_buddies) |
9285 | 428 prpl_info->add_buddies(gc, buddies, groups); |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
429 else if (prpl_info->add_buddy) { |
9285 | 430 GList *curb = buddies; |
431 GList *curg = groups; | |
432 while ((curb != NULL) && (curg != NULL)) { | |
433 prpl_info->add_buddy(gc, curb->data, curg->data); | |
434 curb = curb->next; | |
435 curg = curg->next; | |
436 } | |
437 } | |
438 | |
439 g_list_free(groups); | |
440 } | |
441 } | |
442 | |
443 | |
444 void serv_remove_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) | |
445 { | |
446 GaimPluginProtocolInfo *prpl_info = NULL; | |
447 | |
448 if (buddy->idle > 0) | |
449 remove_idle_buddy(buddy); | |
450 | |
451 if (gc != NULL && gc->prpl != NULL) | |
452 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
453 | |
454 if (prpl_info && g_list_find(gaim_connections_get_all(), gc) && prpl_info->remove_buddy) | |
455 prpl_info->remove_buddy(gc, buddy, group); | |
456 } | |
457 | |
458 void serv_remove_buddies(GaimConnection *gc, GList *buddies, GList *groups) | |
459 { | |
460 GaimPluginProtocolInfo *prpl_info = NULL; | |
461 | |
462 if (!g_list_find(gaim_connections_get_all(), gc)) | |
463 return; | |
464 | |
465 if (gc != NULL && gc->prpl != NULL) | |
466 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
467 | |
468 if (prpl_info && g_list_find(gaim_connections_get_all(), gc)) { | |
469 if (prpl_info->remove_buddies) { | |
470 GList *curb; | |
471 for (curb = buddies; curb != NULL; curb = curb->next) { | |
472 GaimBuddy *buddy = curb->data; | |
473 if (buddy->idle > 0) | |
474 remove_idle_buddy(buddy); | |
475 } | |
476 prpl_info->remove_buddies(gc, buddies, groups); | |
477 } else { | |
478 GList *curb = buddies; | |
479 GList *curg = groups; | |
480 while ((curb != NULL) && (curg != NULL)) { | |
481 serv_remove_buddy(gc, curb->data, curg->data); | |
482 curb = curb->next; | |
483 curg = curg->next; | |
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1303
diff
changeset
|
484 } |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
485 } |
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1303
diff
changeset
|
486 } |
1 | 487 } |
488 | |
9285 | 489 void serv_remove_group(GaimConnection *gc, GaimGroup *group) |
6885
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
490 { |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
491 GaimPluginProtocolInfo *prpl_info = NULL; |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
492 |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
493 if (gc != NULL && gc->prpl != NULL) |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
494 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
495 |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
496 if (prpl_info && g_list_find(gaim_connections_get_all(), gc) && |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
497 prpl_info->remove_group) |
66dd420d3d23
[gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents:
6837
diff
changeset
|
498 { |
9285 | 499 prpl_info->remove_group(gc, group); |
2334
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
500 } |
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
501 } |
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
502 |
3136 | 503 /* |
504 * Set buddy's alias on server roster/list | |
505 */ | |
6695 | 506 void serv_alias_buddy(GaimBuddy *b) |
3136 | 507 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
508 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
509 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
510 if (b != NULL && b->account->gc->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
511 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(b->account->gc->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
512 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
513 if (b && prpl_info && prpl_info->alias_buddy) { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
514 prpl_info->alias_buddy(b->account->gc, b->name, b->alias); |
3136 | 515 } |
516 } | |
517 | |
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
518 void |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
519 serv_got_alias(GaimConnection *gc, const char *who, const char *alias) |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
520 { |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
521 GaimAccount *account = gaim_connection_get_account(gc); |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
522 GSList *buds, *buddies = gaim_find_buddies(account, who); |
8870 | 523 GaimBuddy *b; |
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
524 GaimConversation *conv; |
6058 | 525 |
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
526 for (buds = buddies; buds; buds = buds->next) |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
527 { |
8870 | 528 b = buds->data; |
529 gaim_blist_server_alias_buddy(b, alias); | |
9135
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
530 |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
531 conv = gaim_find_conversation_with_account(b->name, account); |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
532 |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
533 if (conv != NULL && b->server_alias != NULL && |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
534 strcmp(b->server_alias, alias)) |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
535 { |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
536 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
|
537 who, alias); |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
538 |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
539 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
540 time(NULL)); |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
541 |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
542 g_free(tmp); |
6038664a67fe
[gaim-migrate @ 9919]
Christian Hammond <chipx86@chipx86.com>
parents:
9109
diff
changeset
|
543 } |
8870 | 544 } |
8894 | 545 g_slist_free(buddies); |
4227 | 546 } |
547 | |
3136 | 548 /* |
549 * Move a buddy from one group to another on server. | |
550 * | |
551 * Note: For now we'll not deal with changing gc's at the same time, but | |
9285 | 552 * it should be possible. Probably needs to be done, someday. Although, |
553 * the UI for that would be difficult, because groups are Gaim-wide. | |
3136 | 554 */ |
6695 | 555 void serv_move_buddy(GaimBuddy *b, GaimGroup *og, GaimGroup *ng) |
3136 | 556 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
557 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
558 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
559 if (b->account->gc != NULL && b->account->gc->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
560 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(b->account->gc->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
561 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
562 if (b && b->account->gc && og && ng) { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
563 if (prpl_info && prpl_info->group_buddy) { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
564 prpl_info->group_buddy(b->account->gc, b->name, og->name, ng->name); |
3136 | 565 } |
566 } | |
567 } | |
568 | |
3348 | 569 /* |
570 * Rename a group on server roster/list. | |
571 */ | |
9285 | 572 void serv_rename_group(GaimConnection *gc, const char *old_name, |
573 GaimGroup *group, GList *moved_buddies) | |
3348 | 574 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
575 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
576 |
9285 | 577 if (gc != NULL && gc->prpl != NULL) |
578 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
3348 | 579 |
9285 | 580 if (prpl_info && old_name && group && strcmp(old_name, group->name)) { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
581 if (prpl_info->rename_group) { |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
582 /* prpl's might need to check if the group already |
3348 | 583 * exists or not, and handle that differently */ |
9285 | 584 prpl_info->rename_group(gc, old_name, group, moved_buddies); |
3348 | 585 } else { |
9285 | 586 GList *cur, *groups = NULL; |
587 | |
588 /* Make a list of what the groups each buddy is in */ | |
589 for (cur = moved_buddies; cur != NULL; cur = cur->next) { | |
590 GaimBlistNode *node = cur->data; | |
9381 | 591 groups = g_list_append(groups, node->parent->parent); |
9285 | 592 } |
593 | |
594 serv_remove_buddies(gc, moved_buddies, groups); | |
595 g_list_free(groups); | |
596 serv_add_buddies(gc, moved_buddies); | |
3348 | 597 } |
598 } | |
599 } | |
600 | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
601 void serv_add_permit(GaimConnection *g, const char *name) |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
602 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
603 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
604 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
605 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
606 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
607 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
608 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
|
609 prpl_info->add_permit(g, name); |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
610 } |
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
611 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
612 void serv_add_deny(GaimConnection *g, const char *name) |
1 | 613 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
614 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
615 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
616 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
617 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
618 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
619 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
|
620 prpl_info->add_deny(g, name); |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
621 } |
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
622 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
623 void serv_rem_permit(GaimConnection *g, const char *name) |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
624 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
625 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
626 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
627 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
628 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
629 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
630 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
|
631 prpl_info->rem_permit(g, name); |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
632 } |
1 | 633 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
634 void serv_rem_deny(GaimConnection *g, const char *name) |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
635 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
636 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
637 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
638 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
639 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
640 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
641 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
|
642 prpl_info->rem_deny(g, name); |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
643 } |
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
660
diff
changeset
|
644 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
645 void serv_set_permit_deny(GaimConnection *g) |
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
646 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
647 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
648 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
649 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
650 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
651 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
652 /* |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
653 * 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
|
654 * 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
|
655 * 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
|
656 * resending the permit/deny info when you get this. |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
657 */ |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
658 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
|
659 prpl_info->set_permit_deny(g); |
1 | 660 } |
661 | |
1026 | 662 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
663 void serv_set_idle(GaimConnection *g, int time) |
1 | 664 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
665 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
666 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
667 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
668 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
669 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
670 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->set_idle) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
671 prpl_info->set_idle(g, time); |
1 | 672 } |
673 | |
9753 | 674 void serv_warn(GaimConnection *g, const char *name, gboolean anonymous) |
1 | 675 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
676 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
677 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
678 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
679 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
680 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
681 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->warn) |
9753 | 682 prpl_info->warn(g, name, anonymous); |
1 | 683 } |
684 | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
685 void serv_join_chat(GaimConnection *g, GHashTable *data) |
1 | 686 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
687 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
688 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
689 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
690 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
691 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
692 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
|
693 prpl_info->join_chat(g, data); |
1 | 694 } |
695 | |
8562 | 696 |
697 void serv_reject_chat(GaimConnection *g, GHashTable *data) | |
698 { | |
699 GaimPluginProtocolInfo *prpl_info = NULL; | |
700 | |
701 if (g != NULL && g->prpl != NULL) | |
702 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); | |
703 | |
704 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->reject_chat) | |
705 prpl_info->reject_chat(g, data); | |
706 } | |
707 | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
708 void serv_chat_invite(GaimConnection *g, int id, const char *message, const char *name) |
1 | 709 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
710 GaimPluginProtocolInfo *prpl_info = NULL; |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
711 GaimConversation *conv; |
2359
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
712 char *buffy = message && *message ? g_strdup(message) : NULL; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
713 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
714 conv = gaim_find_chat(g, id); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
715 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
716 if (conv == NULL) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
717 return; |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
718 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
719 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
720 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
721 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
722 gaim_signal_emit(gaim_conversations_get_handle(), "chat-inviting-user", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
723 conv, name, &buffy); |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
724 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
725 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
|
726 prpl_info->chat_invite(g, id, buffy, name); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
727 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
728 gaim_signal_emit(gaim_conversations_get_handle(), "chat-invited-user", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
729 conv, name, buffy); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
730 |
2359
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
731 if (buffy) |
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
732 g_free(buffy); |
1 | 733 } |
734 | |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
735 /* Ya know, nothing uses this except gaim_conversation_destroy(), |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
736 * I think I'll just merge it into that later... |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
737 * 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
|
738 * to leave a chat without destroying the conversation. |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
739 */ |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
740 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
741 void serv_chat_leave(GaimConnection *g, int id) |
1 | 742 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
743 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
744 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
745 if (!g_list_find(gaim_connections_get_all(), g)) |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
746 return; |
1015
c3579d03a0c1
[gaim-migrate @ 1025]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1013
diff
changeset
|
747 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
748 if (g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
749 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
750 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
751 if (prpl_info && prpl_info->chat_leave) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
752 prpl_info->chat_leave(g, id); |
1 | 753 } |
754 | |
6059 | 755 void serv_chat_whisper(GaimConnection *g, int id, const char *who, const char *message) |
1 | 756 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
757 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
758 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
759 if (g != NULL && g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
760 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
761 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
762 if (prpl_info && prpl_info->chat_whisper) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
763 prpl_info->chat_whisper(g, id, who, message); |
1 | 764 } |
765 | |
6059 | 766 int serv_chat_send(GaimConnection *g, int id, const char *message) |
1 | 767 { |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2131
diff
changeset
|
768 int val = -EINVAL; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
769 GaimPluginProtocolInfo *prpl_info = NULL; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
770 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
771 if (g->prpl != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
772 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
773 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
774 if (prpl_info && prpl_info->chat_send) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
775 val = prpl_info->chat_send(g, id, message); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
776 |
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
777 serv_touch_idle(g); |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5170
diff
changeset
|
778 |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2131
diff
changeset
|
779 return val; |
1 | 780 } |
781 | |
5842 | 782 void serv_set_buddyicon(GaimConnection *gc, const char *filename) |
783 { | |
784 GaimPluginProtocolInfo *prpl_info = NULL; | |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
785 |
5842 | 786 if (gc->prpl != NULL) |
787 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
788 | |
789 if (prpl_info && prpl_info->set_buddy_icon) | |
790 prpl_info->set_buddy_icon(gc, filename); | |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
791 |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
792 } |
5842 | 793 |
1773 | 794 int find_queue_row_by_name(char *name) |
795 { | |
4412 | 796 gchar *temp; |
797 gint i = 0; | |
798 gboolean valid; | |
799 GtkTreeIter iter; | |
1773 | 800 |
4412 | 801 valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(awayqueuestore), &iter); |
802 while(valid) { | |
803 gtk_tree_model_get(GTK_TREE_MODEL(awayqueuestore), &iter, 0, &temp, -1); | |
804 if(!strcmp(name, temp)) | |
1773 | 805 return i; |
4412 | 806 g_free(temp); |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
807 |
4412 | 808 i++; |
809 valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(awayqueuestore), &iter); | |
1773 | 810 } |
811 | |
812 return -1; | |
813 } | |
814 | |
815 int find_queue_total_by_name(char *name) | |
816 { | |
817 GSList *templist; | |
818 int i = 0; | |
819 | |
820 templist = message_queue; | |
821 | |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
822 while (templist) { |
1773 | 823 struct queued_message *qm = (struct queued_message *)templist->data; |
6621 | 824 if ((qm->flags & GAIM_MESSAGE_RECV) && !strcmp(name, qm->name)) |
1773 | 825 i++; |
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
826 |
1773 | 827 templist = templist->next; |
828 } | |
829 | |
830 return i; | |
831 } | |
832 | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
833 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
834 * 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
|
835 * sure to follow along, kids |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
836 */ |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
837 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
|
838 GaimConvImFlags imflags, time_t mtime) |
1 | 839 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
840 GaimConversation *cnv; |
6982 | 841 GaimMessageFlags msgflags; |
5136 | 842 char *message, *name; |
6622 | 843 char *angel, *buffy; |
844 int plugin_return; | |
2273
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
845 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
846 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
847 * We should update the conversation window buttons and menu, |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
848 * if it exists. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
849 */ |
5136 | 850 cnv = gaim_find_conversation_with_account(who, gc->account); |
2106
efb39c151cf7
[gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2104
diff
changeset
|
851 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
852 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
853 * 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
|
854 * been given us by the prpls. So we create temp holders and pass |
6982 | 855 * those instead. It's basically just to avoid segfaults. |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
856 */ |
6982 | 857 buffy = g_malloc(MAX(strlen(msg) + 1, BUF_LONG)); |
858 strcpy(buffy, msg); | |
859 angel = g_strdup(who); | |
1339 | 860 |
6982 | 861 plugin_return = GPOINTER_TO_INT( |
862 gaim_signal_emit_return_1(gaim_conversations_get_handle(), | |
8999 | 863 "receiving-im-msg", gc->account, |
6982 | 864 &angel, &buffy, &imflags)); |
865 | |
866 if (!buffy || !angel || plugin_return) { | |
867 if (buffy) | |
868 g_free(buffy); | |
869 if (angel) | |
870 g_free(angel); | |
871 return; | |
1100
f168625b63fe
[gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1089
diff
changeset
|
872 } |
8619 | 873 |
8999 | 874 name = angel; |
6982 | 875 message = buffy; |
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
876 |
8999 | 877 gaim_signal_emit(gaim_conversations_get_handle(), "received-im-msg", gc->account, |
878 name, message, imflags); | |
879 | |
8882 | 880 /* Make sure URLs are clickable */ |
881 buffy = gaim_markup_linkify(message); | |
882 g_free(message); | |
883 message = buffy; | |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
884 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
885 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
886 * 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
|
887 * 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
|
888 * was an auto-response, we set the appropriate flag. This is just so |
6982 | 889 * 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
|
890 */ |
6982 | 891 msgflags = GAIM_MESSAGE_RECV; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
892 if (imflags & GAIM_CONV_IM_AUTO_RESP) |
6982 | 893 msgflags |= GAIM_MESSAGE_AUTO_RESP; |
1 | 894 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
895 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
896 * 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
|
897 * 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
|
898 * are three or four different ways of handling it and different |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
899 * things we have to do for each. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
900 */ |
1404
96e93119268d
[gaim-migrate @ 1414]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1401
diff
changeset
|
901 if (gc->away) { |
6479 | 902 time_t t = time(NULL); |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
903 char *tmpmsg; |
6695 | 904 GaimBuddy *b = gaim_find_buddy(gc->account, name); |
9620 | 905 const char *alias = b ? gaim_buddy_get_alias(b) : name; |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
906 int row; |
6479 | 907 struct last_auto_response *lar; |
9594 | 908 const gchar *auto_reply_pref; |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
909 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
910 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
911 * 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
|
912 * awayness currently works, this is fucked up. It's possible |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
913 * for an account to be away without the imaway dialog being |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
914 * 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
|
915 * away without the imaway dialog being shown. So in order for |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
916 * 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
|
917 * imaway dialog actually exists, first. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
918 */ |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
919 if (!cnv && awayqueue && |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
920 gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) { |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
921 /* |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
922 * Alright, so we're going to queue it. Neat, eh? :) |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
923 * So first we create something to store the message, and add |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
924 * 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
|
925 * that we've queued something. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
926 */ |
1769
68eddf56f419
[gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1768
diff
changeset
|
927 struct queued_message *qm; |
4412 | 928 GtkTreeIter iter; |
929 gchar path[10]; | |
4167 | 930 |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
931 qm = g_new0(struct queued_message, 1); |
5136 | 932 g_snprintf(qm->name, sizeof(qm->name), "%s", name); |
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
933 if(strcmp(alias, name) != 0) |
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
934 g_snprintf(qm->alias, sizeof(qm->alias), "(%s)", alias); |
6982 | 935 qm->message = g_strdup(message); |
4608 | 936 qm->account = gc->account; |
1769
68eddf56f419
[gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1768
diff
changeset
|
937 qm->tm = mtime; |
6982 | 938 qm->flags = msgflags; |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
939 message_queue = g_slist_append(message_queue, qm); |
1768 | 940 |
1773 | 941 row = find_queue_row_by_name(qm->name); |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
942 if (row >= 0) { |
1773 | 943 char number[32]; |
944 int qtotal; | |
945 | |
946 qtotal = find_queue_total_by_name(qm->name); | |
6308 | 947 g_snprintf(number, 32, ngettext("(%d message)", |
948 "(%d messages)", qtotal), qtotal); | |
4412 | 949 g_snprintf(path, 10, "%d", row); |
950 gtk_tree_model_get_iter_from_string( | |
951 GTK_TREE_MODEL(awayqueuestore), &iter, path); | |
952 gtk_list_store_set(awayqueuestore, &iter, | |
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
953 2, number, -1); |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
954 } else { |
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
955 gtk_tree_model_get_iter_first(GTK_TREE_MODEL(awayqueuestore), |
4412 | 956 &iter); |
957 gtk_list_store_append(awayqueuestore, &iter); | |
958 gtk_list_store_set(awayqueuestore, &iter, | |
959 0, qm->name, | |
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
960 1, qm->alias, |
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
961 2, _("(1 message)"), |
4412 | 962 -1); |
1773 | 963 } |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
964 } else { |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
965 /* |
4985 | 966 * Make sure the conversation |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
967 * exists and is updated (partly handled above already), play |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
968 * the receive sound (sound.c will take care of not playing |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
969 * while away), and then write it to the convo window. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
970 */ |
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4440
diff
changeset
|
971 if (cnv == NULL) |
4491 | 972 cnv = gaim_conversation_new(GAIM_CONV_IM, gc->account, name); |
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
973 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
974 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, message, msgflags, mtime); |
9477 | 975 gaim_conv_window_flash(gaim_conversation_get_window(cnv)); |
1 | 976 } |
977 | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
978 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
979 * 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
|
980 * auto-response. That is, of course, unless the horse.... no wait. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
981 * Don't autorespond if: |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
982 * |
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
983 * - it's not supported on this connection |
9594 | 984 * - or the away message is empty |
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
985 * - or it's disabled |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
986 * - 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
|
987 * is set |
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4074
diff
changeset
|
988 */ |
9594 | 989 auto_reply_pref = gaim_prefs_get_string("/core/away/auto_reply"); |
6622 | 990 if (!(gc->flags & GAIM_CONNECTION_AUTO_RESP) || |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
991 *gc->away == '\0' || |
9594 | 992 !strcmp(auto_reply_pref, "never") || |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
993 (!gc->is_idle && |
9594 | 994 !strcmp(auto_reply_pref, "awayidle"))) { |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
995 |
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
996 g_free(name); |
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
997 g_free(message); |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
998 return; |
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
999 } |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
1000 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1001 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1002 * 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
|
1003 * 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
|
1004 * auto-response, and then you closed the window, and then the |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1005 * 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
|
1006 * 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
|
1007 * got a queue. So the rest of this block is just the auto-response, |
6479 | 1008 * if necessary. |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1009 */ |
6479 | 1010 lar = get_last_auto_response(gc, name); |
8948 | 1011 if ((t - lar->sent) < SECS_BEFORE_RESENDING_AUTORESPONSE) { |
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
1012 g_free(name); |
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
1013 g_free(message); |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
1014 return; |
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
1015 } |
6479 | 1016 lar->sent = t; |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
1017 |
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
1018 /* apply default fonts and colors */ |
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
1019 tmpmsg = stylize(gc->away, MSG_LEN); |
8700 | 1020 |
1021 /* Move this to oscar.c! */ | |
1022 buffy = gaim_str_sub_away_formatters(tmpmsg, alias); | |
1023 serv_send_im(gc, name, buffy, GAIM_CONV_IM_AUTO_RESP); | |
1024 g_free(buffy); | |
1025 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1026 if (!cnv && awayqueue && |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
1027 gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) { |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1028 |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
1029 struct queued_message *qm; |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1030 |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
1031 qm = g_new0(struct queued_message, 1); |
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
1032 g_snprintf(qm->name, sizeof(qm->name), "%s", name); |
7108
6faeeecab0dc
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1033 qm->message = g_strdup(gaim_str_sub_away_formatters(tmpmsg, alias)); |
4608 | 1034 qm->account = gc->account; |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
1035 qm->tm = mtime; |
6621 | 1036 qm->flags = GAIM_MESSAGE_SEND | GAIM_MESSAGE_AUTO_RESP; |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
1037 message_queue = g_slist_append(message_queue, qm); |
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
1038 } else if (cnv != NULL) |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1039 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, gaim_str_sub_away_formatters(tmpmsg, alias), |
6982 | 1040 GAIM_MESSAGE_SEND | GAIM_MESSAGE_AUTO_RESP, mtime); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1041 |
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
1042 g_free(tmpmsg); |
1 | 1043 } else { |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1044 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1045 * 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
|
1046 * 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
|
1047 * earlier), then play a sound indicating we've received it and |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1048 * then display it. Easy. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1049 */ |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1050 |
5554
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
1051 /* XXX UGLY HACK OF THE YEAR |
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
1052 * Robot101 will fix this after his exams. honest. |
6243 | 1053 * I guess he didn't specify WHICH exams, exactly... |
5554
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
1054 */ |
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
1055 if (docklet_count && |
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
1056 gaim_prefs_get_bool("/plugins/gtk/docklet/queue_messages") && |
6640
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6624
diff
changeset
|
1057 !gaim_find_conversation_with_account(name, gc->account)) { |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1058 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1059 * We're gonna queue it up and wait for the user to ask for |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1060 * it... probably by clicking the docklet or windows tray icon. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1061 */ |
3517 | 1062 struct queued_message *qm; |
1063 qm = g_new0(struct queued_message, 1); | |
1064 g_snprintf(qm->name, sizeof(qm->name), "%s", name); | |
1065 qm->message = g_strdup(message); | |
4608 | 1066 qm->account = gc->account; |
3517 | 1067 qm->tm = mtime; |
6982 | 1068 qm->flags = msgflags; |
3517 | 1069 unread_message_queue = g_slist_append(unread_message_queue, qm); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1070 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1071 else { |
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4440
diff
changeset
|
1072 if (cnv == NULL) |
4491 | 1073 cnv = gaim_conversation_new(GAIM_CONV_IM, gc->account, name); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1074 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1075 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, message, msgflags, mtime); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1076 gaim_conv_window_flash(gaim_conversation_get_window(cnv)); |
1 | 1077 } |
1078 } | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1079 |
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
1080 g_free(name); |
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
1081 g_free(message); |
1 | 1082 } |
1083 | |
9236
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1084 /* |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1085 * NOTE: This is a bit hacky, but needed for core support for the |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1086 * buddy-idle-updated signal. It's temporary, and will be replaced |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1087 * with better code in the status rewrite. |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1088 */ |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1089 static GList *idle_buddies = NULL; |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1090 static guint idle_buddy_timeout_id = 0; |
1 | 1091 |
9236
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1092 static gboolean |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1093 idle_timeout_cb(void) |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1094 { |
9237
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1095 GList *l, *l_next; |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1096 |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1097 for (l = idle_buddies; l != NULL; l = l_next) |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1098 { |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1099 GaimBuddy *buddy = (GaimBuddy *)l->data; |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1100 |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1101 l_next = l->next; |
9236
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1102 |
9237
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1103 if (!GAIM_BUDDY_IS_ONLINE(buddy) || buddy->idle <= 0) |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1104 { |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1105 remove_idle_buddy(buddy); |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1106 } |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1107 else |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1108 { |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1109 gaim_signal_emit(gaim_blist_get_handle(), "buddy-idle-updated", |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1110 l->data); |
fac583b4ecdf
[gaim-migrate @ 10035]
Christian Hammond <chipx86@chipx86.com>
parents:
9236
diff
changeset
|
1111 } |
9236
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1112 } |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1113 |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1114 return TRUE; |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1115 } |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1116 |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1117 static void |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1118 add_idle_buddy(GaimBuddy *buddy) |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1119 { |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1120 idle_buddies = g_list_append(idle_buddies, buddy); |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1121 |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1122 if (idle_buddy_timeout_id == 0) |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1123 { |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1124 idle_buddy_timeout_id = gaim_timeout_add(10000, |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1125 (GSourceFunc)idle_timeout_cb, NULL); |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1126 } |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1127 } |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1128 |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1129 static void |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1130 remove_idle_buddy(GaimBuddy *buddy) |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1131 { |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1132 idle_buddies = g_list_remove(idle_buddies, buddy); |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1133 |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1134 if (idle_buddies == NULL) |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1135 { |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1136 gaim_timeout_remove(idle_buddy_timeout_id); |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1137 idle_buddy_timeout_id = 0; |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1138 } |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1139 } |
1 | 1140 |
9295 | 1141 /* |
1142 * @param idle The time at which the buddy became idle, in seconds | |
1143 * since the epoch. | |
1144 */ | |
9927 | 1145 void serv_got_update(GaimConnection *gc, const char *name, gboolean loggedin, |
4732 | 1146 int evil, time_t signon, time_t idle, int type) |
1 | 1147 { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1148 GaimAccount *account; |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6350
diff
changeset
|
1149 GaimConversation *c; |
6695 | 1150 GaimBuddy *b; |
9453 | 1151 char *alias; |
6245 | 1152 GSList *buddies; |
8129
52cdf2740654
[gaim-migrate @ 8834]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
1153 int old_idle; |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1154 time_t current_time = time(NULL); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1155 int signing_on = 0; |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1156 int signing_off = 0; |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1157 |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1158 account = gaim_connection_get_account(gc); |
6579 | 1159 b = gaim_find_buddy(account, name); |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1160 |
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1161 if (!b) { |
6243 | 1162 gaim_debug(GAIM_DEBUG_ERROR, "server", "No such buddy: %s\n", name); |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1163 return; |
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1164 } |
1 | 1165 |
6621 | 1166 c = gaim_find_conversation_with_account(b->name, account); |
6578 | 1167 |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1168 /* This code will 'align' the name from the TOC */ |
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1169 /* server with what's in our record. We want to */ |
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1170 /* store things how THEY want it... */ |
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1171 if (strcmp(name, b->name)) { |
4687 | 1172 gaim_blist_rename_buddy(b, name); |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1173 } |
1 | 1174 |
9620 | 1175 alias = gaim_escape_html(gaim_buddy_get_alias(b)); |
9453 | 1176 |
8129
52cdf2740654
[gaim-migrate @ 8834]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
1177 old_idle = b->idle; |
1000
91b7377e7b45
[gaim-migrate @ 1010]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
990
diff
changeset
|
1178 |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1179 if (loggedin) { |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1180 if (!GAIM_BUDDY_IS_ONLINE(b)) { |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1181 signing_on = TRUE; |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1182 } |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1183 } else if (GAIM_BUDDY_IS_ONLINE(b)) { |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1184 signing_off = TRUE; |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1185 } |
8573 | 1186 |
1187 | |
1188 if (signing_on) { | |
8884 | 1189 if (c != NULL) { |
9453 | 1190 char *tmp = g_strdup_printf(_("%s logged in."), alias); |
8573 | 1191 |
8884 | 1192 gaim_conversation_write(c, NULL, tmp, GAIM_MESSAGE_SYSTEM, |
1193 time(NULL)); | |
1194 g_free(tmp); | |
1195 } | |
1196 else if (awayqueue && find_queue_total_by_name(b->name)) { | |
1197 struct queued_message *qm = g_new0(struct queued_message, 1); | |
1198 g_snprintf(qm->name, sizeof(qm->name), "%s", b->name); | |
9453 | 1199 qm->message = g_strdup_printf(_("%s logged in."), alias); |
8884 | 1200 qm->account = gc->account; |
1201 qm->tm = time(NULL); | |
1202 qm->flags = GAIM_MESSAGE_SYSTEM; | |
1203 message_queue = g_slist_append(message_queue, qm); | |
8573 | 1204 } |
1205 gaim_sound_play_event(GAIM_SOUND_BUDDY_ARRIVE); | |
1206 | |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1207 if(gaim_prefs_get_bool("/core/logging/log_system") && |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1208 gaim_prefs_get_bool("/core/logging/log_signon_signoff")) { |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1209 GaimAccount *account = gaim_connection_get_account(gc); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1210 GaimLog *log = gaim_account_get_log(account); |
9453 | 1211 char *tmp = g_strdup_printf(_("%s signed on"), alias); |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1212 |
9613 | 1213 gaim_log_write(log, GAIM_MESSAGE_SYSTEM, (alias ? alias : name), |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1214 current_time, tmp); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1215 g_free(tmp); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1216 } |
8129
52cdf2740654
[gaim-migrate @ 8834]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
1217 } |
52cdf2740654
[gaim-migrate @ 8834]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
1218 |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1219 if(gaim_prefs_get_bool("/core/logging/log_system") && |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1220 gaim_prefs_get_bool("/core/logging/log_away_state")) { |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1221 GaimAccount *account = gaim_connection_get_account(gc); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1222 GaimLog *log = gaim_account_get_log(account); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1223 char *tmp = NULL; |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1224 |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1225 if((b->uc & UC_UNAVAILABLE) && !(type & UC_UNAVAILABLE)) |
9453 | 1226 tmp = g_strdup_printf(_("%s came back"), alias); |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1227 else if(!(b->uc & UC_UNAVAILABLE) && (type & UC_UNAVAILABLE)) |
9453 | 1228 tmp = g_strdup_printf(_("%s went away"), alias); |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1229 |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1230 if(tmp){ |
9613 | 1231 gaim_log_write(log, GAIM_MESSAGE_SYSTEM, (alias ? alias : name), |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1232 current_time, tmp); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1233 g_free(tmp); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1234 } |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1235 } |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1236 |
8573 | 1237 if (!old_idle && idle) { |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1238 if(gaim_prefs_get_bool("/core/logging/log_system") && |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1239 gaim_prefs_get_bool("/core/logging/log_idle_state")) { |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1240 GaimAccount *account = gaim_connection_get_account(gc); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1241 GaimLog *log = gaim_account_get_log(account); |
9453 | 1242 char *tmp = g_strdup_printf(_("%s became idle"), alias); |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1243 |
9613 | 1244 gaim_log_write(log, GAIM_MESSAGE_SYSTEM, (alias ? alias : name), |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1245 current_time, tmp); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1246 g_free(tmp); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1247 } |
8573 | 1248 } else if (old_idle && !idle) { |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1249 if(gaim_prefs_get_bool("/core/logging/log_system") && |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1250 gaim_prefs_get_bool("/core/logging/log_idle_state")) { |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1251 GaimAccount *account = gaim_connection_get_account(gc); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1252 GaimLog *log = gaim_account_get_log(account); |
9453 | 1253 char *tmp = g_strdup_printf(_("%s became unidle"), alias); |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1254 |
9613 | 1255 gaim_log_write(log, GAIM_MESSAGE_SYSTEM, (alias ? alias : name), |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1256 current_time, tmp); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1257 g_free(tmp); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1258 } |
8573 | 1259 } |
1260 | |
1261 if (signing_off) { | |
8884 | 1262 if (c != NULL) { |
9453 | 1263 char *tmp = g_strdup_printf(_("%s logged out."), alias); |
8884 | 1264 gaim_conversation_write(c, NULL, tmp, |
1265 GAIM_MESSAGE_SYSTEM, time(NULL)); | |
1266 g_free(tmp); | |
1267 } else if (awayqueue && find_queue_total_by_name(b->name)) { | |
1268 struct queued_message *qm = g_new0(struct queued_message, 1); | |
1269 g_snprintf(qm->name, sizeof(qm->name), "%s", b->name); | |
9453 | 1270 qm->message = g_strdup_printf(_("%s logged out."), alias); |
8884 | 1271 qm->account = gc->account; |
1272 qm->tm = time(NULL); | |
1273 qm->flags = GAIM_MESSAGE_SYSTEM; | |
1274 message_queue = g_slist_append(message_queue, qm); | |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1275 } |
8573 | 1276 serv_got_typing_stopped(gc, name); /* obviously not typing */ |
1277 gaim_sound_play_event(GAIM_SOUND_BUDDY_LEAVE); | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5539
diff
changeset
|
1278 |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1279 if(gaim_prefs_get_bool("/core/logging/log_system") && |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1280 gaim_prefs_get_bool("/core/logging/log_signon_signoff")) { |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1281 GaimAccount *account = gaim_connection_get_account(gc); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1282 GaimLog *log = gaim_account_get_log(account); |
9453 | 1283 char *tmp = g_strdup_printf(_("%s signed off"), alias); |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1284 |
9613 | 1285 gaim_log_write(log, GAIM_MESSAGE_SYSTEM, (alias ? alias : name), |
8674
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1286 current_time, tmp); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1287 g_free(tmp); |
8c7da2e36136
[gaim-migrate @ 9426]
Christian Hammond <chipx86@chipx86.com>
parents:
8619
diff
changeset
|
1288 } |
6245 | 1289 } |
1290 | |
8904 | 1291 if (gc->login_time_official && gc->login_time && signon > 0) |
8603
8d5084065107
[gaim-migrate @ 9354]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1292 signon += gc->login_time_official - gc->login_time; |
8d5084065107
[gaim-migrate @ 9354]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1293 gaim_blist_update_buddy_signon(b, signon); |
8d5084065107
[gaim-migrate @ 9354]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1294 gaim_blist_update_buddy_idle(b, idle); |
8d5084065107
[gaim-migrate @ 9354]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1295 gaim_blist_update_buddy_evil(b, evil); |
8d5084065107
[gaim-migrate @ 9354]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1296 gaim_blist_update_buddy_status(b, type); |
8d5084065107
[gaim-migrate @ 9354]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1297 |
9107
f0be63d6d192
[gaim-migrate @ 9884]
Christian Hammond <chipx86@chipx86.com>
parents:
9058
diff
changeset
|
1298 if (!old_idle && idle) |
f0be63d6d192
[gaim-migrate @ 9884]
Christian Hammond <chipx86@chipx86.com>
parents:
9058
diff
changeset
|
1299 { |
f0be63d6d192
[gaim-migrate @ 9884]
Christian Hammond <chipx86@chipx86.com>
parents:
9058
diff
changeset
|
1300 gaim_signal_emit(gaim_blist_get_handle(), "buddy-idle", b); |
9236
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1301 |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1302 add_idle_buddy(b); |
9107
f0be63d6d192
[gaim-migrate @ 9884]
Christian Hammond <chipx86@chipx86.com>
parents:
9058
diff
changeset
|
1303 } |
f0be63d6d192
[gaim-migrate @ 9884]
Christian Hammond <chipx86@chipx86.com>
parents:
9058
diff
changeset
|
1304 else if (old_idle && !idle) |
f0be63d6d192
[gaim-migrate @ 9884]
Christian Hammond <chipx86@chipx86.com>
parents:
9058
diff
changeset
|
1305 { |
f0be63d6d192
[gaim-migrate @ 9884]
Christian Hammond <chipx86@chipx86.com>
parents:
9058
diff
changeset
|
1306 gaim_signal_emit(gaim_blist_get_handle(), "buddy-unidle", b); |
9236
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1307 |
e8d86fd68552
[gaim-migrate @ 10033]
Christian Hammond <chipx86@chipx86.com>
parents:
9235
diff
changeset
|
1308 remove_idle_buddy(b); |
9109
9f21659ecf11
[gaim-migrate @ 9886]
Christian Hammond <chipx86@chipx86.com>
parents:
9107
diff
changeset
|
1309 } |
8573 | 1310 |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6350
diff
changeset
|
1311 if (c != NULL) |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6350
diff
changeset
|
1312 gaim_conversation_update(c, GAIM_CONV_UPDATE_AWAY); |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6350
diff
changeset
|
1313 |
4767 | 1314 gaim_blist_update_buddy_presence(b, loggedin); |
1315 | |
6245 | 1316 for (buddies = gaim_find_buddies(account, name); buddies; buddies = g_slist_remove(buddies, buddies->data)) { |
1317 b = buddies->data; | |
5758 | 1318 gaim_blist_update_buddy_presence(b, loggedin); |
1319 gaim_blist_update_buddy_idle(b, idle); | |
1320 gaim_blist_update_buddy_evil(b, evil); | |
1321 gaim_blist_update_buddy_status(b, type); | |
1322 } | |
9453 | 1323 g_free(alias); |
1 | 1324 } |
1325 | |
1326 | |
5630 | 1327 void serv_got_eviled(GaimConnection *gc, const char *name, int lev) |
1 | 1328 { |
1771
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
1329 char buf2[1024]; |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1330 GaimAccount *account; |
1 | 1331 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1332 account = gaim_connection_get_account(gc); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1333 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1334 gaim_signal_emit(gaim_accounts_get_handle(), "account-warned", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1335 account, name, lev); |
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
1336 |
2646
2555683e8dc8
[gaim-migrate @ 2659]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2607
diff
changeset
|
1337 if (gc->evil >= lev) { |
1771
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
1338 gc->evil = lev; |
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
1339 return; |
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
1340 } |
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
1341 |
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
1342 gc->evil = lev; |
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
1343 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1344 g_snprintf(buf2, sizeof(buf2), |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1345 _("%s has just been warned by %s.\n" |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1346 "Your new warning level is %d%%"), |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1347 gaim_account_get_username(gaim_connection_get_account(gc)), |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1348 ((name == NULL) ? _("an anonymous person") : name), lev); |
1 | 1349 |
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5411
diff
changeset
|
1350 gaim_notify_info(NULL, NULL, buf2, NULL); |
1 | 1351 } |
1352 | |
5630 | 1353 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
|
1354 GaimTypingState state) { |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1355 |
6695 | 1356 GaimBuddy *b; |
6640
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6624
diff
changeset
|
1357 GaimConversation *cnv = gaim_find_conversation_with_account(name, gc->account); |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1358 GaimConvIm *im; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1359 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1360 if (!cnv) |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1361 return; |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1362 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1363 im = GAIM_CONV_IM(cnv); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1364 |
4491 | 1365 gaim_conversation_set_account(cnv, gc->account); |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1366 gaim_conv_im_set_typing_state(im, state); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1367 gaim_conv_im_update_typing(im); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1368 |
5032
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
1369 b = gaim_find_buddy(gc->account, name); |
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
1370 |
6837
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1371 if (b != NULL) |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1372 { |
6456
ccfdf9f2cdd1
[gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents:
6444
diff
changeset
|
1373 if (state == GAIM_TYPING) |
6837
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1374 { |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1375 gaim_signal_emit(gaim_conversations_get_handle(), |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1376 "buddy-typing", cnv); |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1377 } |
6456
ccfdf9f2cdd1
[gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents:
6444
diff
changeset
|
1378 else |
6837
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1379 { |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1380 gaim_signal_emit(gaim_conversations_get_handle(), |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1381 "buddy-typing-stopped", cnv); |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1382 } |
6456
ccfdf9f2cdd1
[gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents:
6444
diff
changeset
|
1383 } |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1384 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1385 if (timeout > 0) |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1386 gaim_conv_im_start_typing_timeout(im, timeout); |
2993 | 1387 } |
1 | 1388 |
5630 | 1389 void serv_got_typing_stopped(GaimConnection *gc, const char *name) { |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1390 |
6640
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6624
diff
changeset
|
1391 GaimConversation *c = gaim_find_conversation_with_account(name, gc->account); |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1392 GaimConvIm *im; |
6695 | 1393 GaimBuddy *b; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1394 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1395 if (!c) |
3787 | 1396 return; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1397 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1398 im = GAIM_CONV_IM(c); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1399 |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
1400 if (im->typing_state == GAIM_NOT_TYPING) |
5304 | 1401 return; |
1402 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1403 gaim_conv_im_stop_typing_timeout(im); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1404 gaim_conv_im_set_typing_state(im, GAIM_NOT_TYPING); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1405 gaim_conv_im_update_typing(im); |
5032
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
1406 |
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
1407 b = gaim_find_buddy(gc->account, name); |
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
1408 |
cb700c07ee07
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
1409 if (b != NULL) |
6837
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1410 { |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1411 gaim_signal_emit(gaim_conversations_get_handle(), |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1412 "buddy-typing-stopped", c); |
f098765ac919
[gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
1413 } |
2993 | 1414 } |
1 | 1415 |
4487 | 1416 struct chat_invite_data { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1417 GaimConnection *gc; |
5234 | 1418 GHashTable *components; |
4487 | 1419 }; |
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
1420 |
4487 | 1421 static void chat_invite_data_free(struct chat_invite_data *cid) |
1 | 1422 { |
5234 | 1423 if (cid->components) |
1424 g_hash_table_destroy(cid->components); | |
4487 | 1425 g_free(cid); |
1426 } | |
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
1427 |
8562 | 1428 |
1429 static void chat_invite_reject(struct chat_invite_data *cid) | |
1430 { | |
1431 serv_reject_chat(cid->gc, cid->components); | |
1432 chat_invite_data_free(cid); | |
1433 } | |
1434 | |
1435 | |
4487 | 1436 static void chat_invite_accept(struct chat_invite_data *cid) |
1437 { | |
5234 | 1438 serv_join_chat(cid->gc, cid->components); |
4487 | 1439 chat_invite_data_free(cid); |
1 | 1440 } |
1441 | |
1442 | |
1443 | |
5630 | 1444 void serv_got_chat_invite(GaimConnection *gc, const char *name, |
1445 const char *who, const char *message, GHashTable *data) | |
1 | 1446 { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1447 GaimAccount *account; |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1448 char buf2[BUF_LONG]; |
4487 | 1449 struct chat_invite_data *cid = g_new0(struct chat_invite_data, 1); |
1 | 1450 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1451 account = gaim_connection_get_account(gc); |
1 | 1452 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1453 gaim_signal_emit(gaim_conversations_get_handle(), |
9514 | 1454 "chat-invited", account, who, name, message, data); |
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
1455 |
9933 | 1456 if (message != NULL) |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1457 g_snprintf(buf2, sizeof(buf2), |
9933 | 1458 _("%s has invited %s to the chat room %s:\n<b>%s</b>"), |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1459 who, gaim_account_get_username(account), name, message); |
414
f9dc74875833
[gaim-migrate @ 424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
411
diff
changeset
|
1460 else |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1461 g_snprintf(buf2, sizeof(buf2), |
9933 | 1462 _("%s has invited %s to the chat room %s\n"), |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1463 who, gaim_account_get_username(account), name); |
1 | 1464 |
4487 | 1465 cid->gc = gc; |
5234 | 1466 cid->components = data; |
1 | 1467 |
5498
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5461
diff
changeset
|
1468 gaim_request_accept_cancel(gc, NULL, _("Accept chat invitation?"), |
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5461
diff
changeset
|
1469 buf2, 0, cid, |
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5461
diff
changeset
|
1470 G_CALLBACK(chat_invite_accept), |
8562 | 1471 G_CALLBACK(chat_invite_reject)); |
1 | 1472 } |
1473 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
1474 GaimConversation *serv_got_joined_chat(GaimConnection *gc, |
5630 | 1475 int id, const char *name) |
1 | 1476 { |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1477 GaimConversation *conv; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1478 GaimConvChat *chat; |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1479 GaimAccount *account; |
1 | 1480 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1481 account = gaim_connection_get_account(gc); |
1 | 1482 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1483 conv = gaim_conversation_new(GAIM_CONV_CHAT, account, name); |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1484 chat = GAIM_CONV_CHAT(conv); |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1485 |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1486 if (!g_slist_find(gc->buddy_chats, conv)) |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1487 gc->buddy_chats = g_slist_append(gc->buddy_chats, conv); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1488 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1489 gaim_conv_chat_set_id(chat, id); |
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4440
diff
changeset
|
1490 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1491 gaim_conv_window_show(gaim_conversation_get_window(conv)); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1492 gaim_conv_window_switch_conversation(gaim_conversation_get_window(conv), |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1493 gaim_conversation_get_index(conv)); |
1785
f4ae086c746b
[gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1775
diff
changeset
|
1494 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1495 gaim_signal_emit(gaim_conversations_get_handle(), "chat-joined", conv); |
3710 | 1496 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1497 return conv; |
1 | 1498 } |
1499 | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
1500 void serv_got_chat_left(GaimConnection *g, int id) |
1 | 1501 { |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1502 GSList *bcs; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
1503 GaimConversation *conv = NULL; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1504 GaimConvChat *chat = NULL; |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1505 GaimAccount *account; |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1506 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1507 account = gaim_connection_get_account(g); |
1 | 1508 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1509 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
1510 conv = (GaimConversation *)bcs->data; |
1 | 1511 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1512 chat = GAIM_CONV_CHAT(conv); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1513 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1514 if (gaim_conv_chat_get_id(chat) == id) |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1515 break; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1516 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1517 conv = NULL; |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1518 } |
1 | 1519 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1520 if (!conv) |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1521 return; |
1 | 1522 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1523 gaim_signal_emit(gaim_conversations_get_handle(), "chat-left", conv); |
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
1524 |
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1525 gaim_debug(GAIM_DEBUG_INFO, "server", "Leaving room: %s\n", |
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1526 gaim_conversation_get_name(conv)); |
1 | 1527 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1528 g->buddy_chats = g_slist_remove(g->buddy_chats, conv); |
1 | 1529 |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1530 gaim_conv_chat_left(GAIM_CONV_CHAT(conv)); |
1 | 1531 } |
1532 | |
6059 | 1533 void serv_got_chat_in(GaimConnection *g, int id, const char *who, |
9584 | 1534 GaimConvChatFlags chatflags, const char *message, time_t mtime) |
1 | 1535 { |
9584 | 1536 GaimMessageFlags msgflags = 0; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1537 GSList *bcs; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
1538 GaimConversation *conv = NULL; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1539 GaimConvChat *chat = NULL; |
2296
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
1540 char *buf; |
3163 | 1541 char *buffy, *angel; |
1542 int plugin_return; | |
1 | 1543 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1544 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5630
diff
changeset
|
1545 conv = (GaimConversation *)bcs->data; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1546 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1547 chat = GAIM_CONV_CHAT(conv); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1548 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1549 if (gaim_conv_chat_get_id(chat) == id) |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1550 break; |
1 | 1551 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1552 conv = NULL; |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1553 } |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1554 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1555 if (!conv) |
1100
f168625b63fe
[gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1089
diff
changeset
|
1556 return; |
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
1557 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1558 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1559 * 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
|
1560 * 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
|
1561 * 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
|
1562 * 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
|
1563 * don't want you to be dealing with it. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1564 */ |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1565 |
3163 | 1566 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG)); |
1567 strcpy(buffy, message); | |
1568 angel = g_strdup(who); | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1569 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1570 plugin_return = GPOINTER_TO_INT( |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
1571 gaim_signal_emit_return_1(gaim_conversations_get_handle(), |
8999 | 1572 "receiving-chat-msg", g->account, |
7511
a899742289c2
[gaim-migrate @ 8124]
Christian Hammond <chipx86@chipx86.com>
parents:
7502
diff
changeset
|
1573 &angel, &buffy, conv)); |
3163 | 1574 |
1575 if (!buffy || !angel || plugin_return) { | |
1576 if (buffy) | |
1577 g_free(buffy); | |
1578 if (angel) | |
1579 g_free(angel); | |
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
1580 return; |
3163 | 1581 } |
1582 who = angel; | |
1583 message = buffy; | |
1 | 1584 |
8999 | 1585 gaim_signal_emit(gaim_conversations_get_handle(), "received-chat-msg", g->account, |
1586 who, message, conv); | |
1587 | |
8882 | 1588 /* Make sure URLs are clickable */ |
1589 buf = gaim_markup_linkify(message); | |
1643
d7e380618fd5
[gaim-migrate @ 1653]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1587
diff
changeset
|
1590 |
9584 | 1591 if (chatflags & GAIM_CONV_CHAT_WHISPER) |
1592 msgflags |= GAIM_MESSAGE_WHISPER; | |
1593 if (chatflags & GAIM_CONV_CHAT_DELAYED) | |
1594 msgflags |= GAIM_MESSAGE_DELAYED; | |
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1595 |
9584 | 1596 gaim_conv_chat_write(chat, who, buf, msgflags, mtime); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1597 |
6350 | 1598 g_free(angel); |
2296
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
1599 g_free(buf); |
6062 | 1600 g_free(buffy); |
1 | 1601 } |
9466 | 1602 |
1603 void serv_send_file(GaimConnection *gc, const char *who, const char *file) | |
1604 { | |
1605 GaimPluginProtocolInfo *prpl_info = NULL; | |
1606 | |
1607 if (gc != NULL && gc->prpl != NULL) | |
1608 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
1609 | |
9647 | 1610 if (prpl_info && prpl_info->send_file) { |
1611 if (!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, who)) { | |
1612 prpl_info->send_file(gc, who, file); | |
1613 } | |
1614 } | |
9466 | 1615 } |