src/server.c

Mon, 20 Jan 2003 09:10:23 +0000

author
Christian Hammond <chipx86@chipx86.com>
date
Mon, 20 Jan 2003 09:10:23 +0000
changeset 4359
cf899ee07d1d
parent 4349
a65175463a31
child 4398
ba901bb913e5
permissions
-rw-r--r--

[gaim-migrate @ 4625]
Wow, okay, where to begin with this one ;)

I rewrote the whole conversation backend. It is now core/UI split. Here's
how it works..

Every conversation is represented by a gaim_conversation structure. This
branches out into gaim_im and gaim_chat structures. Every conversation
lives in (well, normally, but it doesn't have to) a gaim_window structure.
This is a _CORE_ representation of a window. There can be multiple
gaim_window structures around.

The gaim_window and gaim_conversation structures have UI-specific operation
structures associated with them. At the moment, the only UI is GTK+, and
this will be for some time. Don't start thinking you can write a QT UI now.
It's just not going to happen.

Everything that is done on a conversation is done through the core API.
This API does core processing and then calls the UI operations for the
rendering and anything else.

Now, what does this give the user?

- Multiple windows.
- Multiple tabs per window.
- Draggable tabs.
- Send As menu is moved to the menubar.
- Menubar for chats.
- Some very cool stuff in the future, like replacing, say, IRC chat windows
with an X-Chat interface, or whatever.
- Later on, customizable window/conversation positioning.

For developers:

- Fully documented API
- Core/UI split
- Variable checking and mostly sane handling of incorrect variables.
- Logical structure to conversations, both core and UI.
- Some very cool stuff in the future, like replacing, say, IRC chat windows
with an X-Chat interface, or whatever.
- Later on, customizable window/conversation positioning.
- Oh yeah, and the beginning of a stock icon system.

Now, there are things that aren't there yet. You will see tabs even if you
have them turned off. This will be fixed in time. Also, the preferences
will change to work with the new structure. I'm starting school in 2 days,
so it may not be done immediately, but hopefully in the next week.

Enjoy!

1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1 /*
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
2 * gaim
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
3 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
5 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
9 * (at your option) any later version.
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
10 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
14 * GNU General Public License for more details.
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
15 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
19 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
20 */
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
21
349
6f7d28b0f98d [gaim-migrate @ 359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 338
diff changeset
22 #ifdef HAVE_CONFIG_H
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2048
diff changeset
23 #include <config.h>
349
6f7d28b0f98d [gaim-migrate @ 359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 338
diff changeset
24 #endif
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
25 #include <time.h>
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
26 #include <stdio.h>
1057
0161606a8549 [gaim-migrate @ 1067]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1056
diff changeset
27 #include <stdlib.h>
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
28 #include <string.h>
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
29 #include <sys/types.h>
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
30 #include <sys/stat.h>
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
31 #include <sys/time.h>
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
32 #include <unistd.h>
2123
4cfdde0aa3f1 [gaim-migrate @ 2133]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2108
diff changeset
33 #include <errno.h>
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
34 #include "gtkimhtml.h"
981
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 980
diff changeset
35 #include "prpl.h"
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 931
diff changeset
36 #include "multi.h"
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
37 #include "gaim.h"
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
38
964
6642a090394e [gaim-migrate @ 974]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 962
diff changeset
39 #include "pixmaps/ok.xpm"
6642a090394e [gaim-migrate @ 974]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 962
diff changeset
40 #include "pixmaps/cancel.xpm"
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
41 #include "pixmaps/tb_search.xpm"
964
6642a090394e [gaim-migrate @ 974]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 962
diff changeset
42
980
dd522f25c5c4 [gaim-migrate @ 990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 978
diff changeset
43 void serv_login(struct aim_user *user)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
44 {
981
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 980
diff changeset
45 struct prpl *p = find_prpl(user->protocol);
4040
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 3985
diff changeset
46
3606
6edf451a823a [gaim-migrate @ 3719]
Sean Egan <seanegan@pidgin.im>
parents: 3601
diff changeset
47 if (user->gc != NULL || p == NULL)
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
48 return;
2531
fc386c329837 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2506
diff changeset
49
4040
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 3985
diff changeset
50 if(!ref_protocol(p))
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 3985
diff changeset
51 return;
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3570
diff changeset
52
3606
6edf451a823a [gaim-migrate @ 3719]
Sean Egan <seanegan@pidgin.im>
parents: 3601
diff changeset
53 if (p->login) {
3789
10d651e63c22 [gaim-migrate @ 3929]
Christian Hammond <chipx86@chipx86.com>
parents: 3787
diff changeset
54 if (!strlen(user->password) && !(p->options & OPT_PROTO_NO_PASSWORD) &&
10d651e63c22 [gaim-migrate @ 3929]
Christian Hammond <chipx86@chipx86.com>
parents: 3787
diff changeset
55 !(p->options & OPT_PROTO_PASSWORD_OPTIONAL)) {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
56 do_error_dialog(_("Please enter your password"), NULL, GAIM_ERROR);
2531
fc386c329837 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2506
diff changeset
57 return;
fc386c329837 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2506
diff changeset
58 }
fc386c329837 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2506
diff changeset
59
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3570
diff changeset
60 debug_printf(PACKAGE " " VERSION " logging in %s using %s\n", user->username, p->name);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents: 3474
diff changeset
61 user->connecting = TRUE;
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
62 connecting_count++;
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3524
diff changeset
63 debug_printf("connecting_count: %d\n", connecting_count);
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
64 plugin_event(event_connecting, user);
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
65 p->login(user);
423
3b1668d30afc [gaim-migrate @ 433]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 414
diff changeset
66 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
67 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
68
2382
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
69 static gboolean send_keepalive(gpointer d)
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
70 {
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
71 struct gaim_connection *gc = d;
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
72 if (gc->prpl && gc->prpl->keepalive)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
73 gc->prpl->keepalive(gc);
2382
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
74 return TRUE;
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
75 }
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
76
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
77 static void update_keepalive(struct gaim_connection *gc, gboolean on)
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
78 {
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
79 if (on && !gc->keepalive) {
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
80 debug_printf("allowing NOP\n");
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
81 gc->keepalive = g_timeout_add(60000, send_keepalive, gc);
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
82 } else if (!on && gc->keepalive > 0) {
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
83 debug_printf("removing NOP\n");
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
84 g_source_remove(gc->keepalive);
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
85 gc->keepalive = 0;
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
86 }
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
87 }
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
88
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 931
diff changeset
89 void serv_close(struct gaim_connection *gc)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
90 {
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3570
diff changeset
91 struct prpl *prpl;
2017
39809db22611 [gaim-migrate @ 2027]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2001
diff changeset
92 while (gc->buddy_chats) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
93 struct gaim_conversation *b = gc->buddy_chats->data;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
94
1063
f766a178ee59 [gaim-migrate @ 1073]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
95 gc->buddy_chats = g_slist_remove(gc->buddy_chats, b);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
96
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
97 /* TODO: Nuke the UI-specific code here. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
98 if (gaim_conversation_get_ops(b) == gaim_get_gtk_conversation_ops())
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
99 gaim_gtkconv_update_buttons_by_protocol(b);
1063
f766a178ee59 [gaim-migrate @ 1073]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
100 }
f766a178ee59 [gaim-migrate @ 1073]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
101
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
102 if (gc->idle_timer > 0)
2131
ef072ae1b2b8 [gaim-migrate @ 2141]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2123
diff changeset
103 g_source_remove(gc->idle_timer);
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
104 gc->idle_timer = 0;
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
105
2382
69a4e3665132 [gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2381
diff changeset
106 update_keepalive(gc, FALSE);
1050
3e0405bc3cf4 [gaim-migrate @ 1060]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1038
diff changeset
107
981
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 980
diff changeset
108 if (gc->prpl && gc->prpl->close)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
109 gc->prpl->close(gc);
4040
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 3985
diff changeset
110
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3570
diff changeset
111 prpl = gc->prpl;
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 931
diff changeset
112 account_offline(gc);
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 931
diff changeset
113 destroy_gaim_conn(gc);
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3570
diff changeset
114
4040
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 3985
diff changeset
115 unref_protocol(prpl);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
116 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
117
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 931
diff changeset
118 void serv_touch_idle(struct gaim_connection *gc)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
119 {
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
120 /* Are we idle? If so, not anymore */
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 931
diff changeset
121 if (gc->is_idle > 0) {
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 931
diff changeset
122 gc->is_idle = 0;
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
123 serv_set_idle(gc, 0);
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
124 }
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
125 time(&gc->lastsent);
1834
929b136ac3b7 [gaim-migrate @ 1844]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1815
diff changeset
126 if (gc->is_auto_away)
929b136ac3b7 [gaim-migrate @ 1844]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1815
diff changeset
127 check_idle(gc);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
128 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
129
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 931
diff changeset
130 void serv_finish_login(struct gaim_connection *gc)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
131 {
1051
d65ac9e2224f [gaim-migrate @ 1061]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1050
diff changeset
132 if (strlen(gc->user->user_info)) {
1976
9fd3356e3a24 [gaim-migrate @ 1986]
Rob Flynn <gaim@robflynn.com>
parents: 1938
diff changeset
133 /* g_malloc(strlen(gc->user->user_info) * 4);
9fd3356e3a24 [gaim-migrate @ 1986]
Rob Flynn <gaim@robflynn.com>
parents: 1938
diff changeset
134 strncpy_withhtml(buf, gc->user->user_info, strlen(gc->user->user_info) * 4); */
1292
82820e0a3748 [gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents: 1263
diff changeset
135 serv_set_info(gc, gc->user->user_info);
1976
9fd3356e3a24 [gaim-migrate @ 1986]
Rob Flynn <gaim@robflynn.com>
parents: 1938
diff changeset
136 /* g_free(buf); */
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
137 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
138
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
139 if (gc->idle_timer > 0)
2131
ef072ae1b2b8 [gaim-migrate @ 2141]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2123
diff changeset
140 g_source_remove(gc->idle_timer);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
141
2381
553cf0455173 [gaim-migrate @ 2394]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
142 gc->idle_timer = g_timeout_add(20000, check_idle, gc);
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
143 serv_touch_idle(gc);
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 931
diff changeset
144
1995
b9457664ec78 [gaim-migrate @ 2005]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1981
diff changeset
145 if (gc->prpl->options & OPT_PROTO_CORRECT_TIME)
b9457664ec78 [gaim-migrate @ 2005]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1981
diff changeset
146 serv_add_buddy(gc, gc->username);
b9457664ec78 [gaim-migrate @ 2005]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1981
diff changeset
147
1772
c759c01bd66f [gaim-migrate @ 1782]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1771
diff changeset
148 update_keepalive(gc, TRUE);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
149 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
150
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
151 /* This should return the elapsed time in seconds in which Gaim will not send
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
152 * typing notifications.
3001
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
153 * if it returns zero, it will not send any more typing notifications
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
154 * typing is a flag - TRUE for typing, FALSE for stopped typing */
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
155 int serv_send_typing(struct gaim_connection *g, char *name, int typing) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
156 if (g && g->prpl && g->prpl->send_typing)
3001
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
157 return g->prpl->send_typing(g, name, typing);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
158 else return 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
159 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
160
3815
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
161 struct queued_away_response {
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
162 char name[80];
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
163 time_t sent_away;
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
164 };
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
165
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
166 struct queued_away_response *find_queued_away_response_by_name(char *name);
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
167
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
168 int serv_send_im(struct gaim_connection *gc, char *name, char *message,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
169 int len, int flags)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
170 {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
171 struct gaim_conversation *c;
2123
4cfdde0aa3f1 [gaim-migrate @ 2133]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2108
diff changeset
172 int val = -EINVAL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
173
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
174 c = gaim_find_conversation(name);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
175
981
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 980
diff changeset
176 if (gc->prpl && gc->prpl->send_im)
3033
1f078ab46e76 [gaim-migrate @ 3046]
Sean Egan <seanegan@pidgin.im>
parents: 3002
diff changeset
177 val = gc->prpl->send_im(gc, name, message, len, flags);
94
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 79
diff changeset
178
2231
9d8593ab093e [gaim-migrate @ 2241]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2205
diff changeset
179 if (!(flags & IM_FLAG_AWAY))
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
180 serv_touch_idle(gc);
2123
4cfdde0aa3f1 [gaim-migrate @ 2133]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2108
diff changeset
181
3815
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
182 if (gc->away && away_options & OPT_AWAY_DELAY_IN_USE &&
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
183 !(away_options & OPT_AWAY_NO_AUTO_RESP)) {
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
184 time_t t;
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
185 struct queued_away_response *qar;
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
186 time(&t);
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
187 qar = find_queued_away_response_by_name(name);
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
188 if (!qar) {
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
189 qar = (struct queued_away_response *)g_new0(struct queued_away_response, 1);
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
190 g_snprintf(qar->name, sizeof(qar->name), "%s", name);
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
191 qar->sent_away = 0;
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
192 away_time_queue = g_slist_append(away_time_queue, qar);
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
193 }
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
194 qar->sent_away = t;
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
195 }
111911707a8c [gaim-migrate @ 3962]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 3792
diff changeset
196
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
197 if (c && gaim_im_get_type_again_timeout(GAIM_IM(c)))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
198 gaim_im_stop_type_again_timeout(GAIM_IM(c));
3601
dce8ae5ad0bb [gaim-migrate @ 3703]
Nathan Walp <nwalp@pidgin.im>
parents: 3572
diff changeset
199
2123
4cfdde0aa3f1 [gaim-migrate @ 2133]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2108
diff changeset
200 return val;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
201 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
202
1032
c16107c10195 [gaim-migrate @ 1042]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1030
diff changeset
203 void serv_get_info(struct gaim_connection *g, char *name)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
204 {
1006
fb2f2a403962 [gaim-migrate @ 1016]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1002
diff changeset
205 if (g && g->prpl && g->prpl->get_info)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
206 g->prpl->get_info(g, name);
249
14b7e4f943ff [gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 248
diff changeset
207 }
14b7e4f943ff [gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 248
diff changeset
208
2773
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
209 void serv_get_away(struct gaim_connection *g, char *name)
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
210 {
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
211 if (g && g->prpl && g->prpl->get_away)
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
212 g->prpl->get_away(g, name);
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
213 }
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
214
1032
c16107c10195 [gaim-migrate @ 1042]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1030
diff changeset
215 void serv_get_dir(struct gaim_connection *g, char *name)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
216 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
217 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->get_dir)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
218 g->prpl->get_dir(g, name);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
219 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
220
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
221 void serv_set_dir(struct gaim_connection *g, const char *first,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
222 const char *middle, const char *last, const char *maiden,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
223 const char *city, const char *state, const char *country,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
224 int web)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
225 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
226 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->set_dir)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
227 g->prpl->set_dir(g, first, middle, last, maiden, city, state,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
228 country, web);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
229 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
230
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
231 void serv_dir_search(struct gaim_connection *g, const char *first,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
232 const char *middle, const char *last, const char *maiden,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
233 const char *city, const char *state, const char *country,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
234 const char *email)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
235 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
236 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->dir_search)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
237 g->prpl->dir_search(g, first, middle, last, maiden, city, state,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
238 country, email);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
239 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
240
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
241
1401
e81430ba5d7a [gaim-migrate @ 1411]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1376
diff changeset
242 void serv_set_away(struct gaim_connection *gc, char *state, char *message)
e81430ba5d7a [gaim-migrate @ 1411]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1376
diff changeset
243 {
1938
93e5b550043b [gaim-migrate @ 1948]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1937
diff changeset
244 if (gc && gc->prpl && gc->prpl->set_away) {
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2359
diff changeset
245 char *buf = NULL;
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
246
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
247 if (gc->away_state) {
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
248 g_free(gc->away_state);
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
249 gc->away_state = NULL;
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
250 }
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
251
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2359
diff changeset
252 if (message) {
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2359
diff changeset
253 buf = g_malloc(strlen(message) + 1);
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2681
diff changeset
254 if (gc->flags & OPT_CONN_HTML)
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2359
diff changeset
255 strncpy(buf, message, strlen(message) + 1);
1938
93e5b550043b [gaim-migrate @ 1948]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1937
diff changeset
256 else
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2359
diff changeset
257 strncpy_nohtml(buf, message, strlen(message) + 1);
1937
28dd326a2dc4 [gaim-migrate @ 1947]
Nathan Walp <nwalp@pidgin.im>
parents: 1920
diff changeset
258 }
1938
93e5b550043b [gaim-migrate @ 1948]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1937
diff changeset
259
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
260 gc->prpl->set_away(gc, state, buf);
2000
2ae58c11383c [gaim-migrate @ 2010]
Rob Flynn <gaim@robflynn.com>
parents: 1995
diff changeset
261
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
262 if (gc->away && state) {
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
263 gc->away_state = g_strdup(state);
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
264 }
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
265
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
266 plugin_event(event_away, gc, state, buf);
1938
93e5b550043b [gaim-migrate @ 1948]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1937
diff changeset
267
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2359
diff changeset
268 if (buf)
1938
93e5b550043b [gaim-migrate @ 1948]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1937
diff changeset
269 g_free(buf);
1404
e915b372f70a [gaim-migrate @ 1414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1401
diff changeset
270 }
1937
28dd326a2dc4 [gaim-migrate @ 1947]
Nathan Walp <nwalp@pidgin.im>
parents: 1920
diff changeset
271
1938
93e5b550043b [gaim-migrate @ 1948]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1937
diff changeset
272 system_log(log_away, gc, NULL, OPT_LOG_BUDDY_AWAY | OPT_LOG_MY_SIGNON);
1401
e81430ba5d7a [gaim-migrate @ 1411]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1376
diff changeset
273 }
e81430ba5d7a [gaim-migrate @ 1411]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1376
diff changeset
274
e81430ba5d7a [gaim-migrate @ 1411]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1376
diff changeset
275 void serv_set_away_all(char *message)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
276 {
976
553a33f54fe2 [gaim-migrate @ 986]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 973
diff changeset
277 GSList *c = connections;
553a33f54fe2 [gaim-migrate @ 986]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 973
diff changeset
278 struct gaim_connection *g;
553a33f54fe2 [gaim-migrate @ 986]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 973
diff changeset
279
553a33f54fe2 [gaim-migrate @ 986]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 973
diff changeset
280 while (c) {
553a33f54fe2 [gaim-migrate @ 986]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 973
diff changeset
281 g = (struct gaim_connection *)c->data;
1575
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1555
diff changeset
282 serv_set_away(g, GAIM_AWAY_CUSTOM, message);
976
553a33f54fe2 [gaim-migrate @ 986]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 973
diff changeset
283 c = c->next;
423
3b1668d30afc [gaim-migrate @ 433]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 414
diff changeset
284 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
285 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
286
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 931
diff changeset
287 void serv_set_info(struct gaim_connection *g, char *info)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
288 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
289 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->set_info) {
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
290 if (plugin_event(event_set_info, g, info))
3456
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3427
diff changeset
291 return;
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
292 g->prpl->set_info(g, info);
1749
d2d9df57c63e [gaim-migrate @ 1759]
Sean Egan <seanegan@pidgin.im>
parents: 1734
diff changeset
293 }
237
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 200
diff changeset
294 }
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 200
diff changeset
295
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3457
diff changeset
296 void serv_change_passwd(struct gaim_connection *g, const char *orig, const char *new)
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
297 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
298 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->change_passwd)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
299 g->prpl->change_passwd(g, orig, new);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
300 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
301
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3457
diff changeset
302 void serv_add_buddy(struct gaim_connection *g, const char *name)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
303 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
304 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->add_buddy)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
305 g->prpl->add_buddy(g, name);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
306 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
307
1336
fcec03d17b63 [gaim-migrate @ 1346]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1303
diff changeset
308 void serv_add_buddies(struct gaim_connection *g, GList *buddies)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
309 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
310 if (g && g_slist_find(connections, g) && g->prpl) {
1336
fcec03d17b63 [gaim-migrate @ 1346]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1303
diff changeset
311 if (g->prpl->add_buddies)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
312 g->prpl->add_buddies(g, buddies);
1336
fcec03d17b63 [gaim-migrate @ 1346]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1303
diff changeset
313 else if (g->prpl->add_buddy)
fcec03d17b63 [gaim-migrate @ 1346]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1303
diff changeset
314 while (buddies) {
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
315 g->prpl->add_buddy(g, buddies->data);
1336
fcec03d17b63 [gaim-migrate @ 1346]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1303
diff changeset
316 buddies = buddies->next;
fcec03d17b63 [gaim-migrate @ 1346]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1303
diff changeset
317 }
fcec03d17b63 [gaim-migrate @ 1346]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1303
diff changeset
318 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
319 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
320
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
321
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2662
diff changeset
322 void serv_remove_buddy(struct gaim_connection *g, char *name, char *group)
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
323 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
324 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->remove_buddy)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2662
diff changeset
325 g->prpl->remove_buddy(g, name, group);
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
326 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
327
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2662
diff changeset
328 void serv_remove_buddies(struct gaim_connection *gc, GList *g, char *group)
2334
d7e3a9fe4a71 [gaim-migrate @ 2347]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2313
diff changeset
329 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
330 if (!g_slist_find(connections, gc))
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
331 return;
2334
d7e3a9fe4a71 [gaim-migrate @ 2347]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2313
diff changeset
332 if (!gc->prpl)
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2359
diff changeset
333 return; /* how the hell did that happen? */
2334
d7e3a9fe4a71 [gaim-migrate @ 2347]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2313
diff changeset
334 if (gc->prpl->remove_buddies)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2662
diff changeset
335 gc->prpl->remove_buddies(gc, g, group);
2334
d7e3a9fe4a71 [gaim-migrate @ 2347]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2313
diff changeset
336 else {
d7e3a9fe4a71 [gaim-migrate @ 2347]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2313
diff changeset
337 while (g) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2662
diff changeset
338 serv_remove_buddy(gc, g->data, group);
2334
d7e3a9fe4a71 [gaim-migrate @ 2347]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2313
diff changeset
339 g = g->next;
d7e3a9fe4a71 [gaim-migrate @ 2347]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2313
diff changeset
340 }
d7e3a9fe4a71 [gaim-migrate @ 2347]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2313
diff changeset
341 }
d7e3a9fe4a71 [gaim-migrate @ 2347]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2313
diff changeset
342 }
d7e3a9fe4a71 [gaim-migrate @ 2347]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2313
diff changeset
343
3136
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
344 /*
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
345 * Set buddy's alias on server roster/list
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
346 */
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
347 void serv_alias_buddy(struct buddy *b)
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
348 {
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
349 if(b && b->user->gc && b->user->gc->prpl && b->user->gc->prpl->alias_buddy) {
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
350 b->user->gc->prpl->alias_buddy(b->user->gc, b->name, b->alias);
3136
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
351 }
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
352 }
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
353
4227
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
354 void serv_got_alias(struct gaim_connection *gc, char *who, char *alias) {
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
355 struct buddy *b = find_buddy(gc->user, who);
4227
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
356 if(!b)
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
357 return;
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
358
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
359 if(alias)
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
360 g_snprintf(b->server_alias, sizeof(b->server_alias), "%s", alias);
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
361 else
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
362 b->server_alias[0] = '\0';
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
363
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
364 handle_buddy_rename(b, b->name);
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
365 }
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
366
3136
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
367 /*
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
368 * Move a buddy from one group to another on server.
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
369 *
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
370 * Note: For now we'll not deal with changing gc's at the same time, but
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
371 * it should be possible. Probably needs to be done, someday.
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
372 */
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
373 void serv_move_buddy(struct buddy *b, struct group *og, struct group *ng)
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
374 {
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
375 if(b && b->user->gc && og && ng) {
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
376 if(b->user->gc->prpl && b->user->gc->prpl->group_buddy) {
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
377 b->user->gc->prpl->group_buddy(b->user->gc, b->name, og->name, ng->name);
3136
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
378 }
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
379 }
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
380 }
8d988a6d2f4c [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
381
3348
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
382 /*
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
383 * Rename a group on server roster/list.
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
384 */
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3457
diff changeset
385 void serv_rename_group(struct gaim_connection *g, struct group *old_group, const char *new_name)
3348
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
386 {
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
387 if (g && g->prpl && old_group && new_name) {
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
388 GList *tobemoved = NULL;
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
389 GSList *original;
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
390
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
391 for (original=old_group->members; original; original=g_slist_next(original))
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
392 tobemoved = g_list_append(tobemoved, ((struct buddy *)original->data)->name);
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
393
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
394 if (g->prpl->rename_group) {
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
395 /* prpl's might need to check if the group already
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
396 * exists or not, and handle that differently */
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
397 g->prpl->rename_group(g, old_group->name, new_name, tobemoved);
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
398 } else {
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
399 serv_remove_buddies(g, tobemoved, old_group->name);
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
400 serv_add_buddies(g, tobemoved);
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
401 }
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
402
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
403 g_list_free(tobemoved);
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
404 }
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
405 }
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3163
diff changeset
406
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
407 void serv_add_permit(struct gaim_connection *g, const char *name)
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
408 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
409 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->add_permit)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
410 g->prpl->add_permit(g, name);
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
411 }
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
412
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
413 void serv_add_deny(struct gaim_connection *g, const char *name)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
414 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
415 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->add_deny)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
416 g->prpl->add_deny(g, name);
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
417 }
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
418
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
419 void serv_rem_permit(struct gaim_connection *g, const char *name)
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
420 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
421 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->rem_permit)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
422 g->prpl->rem_permit(g, name);
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
423 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
424
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
425 void serv_rem_deny(struct gaim_connection *g, const char *name)
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
426 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
427 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->rem_deny)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
428 g->prpl->rem_deny(g, name);
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
429 }
678
6e2cb341573a [gaim-migrate @ 688]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 660
diff changeset
430
1038
850b893e1ac9 [gaim-migrate @ 1048]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1032
diff changeset
431 void serv_set_permit_deny(struct gaim_connection *g)
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
432 {
1145
cf936dc497bf [gaim-migrate @ 1155]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1140
diff changeset
433 /* this is called when either you import a buddy list, and make lots of changes that way,
cf936dc497bf [gaim-migrate @ 1155]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1140
diff changeset
434 * or when the user toggles the permit/deny mode in the prefs. In either case you should
cf936dc497bf [gaim-migrate @ 1155]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1140
diff changeset
435 * probably be resetting and resending the permit/deny info when you get this. */
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
436 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->set_permit_deny)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
437 g->prpl->set_permit_deny(g);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
438 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
439
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1015
diff changeset
440
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 931
diff changeset
441 void serv_set_idle(struct gaim_connection *g, int time)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
442 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
443 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->set_idle)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
444 g->prpl->set_idle(g, time);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
445 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
446
976
553a33f54fe2 [gaim-migrate @ 986]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 973
diff changeset
447 void serv_warn(struct gaim_connection *g, char *name, int anon)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
448 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
449 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->warn)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
450 g->prpl->warn(g, name, anon);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
451 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
452
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
453 void serv_join_chat(struct gaim_connection *g, GList *data)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
454 {
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
455 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->join_chat)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
456 g->prpl->join_chat(g, data);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
457 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
458
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3457
diff changeset
459 void serv_chat_invite(struct gaim_connection *g, int id, const char *message, const char *name)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
460 {
2359
27c1207ca513 [gaim-migrate @ 2372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2345
diff changeset
461 char *buffy = message && *message ? g_strdup(message) : NULL;
27c1207ca513 [gaim-migrate @ 2372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2345
diff changeset
462 plugin_event(event_chat_send_invite, g, (void *)id, name, &buffy);
2586
c867f3e78ed3 [gaim-migrate @ 2599]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2546
diff changeset
463 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->chat_invite)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
464 g->prpl->chat_invite(g, id, buffy, name);
2359
27c1207ca513 [gaim-migrate @ 2372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2345
diff changeset
465 if (buffy)
27c1207ca513 [gaim-migrate @ 2372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2345
diff changeset
466 g_free(buffy);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
467 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
468
964
6642a090394e [gaim-migrate @ 974]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 962
diff changeset
469 void serv_chat_leave(struct gaim_connection *g, int id)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
470 {
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
471 if (!g_slist_find(connections, g))
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
472 return;
1015
954a02d6c5e5 [gaim-migrate @ 1025]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1013
diff changeset
473
981
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 980
diff changeset
474 if (g->prpl && g->prpl->chat_leave)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
475 g->prpl->chat_leave(g, id);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
476 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
477
964
6642a090394e [gaim-migrate @ 974]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 962
diff changeset
478 void serv_chat_whisper(struct gaim_connection *g, int id, char *who, char *message)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
479 {
981
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 980
diff changeset
480 if (g->prpl && g->prpl->chat_whisper)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
481 g->prpl->chat_whisper(g, id, who, message);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
482 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
483
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2131
diff changeset
484 int serv_chat_send(struct gaim_connection *g, int id, char *message)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
485 {
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2131
diff changeset
486 int val = -EINVAL;
981
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 980
diff changeset
487 if (g->prpl && g->prpl->chat_send)
2662
9201ea07c91e [gaim-migrate @ 2675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2646
diff changeset
488 val = g->prpl->chat_send(g, id, message);
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 931
diff changeset
489 serv_touch_idle(g);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2131
diff changeset
490 return val;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
491 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
492
1773
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
493 int find_queue_row_by_name(char *name)
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
494 {
4167
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
495 GSList *templist;
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
496 char *temp;
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
497 int i;
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
498
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
499 templist = message_queue;
1773
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
500
4167
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
501 for (i = 0; i < GTK_CLIST(clistqueue)->rows; i++) {
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
502 gtk_clist_get_text(GTK_CLIST(clistqueue), i, 0, &temp);
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
503
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
504 if (!strcmp(name, temp))
1773
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
505 return i;
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
506 }
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
507
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
508 return -1;
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
509 }
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
510
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
511 int find_queue_total_by_name(char *name)
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
512 {
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
513 GSList *templist;
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
514 int i = 0;
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
515
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
516 templist = message_queue;
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
517
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
518 while (templist) {
1773
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
519 struct queued_message *qm = (struct queued_message *)templist->data;
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
520 if ((qm->flags & WFLAG_RECV) && !strcmp(name, qm->name))
1773
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
521 i++;
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2359
diff changeset
522
1773
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
523 templist = templist->next;
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
524 }
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
525
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
526 return i;
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
527 }
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
528
1774
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
529 struct queued_away_response *find_queued_away_response_by_name(char *name)
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
530 {
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
531 GSList *templist;
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
532 struct queued_away_response *qar;
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
533
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
534 templist = away_time_queue;
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
535
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
536 while (templist) {
1774
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
537 qar = (struct queued_away_response *)templist->data;
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2359
diff changeset
538
1774
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
539 if (!strcmp(name, qar->name))
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
540 return qar;
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
541
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
542 templist = templist->next;
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
543 }
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
544
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
545 return NULL;
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
546 }
734cb657b51e [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
547
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
548 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
549 * woo. i'm actually going to comment this function. isn't that fun. make
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
550 * sure to follow along, kids
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
551 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
552 void serv_got_im(struct gaim_connection *gc, char *name, char *message,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
553 guint32 flags, time_t mtime, gint len)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
554 {
1981
c5c54a13e1ef [gaim-migrate @ 1991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1976
diff changeset
555 char *buffy;
c5c54a13e1ef [gaim-migrate @ 1991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1976
diff changeset
556 char *angel;
c5c54a13e1ef [gaim-migrate @ 1991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1976
diff changeset
557 int plugin_return;
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2231
diff changeset
558 int away = 0;
1981
c5c54a13e1ef [gaim-migrate @ 1991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1976
diff changeset
559
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
560 struct gaim_conversation *cnv;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
561
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
562 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
563 * Pay no attention to the man behind the curtain.
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2231
diff changeset
564 *
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
565 * The reason i feel okay with this is because it's useful to some
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
566 * plugins. Gaim doesn't ever use it itself. Besides, it's not entirely
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
567 * accurate; it's possible to have false negatives with most protocols.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
568 * Also with some it's easy to have false positives as well. So if you're
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
569 * a plugin author, don't rely on this, still do your own checks. But uh.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
570 * It's a start.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
571 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
572
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2231
diff changeset
573 if (flags & IM_FLAG_GAIMUSER)
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2231
diff changeset
574 debug_printf("%s is a gaim user.\n", name);
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2231
diff changeset
575
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
576 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
577 * We should update the conversation window buttons and menu,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
578 * if it exists.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
579 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
580 cnv = gaim_find_conversation_with_user(name, gc->user);
2106
ecd1bec6376c [gaim-migrate @ 2116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2104
diff changeset
581
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
582 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
583 * Plugin stuff. we pass a char ** but we don't want to pass what's
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
584 * been given us by the prpls. So we create temp holders and pass
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
585 * those instead. It's basically just to avoid segfaults. Of course,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
586 * if the data is binary, plugins don't see it. Bitch all you want;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
587 * I really don't want you to be dealing with it.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
588 */
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
589 if (len < 0) {
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
590 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG));
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
591 strcpy(buffy, message);
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
592 angel = g_strdup(name);
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
593 plugin_return = plugin_event(event_im_recv, gc, &angel, &buffy, &flags);
1339
7154ff47dc2b [gaim-migrate @ 1349]
Rob Flynn <gaim@robflynn.com>
parents: 1336
diff changeset
594
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
595 if (!buffy || !angel || plugin_return) {
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
596 if (buffy)
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
597 g_free(buffy);
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
598 if (angel)
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
599 g_free(angel);
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
600 return;
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
601 }
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
602 name = angel;
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
603 message = buffy;
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
604 } else {
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
605 name = g_strdup(name);
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
606 message = g_memdup(message, len);
1100
efc7d10c7826 [gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1089
diff changeset
607 }
2104
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
608
3792
f169950a58d1 [gaim-migrate @ 3932]
Rob Flynn <gaim@robflynn.com>
parents: 3789
diff changeset
609 #if 0
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
610 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
611 * TiK, using TOC, sends an automated message in order to get your
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
612 * away message. Now, this is one of the biggest hacks I think I've
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
613 * seen. But, in order to be nice to TiK, we're going to give users
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
614 * the option to ignore it.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
615 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
616 if ((away_options & OPT_AWAY_TIK_HACK) && gc->away &&
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
617 strlen(gc->away) && (len < 0) &&
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
618
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
619 !strcmp(message, ">>>Automated Message: Getting Away Message<<<")) {
831
b1d5ab85f4e7 [gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 809
diff changeset
620 char *tmpmsg = stylize(awaymessage->message, MSG_LEN);
3033
1f078ab46e76 [gaim-migrate @ 3046]
Sean Egan <seanegan@pidgin.im>
parents: 3002
diff changeset
621 serv_send_im(gc, name, tmpmsg, -1, IM_FLAG_AWAY);
831
b1d5ab85f4e7 [gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 809
diff changeset
622 g_free(tmpmsg);
2104
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
623 g_free(name);
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
624 g_free(message);
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
625 return;
736
0e380859da63 [gaim-migrate @ 746]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 710
diff changeset
626 }
3792
f169950a58d1 [gaim-migrate @ 3932]
Rob Flynn <gaim@robflynn.com>
parents: 3789
diff changeset
627 #endif
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
628
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
629 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
630 * If you can't figure this out, stop reading right now.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
631 * "We're not worthy! We're not worthy!"
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
632 */
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
633 if ((len < 0) && (convo_options & OPT_CONVO_SEND_LINKS))
616
890a01886698 [gaim-migrate @ 626]
Rob Flynn <gaim@robflynn.com>
parents: 592
diff changeset
634 linkify_text(message);
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
635
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
636 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
637 * Um. When we call gaim_conversation_write with the message we received,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
638 * it's nice to pass whether or not it was an auto-response. So if it
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
639 * was an auto-response, we set the appropriate flag. This is just so
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
640 * prpls don't have to know about WFLAG_* (though some do anyway)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
641 */
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2231
diff changeset
642 if (flags & IM_FLAG_AWAY)
764
92f08820867b [gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents: 752
diff changeset
643 away = WFLAG_AUTO;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
644
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
645 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
646 * Alright. Two cases for how to handle this. Either we're away or
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
647 * we're not. If we're not, then it's easy. If we are, then there
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
648 * are three or four different ways of handling it and different
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
649 * things we have to do for each.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
650 */
1404
e915b372f70a [gaim-migrate @ 1414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1401
diff changeset
651 if (gc->away) {
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
652 time_t t;
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
653 char *tmpmsg;
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
654 struct buddy *b = find_buddy(gc->user, name);
4227
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
655 char *alias = b ? get_buddy_alias(b) : name;
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
656 int row;
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
657 struct queued_away_response *qar;
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
658
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
659 time(&t);
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
660
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
661 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
662 * Either we're going to queue it or not. Because of the way
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
663 * awayness currently works, this is fucked up. It's possible
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
664 * for an account to be away without the imaway dialog being
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
665 * shown. In fact, it's possible for *all* the accounts to be
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
666 * away without the imaway dialog being shown. So in order for
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
667 * this to be queued properly, we have to make sure that the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
668 * imaway dialog actually exists, first.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
669 */
4167
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
670 if (!cnv && clistqueue && (away_options & OPT_AWAY_QUEUE)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
671 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
672 * Alright, so we're going to queue it. Neat, eh? :)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
673 * So first we create something to store the message, and add
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
674 * it to our queue. Then we update the away dialog to indicate
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
675 * that we've queued something.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
676 */
1769
be8325abcb2a [gaim-migrate @ 1779]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1768
diff changeset
677 struct queued_message *qm;
4167
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
678
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
679 qm = g_new0(struct queued_message, 1);
3985
2c3fe8e4c552 [gaim-migrate @ 4176]
Etan Reisner <deryni@pidgin.im>
parents: 3971
diff changeset
680 g_snprintf(qm->name, sizeof(qm->name), "%s", name);
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
681 qm->message = g_memdup(message, len == -1 ? strlen(message) + 1 : len);
1769
be8325abcb2a [gaim-migrate @ 1779]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1768
diff changeset
682 qm->gc = gc;
be8325abcb2a [gaim-migrate @ 1779]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1768
diff changeset
683 qm->tm = mtime;
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
684 qm->flags = WFLAG_RECV | away;
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
685 qm->len = len;
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
686 message_queue = g_slist_append(message_queue, qm);
1768
2a69692c4432 [gaim-migrate @ 1778]
Rob Flynn <gaim@robflynn.com>
parents: 1764
diff changeset
687
1773
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
688 row = find_queue_row_by_name(qm->name);
4167
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
689
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
690 if (row >= 0) {
1773
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
691 char number[32];
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
692 int qtotal;
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
693
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
694 qtotal = find_queue_total_by_name(qm->name);
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
695 g_snprintf(number, 32, _("(%d messages)"), qtotal);
4167
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
696 gtk_clist_set_text(GTK_CLIST(clistqueue), row, 1, number);
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
697 } else {
4167
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
698 gchar *heh[2];
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
699
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
700 heh[0] = qm->name;
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
701 heh[1] = _("(1 message)");
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
702 gtk_clist_append(GTK_CLIST(clistqueue), heh);
1773
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
703 }
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
704 } else {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
705 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
706 * Ok, so we're not queuing it. Well then, we'll try to handle
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
707 * it normally. Some people think that ignoring it is a perfectly
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
708 * acceptible way to handle it. I think they're on crack, but
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
709 * hey, that's why it's optional.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
710 */
2313
f7f7ff0b8d4a [gaim-migrate @ 2323]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2309
diff changeset
711 if (away_options & OPT_AWAY_DISCARD) {
2104
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
712 g_free(name);
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
713 g_free(message);
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
714 return;
2104
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
715 }
1773
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
716
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
717 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
718 * Ok, so we're not ignoring it. Make sure the conversation
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
719 * exists and is updated (partly handled above already), play
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
720 * the receive sound (sound.c will take care of not playing
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
721 * while away), and then write it to the convo window.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
722 */
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
723 if (cnv == NULL) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
724 cnv = gaim_conversation_new(GAIM_CONV_IM, name);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
725 gaim_conversation_set_user(cnv, gc->user);
1773
a3293b2b61fb [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
726 }
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2359
diff changeset
727
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
728 gaim_im_write(GAIM_IM(cnv), NULL, message, len,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
729 away | WFLAG_RECV, mtime);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
730 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
731
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
732 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
733 * Regardless of whether we queue it or not, we should send an
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
734 * auto-response. That is, of course, unless the horse.... no wait.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
735 * Don't autorespond if:
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
736 *
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
737 * - it's not supported on this connection
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
738 * - or it's disabled
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
739 * - or the away message is empty
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
740 * - or we're not idle and the 'only auto respond if idle' pref
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
741 * is set
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4074
diff changeset
742 */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
743 if (!(gc->flags & OPT_CONN_AUTO_RESP) ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
744 (away_options & OPT_AWAY_NO_AUTO_RESP) || !strlen(gc->away) ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
745 ((away_options & OPT_AWAY_IDLE_RESP) && !gc->is_idle)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
746
2104
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
747 g_free(name);
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
748 g_free(message);
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
749 return;
2104
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
750 }
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
751
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
752 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
753 * This used to be based on the conversation window. But um, if
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
754 * you went away, and someone sent you a message and got your
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
755 * auto-response, and then you closed the window, and then the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
756 * sent you another one, they'd get the auto-response back too
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
757 * soon. Besides that, we need to keep track of this even if we've
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
758 * got a queue. So the rest of this block is just the auto-response,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
759 * if necessary
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
760 */
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
761 qar = find_queued_away_response_by_name(name);
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
762 if (!qar) {
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
763 qar = (struct queued_away_response *)g_new0(struct queued_away_response, 1);
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
764 g_snprintf(qar->name, sizeof(qar->name), "%s", name);
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
765 qar->sent_away = 0;
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
766 away_time_queue = g_slist_append(away_time_queue, qar);
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
767 }
2906
6d1a38606840 [gaim-migrate @ 2919]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2856
diff changeset
768 if ((t - qar->sent_away) < away_resend) {
2104
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
769 g_free(name);
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
770 g_free(message);
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
771 return;
2104
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
772 }
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
773 qar->sent_away = t;
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
774
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
775 /* apply default fonts and colors */
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
776 tmpmsg = stylize(gc->away, MSG_LEN);
3033
1f078ab46e76 [gaim-migrate @ 3046]
Sean Egan <seanegan@pidgin.im>
parents: 3002
diff changeset
777 serv_send_im(gc, name, away_subs(tmpmsg, alias), -1, IM_FLAG_AWAY);
4167
96a51df2ae94 [gaim-migrate @ 4396]
Robert McQueen <robot101@debian.org>
parents: 4162
diff changeset
778 if (!cnv && clistqueue && (away_options & OPT_AWAY_QUEUE)) {
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
779 struct queued_message *qm;
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
780 qm = g_new0(struct queued_message, 1);
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
781 g_snprintf(qm->name, sizeof(qm->name), "%s", name);
1785
8b56bba0a5a5 [gaim-migrate @ 1795]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1775
diff changeset
782 qm->message = g_strdup(away_subs(tmpmsg, alias));
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
783 qm->gc = gc;
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
784 qm->tm = mtime;
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
785 qm->flags = WFLAG_SEND | WFLAG_AUTO;
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2937
diff changeset
786 qm->len = -1;
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
787 message_queue = g_slist_append(message_queue, qm);
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
788 } else if (cnv != NULL)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
789 gaim_im_write(GAIM_IM(cnv), NULL, away_subs(tmpmsg, alias),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
790 len, WFLAG_SEND | WFLAG_AUTO, mtime);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
791
1775
16de02b8c378 [gaim-migrate @ 1785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1774
diff changeset
792 g_free(tmpmsg);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
793 } else {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
794 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
795 * We're not away. This is easy. If the convo window doesn't
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
796 * exist, create and update it (if it does exist it was updated
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
797 * earlier), then play a sound indicating we've received it and
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
798 * then display it. Easy.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
799 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
800 if (away_options & OPT_AWAY_QUEUE_UNREAD &&
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
801 !gaim_find_conversation(name) && docklet_count) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
802
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
803 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
804 * We're gonna queue it up and wait for the user to ask for
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
805 * it... probably by clicking the docklet or windows tray icon.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
806 */
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
807 struct queued_message *qm;
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
808 qm = g_new0(struct queued_message, 1);
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
809 g_snprintf(qm->name, sizeof(qm->name), "%s", name);
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
810 qm->message = g_strdup(message);
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
811 qm->gc = gc;
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
812 qm->tm = mtime;
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
813 qm->flags = away | WFLAG_RECV;
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
814 qm->len = len;
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
815 unread_message_queue = g_slist_append(unread_message_queue, qm);
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
816 } else {
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
817 if (cnv == NULL) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
818 cnv = gaim_conversation_new(GAIM_CONV_IM, name);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
819 gaim_conversation_set_user(cnv, gc->user);
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
820 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
821
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
822 /* CONV XXX gaim_conversation_set_name(cnv, name); */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
823
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
824 gaim_im_write(GAIM_IM(cnv), NULL, message, len,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
825 away | WFLAG_RECV, mtime);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
826 gaim_window_flash(gaim_conversation_get_window(cnv));
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
827 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
828 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
829
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
830 plugin_event(event_im_displayed_rcvd, gc, name, message, flags, mtime);
2104
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
831 g_free(name);
8d12ab6f798c [gaim-migrate @ 2114]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
832 g_free(message);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
833 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
834
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
835
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
836
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
837 void serv_got_update(struct gaim_connection *gc, char *name, int loggedin,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
838 int evil, time_t signon, time_t idle, int type, guint caps)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
839 {
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
840 struct buddy *b = find_buddy(gc->user, name);
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
841
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
842 if (signon && (gc->prpl->options & OPT_PROTO_CORRECT_TIME)) {
1435
82038dac0c36 [gaim-migrate @ 1445]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1434
diff changeset
843 char *tmp = g_strdup(normalize(name));
1995
b9457664ec78 [gaim-migrate @ 2005]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1981
diff changeset
844 if (!g_strcasecmp(tmp, normalize(gc->username))) {
2506
c494b0b6410e [gaim-migrate @ 2519]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2505
diff changeset
845 gc->evil = evil;
1995
b9457664ec78 [gaim-migrate @ 2005]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1981
diff changeset
846 gc->correction_time = (signon - gc->login_time);
b9457664ec78 [gaim-migrate @ 2005]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1981
diff changeset
847 update_idle_times();
b9457664ec78 [gaim-migrate @ 2005]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1981
diff changeset
848 }
1435
82038dac0c36 [gaim-migrate @ 1445]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1434
diff changeset
849 g_free(tmp);
82038dac0c36 [gaim-migrate @ 1445]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1434
diff changeset
850 }
82038dac0c36 [gaim-migrate @ 1445]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1434
diff changeset
851
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
852 if (!b) {
1376
06cf71686faf [gaim-migrate @ 1386]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1371
diff changeset
853 debug_printf("Error, no such buddy %s\n", name);
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
854 return;
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
855 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
856
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
857 /* This code will 'align' the name from the TOC */
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
858 /* server with what's in our record. We want to */
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
859 /* store things how THEY want it... */
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
860 if (strcmp(name, b->name)) {
2787
050506d3945f [gaim-migrate @ 2800]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2773
diff changeset
861 char *who = g_strdup(b->name);
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
862 g_snprintf(b->name, sizeof(b->name), "%s", name);
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2231
diff changeset
863 handle_buddy_rename(b, who);
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
864 gaim_blist_save();
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2231
diff changeset
865 g_free(who);
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
866 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
867
1575
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1555
diff changeset
868 if (!b->idle && idle) {
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
869 plugin_event(event_buddy_idle, gc, b->name);
1575
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1555
diff changeset
870 system_log(log_idle, gc, b, OPT_LOG_BUDDY_IDLE);
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1555
diff changeset
871 }
1140
425e6580ec09 [gaim-migrate @ 1150]
Rob Flynn <gaim@robflynn.com>
parents: 1102
diff changeset
872 if (b->idle && !idle) {
2131
ef072ae1b2b8 [gaim-migrate @ 2141]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2123
diff changeset
873 do_pounce(gc, b->name, OPT_POUNCE_UNIDLE);
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
874 plugin_event(event_buddy_unidle, gc, b->name);
1575
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1555
diff changeset
875 system_log(log_unidle, gc, b, OPT_LOG_BUDDY_IDLE);
1140
425e6580ec09 [gaim-migrate @ 1150]
Rob Flynn <gaim@robflynn.com>
parents: 1102
diff changeset
876 }
1000
66436e94d53f [gaim-migrate @ 1010]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 990
diff changeset
877
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
878 b->idle = idle;
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
879 b->evil = evil;
780
0513afaaf062 [gaim-migrate @ 790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 771
diff changeset
880
136
d8dee47cbeb7 [gaim-migrate @ 146]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 115
diff changeset
881 if ((b->uc & UC_UNAVAILABLE) && !(type & UC_UNAVAILABLE)) {
2131
ef072ae1b2b8 [gaim-migrate @ 2141]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2123
diff changeset
882 do_pounce(gc, b->name, OPT_POUNCE_UNAWAY);
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
883 plugin_event(event_buddy_back, gc, b->name);
1575
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1555
diff changeset
884 system_log(log_back, gc, b, OPT_LOG_BUDDY_AWAY);
780
0513afaaf062 [gaim-migrate @ 790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 771
diff changeset
885 } else if (!(b->uc & UC_UNAVAILABLE) && (type & UC_UNAVAILABLE)) {
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
886 plugin_event(event_buddy_away, gc, b->name);
1575
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1555
diff changeset
887 system_log(log_away, gc, b, OPT_LOG_BUDDY_AWAY);
136
d8dee47cbeb7 [gaim-migrate @ 146]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 115
diff changeset
888 }
780
0513afaaf062 [gaim-migrate @ 790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 771
diff changeset
889
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
890 b->uc = type;
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
891 if (caps)
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
892 b->caps = caps;
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
893
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
894 b->signon = signon;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
895
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
896 if (loggedin) {
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
897 if (!b->present) {
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
898 b->present = 1;
2131
ef072ae1b2b8 [gaim-migrate @ 2141]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2123
diff changeset
899 do_pounce(gc, b->name, OPT_POUNCE_SIGNON);
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
900 plugin_event(event_buddy_signon, gc, b->name);
1575
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1555
diff changeset
901 system_log(log_signon, gc, b, OPT_LOG_BUDDY_SIGNON);
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
902 }
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
903 } else {
1575
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1555
diff changeset
904 if (b->present) {
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
905 plugin_event(event_buddy_signoff, gc, b->name);
1575
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1555
diff changeset
906 system_log(log_signoff, gc, b, OPT_LOG_BUDDY_SIGNON);
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1555
diff changeset
907 }
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
908 b->present = 0;
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1026
diff changeset
909 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
910
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
911 set_buddy(gc, b);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
912 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
913
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
914
1100
efc7d10c7826 [gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1089
diff changeset
915 void serv_got_eviled(struct gaim_connection *gc, char *name, int lev)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
916 {
1771
a1214bda72f2 [gaim-migrate @ 1781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1769
diff changeset
917 char buf2[1024];
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
918
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3510
diff changeset
919 plugin_event(event_warned, gc, name, lev);
391
677e4414a83f [gaim-migrate @ 401]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 368
diff changeset
920
2646
5390988e70cd [gaim-migrate @ 2659]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2607
diff changeset
921 if (gc->evil >= lev) {
1771
a1214bda72f2 [gaim-migrate @ 1781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1769
diff changeset
922 gc->evil = lev;
a1214bda72f2 [gaim-migrate @ 1781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1769
diff changeset
923 return;
a1214bda72f2 [gaim-migrate @ 1781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1769
diff changeset
924 }
a1214bda72f2 [gaim-migrate @ 1781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1769
diff changeset
925
a1214bda72f2 [gaim-migrate @ 1781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1769
diff changeset
926 gc->evil = lev;
a1214bda72f2 [gaim-migrate @ 1781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1769
diff changeset
927
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
928 g_snprintf(buf2, sizeof(buf2),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
929 _("%s has just been warned by %s.\n"
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
930 "Your new warning level is %d%%"),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
931 gc->username,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
932 ((name == NULL)? _("an anonymous person") : name), lev);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
933
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
934 do_error_dialog(buf2, NULL, GAIM_INFO);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
935 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
936
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
937 void serv_got_typing(struct gaim_connection *gc, char *name, int timeout,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
938 int state) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
939
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
940 struct gaim_conversation *cnv = gaim_find_conversation(name);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
941 struct gaim_im *im;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
942
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
943 if (!cnv)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
944 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
945
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
946 im = GAIM_IM(cnv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
947
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
948 gaim_conversation_set_user(cnv, gc->user);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
949 gaim_im_set_typing_state(im, state);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
950 gaim_im_update_typing(im);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
951
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
952 plugin_event(event_got_typing, gc, name);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
953 do_pounce(gc, name, OPT_POUNCE_TYPING);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
954
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
955 if (timeout > 0)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
956 gaim_im_start_typing_timeout(im, timeout);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
957 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
958
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
959 void serv_got_typing_stopped(struct gaim_connection *gc, char *name) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
960
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
961 struct gaim_conversation *c = gaim_find_conversation(name);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
962 struct gaim_im *im;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
963
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
964 if (!c)
3787
3dae2482e786 [gaim-migrate @ 3927]
Nathan Walp <nwalp@pidgin.im>
parents: 3768
diff changeset
965 return;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
966
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
967 im = GAIM_IM(c);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
968
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
969 gaim_im_stop_typing_timeout(im);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
970 gaim_im_set_typing_state(im, NOT_TYPING);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
971 gaim_im_update_typing(im);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
972 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
973
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
974 static void close_invite(GtkWidget *w, GtkWidget *w2)
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
975 {
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
976 GList *str = gtk_object_get_user_data(GTK_OBJECT(w2));
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
977 GList *tmp = str;
1723
c953322c625e [gaim-migrate @ 1733]
Adam Fritzler <mid@auk.cx>
parents: 1722
diff changeset
978
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
979 while (tmp) {
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
980 g_free(tmp->data);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
981 tmp = tmp->next;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
982 }
1723
c953322c625e [gaim-migrate @ 1733]
Adam Fritzler <mid@auk.cx>
parents: 1722
diff changeset
983 if (str)
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
984 g_list_free(str);
1723
c953322c625e [gaim-migrate @ 1733]
Adam Fritzler <mid@auk.cx>
parents: 1722
diff changeset
985
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
986 gtk_widget_destroy(w2);
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
987 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
988
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
989 static void chat_invite_callback(GtkWidget *w, GtkWidget *w2)
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
990 {
964
6642a090394e [gaim-migrate @ 974]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 962
diff changeset
991 struct gaim_connection *g = (struct gaim_connection *)
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2359
diff changeset
992 gtk_object_get_user_data(GTK_OBJECT(GTK_DIALOG(w2)->vbox));
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
993 GList *str, *tmp;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
994
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
995 str = gtk_object_get_user_data(GTK_OBJECT(w2));
1723
c953322c625e [gaim-migrate @ 1733]
Adam Fritzler <mid@auk.cx>
parents: 1722
diff changeset
996
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
997 serv_join_chat(g, str);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
998
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
999 tmp = str;
1723
c953322c625e [gaim-migrate @ 1733]
Adam Fritzler <mid@auk.cx>
parents: 1722
diff changeset
1000
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1001 while (tmp) {
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1002 /* this is either a g_malloc'd char* or g_malloc'd int* */
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1003 g_free(tmp->data);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1004 tmp = tmp->next;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1005 }
1723
c953322c625e [gaim-migrate @ 1733]
Adam Fritzler <mid@auk.cx>
parents: 1722
diff changeset
1006 if (str)
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1007 g_list_free(str);
1723
c953322c625e [gaim-migrate @ 1733]
Adam Fritzler <mid@auk.cx>
parents: 1722
diff changeset
1008
c953322c625e [gaim-migrate @ 1733]
Adam Fritzler <mid@auk.cx>
parents: 1722
diff changeset
1009 gtk_widget_destroy(w2);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1010 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1011
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1012
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1013
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1014 void serv_got_chat_invite(struct gaim_connection *g, char *name,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1015 char *who, char *message, GList *data)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1016 {
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1017 GtkWidget *d;
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1018 GtkWidget *label;
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1019 GtkWidget *yesbtn;
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1020 GtkWidget *nobtn;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1021
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1022 char buf2[BUF_LONG];
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1023
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1024
1000
66436e94d53f [gaim-migrate @ 1010]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 990
diff changeset
1025 plugin_event(event_chat_invited, g, who, name, message);
391
677e4414a83f [gaim-migrate @ 401]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 368
diff changeset
1026
414
b2f9d5e4841a [gaim-migrate @ 424]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 411
diff changeset
1027 if (message)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1028 g_snprintf(buf2, sizeof(buf2),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1029 _("User '%s' invites %s to buddy chat room: '%s'\n%s"),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1030 who, g->username, name, message);
414
b2f9d5e4841a [gaim-migrate @ 424]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 411
diff changeset
1031 else
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1032 g_snprintf(buf2, sizeof(buf2),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1033 _("User '%s' invites %s to buddy chat room: '%s'\n"),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1034 who, g->username, name);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1035
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1036 d = gtk_dialog_new();
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1037 gtk_widget_realize(d);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1038
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1039
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1040 label = gtk_label_new(buf2);
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1041 gtk_widget_show(label);
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1042 yesbtn = picture_button(d, _("Yes"), ok_xpm);
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1043 nobtn = picture_button(d, _("No"), cancel_xpm);
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1044 gtk_widget_show(nobtn);
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1045 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->vbox), label, FALSE, FALSE, 5);
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1046 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), yesbtn, FALSE, FALSE, 5);
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1047 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), nobtn, FALSE, FALSE, 5);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1048
964
6642a090394e [gaim-migrate @ 974]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 962
diff changeset
1049 gtk_object_set_user_data(GTK_OBJECT(GTK_DIALOG(d)->vbox), g);
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1050 gtk_object_set_user_data(GTK_OBJECT(d), data);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1051
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1052
4309
13f53e2bb70a [gaim-migrate @ 4563]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4269
diff changeset
1053 gtk_window_set_title(GTK_WINDOW(d), _("Buddy chat invite"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1054 g_signal_connect(G_OBJECT(nobtn), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1055 G_CALLBACK(close_invite), d);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1056 g_signal_connect(G_OBJECT(yesbtn), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1057 G_CALLBACK(chat_invite_callback), d);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1058
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1059 gtk_widget_show(d);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1060 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1061
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1062 struct gaim_conversation *serv_got_joined_chat(struct gaim_connection *gc,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1063 int id, char *name)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1064 {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1065 struct gaim_conversation *b;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1066 struct gaim_chat *chat;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1067
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1068 b = gaim_conversation_new(GAIM_CONV_CHAT, name);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1069 chat = GAIM_CHAT(b);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1070
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1071 gc->buddy_chats = g_slist_append(gc->buddy_chats, b);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1072
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1073 gaim_chat_set_id(chat, id);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1074 gaim_conversation_set_user(b, gc->user);
3124
f5541973ea96 [gaim-migrate @ 3139]
Dennis Ristuccia <dristuccia@gmail.com>
parents: 3069
diff changeset
1075
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1076 if ((logging_options & OPT_LOG_CHATS) ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1077 find_log_info(gaim_conversation_get_name(b))) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1078
888
291963d9d83f [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
1079 FILE *fd;
291963d9d83f [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
1080 char *filename;
291963d9d83f [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
1081
291963d9d83f [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
1082 filename = (char *)malloc(100);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1083 g_snprintf(filename, 100, "%s.chat", gaim_conversation_get_name(b));
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1084
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1085 fd = open_log_file(filename, TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1086
1722
d64eabfd88e3 [gaim-migrate @ 1732]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1721
diff changeset
1087 if (fd) {
d64eabfd88e3 [gaim-migrate @ 1732]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1721
diff changeset
1088 if (!(logging_options & OPT_LOG_STRIP_HTML))
d64eabfd88e3 [gaim-migrate @ 1732]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1721
diff changeset
1089 fprintf(fd,
d64eabfd88e3 [gaim-migrate @ 1732]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1721
diff changeset
1090 "<HR><BR><H3 Align=Center> ---- New Conversation @ %s ----</H3><BR>\n",
d64eabfd88e3 [gaim-migrate @ 1732]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1721
diff changeset
1091 full_date());
d64eabfd88e3 [gaim-migrate @ 1732]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1721
diff changeset
1092 else
d64eabfd88e3 [gaim-migrate @ 1732]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1721
diff changeset
1093 fprintf(fd, "---- New Conversation @ %s ----\n", full_date());
1437
b51cd857866c [gaim-migrate @ 1447]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1435
diff changeset
1094
1722
d64eabfd88e3 [gaim-migrate @ 1732]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1721
diff changeset
1095 fclose(fd);
d64eabfd88e3 [gaim-migrate @ 1732]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1721
diff changeset
1096 }
888
291963d9d83f [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
1097 free(filename);
291963d9d83f [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
1098 }
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1099
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1100 gaim_window_show(gaim_conversation_get_window(b));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1101 gaim_window_switch_conversation(gaim_conversation_get_window(b),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1102 gaim_conversation_get_index(b));
1785
8b56bba0a5a5 [gaim-migrate @ 1795]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1775
diff changeset
1103
3710
fafc6dbd69ce [gaim-migrate @ 3843]
Etan Reisner <deryni@pidgin.im>
parents: 3620
diff changeset
1104 plugin_event(event_chat_join, gc, id, name);
fafc6dbd69ce [gaim-migrate @ 3843]
Etan Reisner <deryni@pidgin.im>
parents: 3620
diff changeset
1105
1785
8b56bba0a5a5 [gaim-migrate @ 1795]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1775
diff changeset
1106 return b;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1107 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1108
964
6642a090394e [gaim-migrate @ 974]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 962
diff changeset
1109 void serv_got_chat_left(struct gaim_connection *g, int id)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1110 {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1111 GSList *bcs;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1112 struct gaim_conversation *conv = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1113 struct gaim_chat *chat = NULL;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1114
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1115 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1116 conv = (struct gaim_conversation *)bcs->data;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1117
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1118 chat = GAIM_CHAT(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1119
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1120 if (gaim_chat_get_id(chat) == id)
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1121 break;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1122
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1123 conv = NULL;
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1124 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1125
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1126 if (!conv)
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1127 return;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1128
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1129 plugin_event(event_chat_leave, g, gaim_chat_get_id(chat));
391
677e4414a83f [gaim-migrate @ 401]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 368
diff changeset
1130
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1131 debug_printf("Leaving room %s.\n", gaim_conversation_get_name(conv));
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1132
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1133 g->buddy_chats = g_slist_remove(g->buddy_chats, conv);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1134
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1135 gaim_conversation_destroy(conv);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1136 }
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1137
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1138 void serv_got_chat_in(struct gaim_connection *g, int id, char *who,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1139 int whisper, char *message, time_t mtime)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1140 {
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1141 int w;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1142 GSList *bcs;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1143 struct gaim_conversation *conv = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1144 struct gaim_chat *chat = NULL;
2296
58690602d624 [gaim-migrate @ 2306]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2289
diff changeset
1145 char *buf;
3163
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1146 char *buffy, *angel;
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1147 int plugin_return;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1148
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1149 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1150 conv = (struct gaim_conversation *)bcs->data;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1151
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1152 chat = GAIM_CHAT(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1153
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1154 if (gaim_chat_get_id(chat) == id)
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1155 break;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1156
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1157 conv = NULL;
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1158 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1159
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1160 if (!conv)
1100
efc7d10c7826 [gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1089
diff changeset
1161 return;
391
677e4414a83f [gaim-migrate @ 401]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 368
diff changeset
1162
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1163 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1164 * Plugin stuff. We pass a char ** but we don't want to pass what's
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1165 * been given us by the prpls. so we create temp holders and pass those
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1166 * instead. It's basically just to avoid segfaults. Of course, if the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1167 * data is binary, plugins don't see it. Bitch all you want; i really
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1168 * don't want you to be dealing with it.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1169 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1170
3163
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1171 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG));
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1172 strcpy(buffy, message);
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1173 angel = g_strdup(who);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1174 plugin_return = plugin_event(event_chat_recv, g, gaim_chat_get_id(chat),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1175 &angel, &buffy);
3163
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1176
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1177 if (!buffy || !angel || plugin_return) {
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1178 if (buffy)
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1179 g_free(buffy);
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1180 if (angel)
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1181 g_free(angel);
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2359
diff changeset
1182 return;
3163
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1183 }
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1184 who = angel;
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1185 message = buffy;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1186
2296
58690602d624 [gaim-migrate @ 2306]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2289
diff changeset
1187 buf = g_malloc(MAX(strlen(message) * 2, 8192));
58690602d624 [gaim-migrate @ 2306]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2289
diff changeset
1188 strcpy(buf, message);
58690602d624 [gaim-migrate @ 2306]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2289
diff changeset
1189
2313
f7f7ff0b8d4a [gaim-migrate @ 2323]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2309
diff changeset
1190 if (convo_options & OPT_CONVO_SEND_LINKS)
2296
58690602d624 [gaim-migrate @ 2306]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2289
diff changeset
1191 linkify_text(buf);
1643
7a782e156daf [gaim-migrate @ 1653]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1587
diff changeset
1192
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1193 if (whisper)
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1194 w = WFLAG_WHISPER;
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1195 else
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1196 w = 0;
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1197
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1198 gaim_chat_write(chat, who, buf, w, mtime);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1199
3163
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1200 g_free(who);
8b5447fbbb9f [gaim-migrate @ 3179]
Sean Egan <seanegan@pidgin.im>
parents: 3136
diff changeset
1201 g_free(message);
2296
58690602d624 [gaim-migrate @ 2306]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2289
diff changeset
1202 g_free(buf);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1203 }
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1204
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1205 static void des_popup(GtkWidget *w, GtkWidget *window)
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1206 {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1207 if (w == window) {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1208 char *u = gtk_object_get_user_data(GTK_OBJECT(window));
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1209 g_free(u);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1210 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1211 gtk_widget_destroy(window);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1212 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1213
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1214 void serv_got_popup(char *msg, char *u, int wid, int hei)
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1215 {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1216 GtkWidget *window;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1217 GtkWidget *vbox;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1218 GtkWidget *sw;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1219 GtkWidget *text;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1220 GtkWidget *hbox;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1221 GtkWidget *button;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1222 char *url = g_strdup(u);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1223
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1224 GAIM_DIALOG(window);
4074
c69100a0ede9 [gaim-migrate @ 4289]
Robert McQueen <robot101@debian.org>
parents: 4072
diff changeset
1225 gtk_window_set_role(GTK_WINDOW(window), "popup");
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1226 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, TRUE);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1227 gtk_window_set_title(GTK_WINDOW(window), "Gaim - Popup");
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1228 gtk_container_set_border_width(GTK_CONTAINER(window), 5);
4162
7aca7e45e675 [gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents: 4124
diff changeset
1229 g_signal_connect(GTK_OBJECT(window), "destroy", G_CALLBACK(des_popup), window);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1230 gtk_object_set_user_data(GTK_OBJECT(window), url);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1231 gtk_widget_realize(window);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1232
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1233 vbox = gtk_vbox_new(FALSE, 5);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1234 gtk_container_add(GTK_CONTAINER(window), vbox);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1235
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1236 sw = gtk_scrolled_window_new(NULL, NULL);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1237 gtk_widget_set_usize(sw, wid, hei);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1238 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1239 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 5);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1240
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1241 text = gtk_imhtml_new(NULL, NULL);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1242 gtk_container_add(GTK_CONTAINER(sw), text);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1243 gaim_setup_imhtml(text);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1244
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1245 hbox = gtk_hbox_new(FALSE, 5);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1246 gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1247
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1248 button = picture_button(window, _("Close"), cancel_xpm);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1249 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5);
4162
7aca7e45e675 [gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents: 4124
diff changeset
1250 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(des_popup), window);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1251
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1252 button = picture_button(window, _("More Info"), tb_search_xpm);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1253 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5);
4162
7aca7e45e675 [gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents: 4124
diff changeset
1254 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(open_url), url);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1255
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1256 gtk_widget_show_all(window);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1257
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
1258 gtk_imhtml_append_text(GTK_IMHTML(text), msg, -1, GTK_IMHTML_NO_NEWLINE);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1259 }

mercurial