annotate src/server.c @ 3802:9bcb42faccc0

[gaim-migrate @ 3945] Rewrote show_im_dialog and show_info_dialog. Ported to gtkspell2. Gtkspell2 is a library available from gtkspell.sf.net. It requires the pspell library. If you want the "highlight misspelled words" feature to work, you must have this library installed. If installed, configure will detect it and link against it. committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Sat, 26 Oct 2002 06:41:13 +0000
parents 2567aabdf624
children b2ec492c9afe
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1 /*
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
2 * gaim
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
3 *
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
5 *
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
2846a03bda67 [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
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
9 * (at your option) any later version.
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
10 *
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
14 * GNU General Public License for more details.
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
15 *
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
19 *
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
20 */
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
21
349
b402a23f35df [gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 338
diff changeset
22 #ifdef HAVE_CONFIG_H
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2048
diff changeset
23 #include <config.h>
349
b402a23f35df [gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 338
diff changeset
24 #endif
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
25 #include <time.h>
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
26 #include <stdio.h>
1057
d50d3abb9eb7 [gaim-migrate @ 1067]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
27 #include <stdlib.h>
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
28 #include <string.h>
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
29 #include <sys/types.h>
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
30 #include <sys/stat.h>
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
31 #include <sys/time.h>
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
32 #include <unistd.h>
2123
56c4382f2909 [gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2108
diff changeset
33 #include <errno.h>
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
34 #include "gtkimhtml.h"
981
7e231bc0018a [gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 980
diff changeset
35 #include "prpl.h"
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
36 #include "multi.h"
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
37 #include "gaim.h"
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
38
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
39 #include "pixmaps/ok.xpm"
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
40 #include "pixmaps/cancel.xpm"
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
41 #include "pixmaps/tb_search.xpm"
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
42
980
82c5865f7cfe [gaim-migrate @ 990]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 978
diff changeset
43 void serv_login(struct aim_user *user)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
44 {
981
7e231bc0018a [gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 980
diff changeset
45 struct prpl *p = find_prpl(user->protocol);
2531
93b50fa8f410 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2506
diff changeset
46
3606
33643170bfde [gaim-migrate @ 3719]
Sean Egan <seanegan@gmail.com>
parents: 3601
diff changeset
47 if (user->gc != NULL || p == NULL)
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
48 return;
2531
93b50fa8f410 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2506
diff changeset
49
3572
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
50 #ifdef GAIM_PLUGINS
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
51 if (p->plug) { /* This protocol is a plugin */
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
52 prpl_accounts[p->protocol]++;
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
53 debug_printf("Protocol %s is now being used by %d connections.\n", p->name, prpl_accounts[p->protocol]);
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
54 if (!p->plug->handle) { /* But the protocol isn't yet loaded. */
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
55 unload_protocol(p); /* Unload it to free the old name and options */
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
56 if (load_prpl(p)) /* And load the plugin */
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
57 return;
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
58 }
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
59 }
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
60 #endif
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
61
3606
33643170bfde [gaim-migrate @ 3719]
Sean Egan <seanegan@gmail.com>
parents: 3601
diff changeset
62 if (p->login) {
3789
fb519383a058 [gaim-migrate @ 3929]
Rob Flynn <gaim@robflynn.com>
parents: 3787
diff changeset
63 if (!strlen(user->password) && !(p->options & OPT_PROTO_NO_PASSWORD) &&
fb519383a058 [gaim-migrate @ 3929]
Rob Flynn <gaim@robflynn.com>
parents: 3787
diff changeset
64 !(p->options & OPT_PROTO_PASSWORD_OPTIONAL)) {
3427
8fa61405af2b [gaim-migrate @ 3453]
Sean Egan <seanegan@gmail.com>
parents: 3348
diff changeset
65 do_error_dialog(_("Please enter your password"), NULL, GAIM_ERROR);
2531
93b50fa8f410 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2506
diff changeset
66 return;
93b50fa8f410 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2506
diff changeset
67 }
93b50fa8f410 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2506
diff changeset
68
3572
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
69 debug_printf(PACKAGE " " VERSION " logging in %s using %s\n", user->username, p->name);
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents: 3474
diff changeset
70 user->connecting = TRUE;
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
71 connecting_count++;
3570
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3524
diff changeset
72 debug_printf("connecting_count: %d\n", connecting_count);
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
73 plugin_event(event_connecting, user);
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
74 p->login(user);
423
0d4e80bdb96b [gaim-migrate @ 433]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 414
diff changeset
75 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
76 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
77
2382
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
78 static gboolean send_keepalive(gpointer d)
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
79 {
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
80 struct gaim_connection *gc = d;
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
81 if (gc->prpl && gc->prpl->keepalive)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
82 gc->prpl->keepalive(gc);
2382
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
83 return TRUE;
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
84 }
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
85
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
86 static void update_keepalive(struct gaim_connection *gc, gboolean on)
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
87 {
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
88 if (on && !gc->keepalive) {
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
89 debug_printf("allowing NOP\n");
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
90 gc->keepalive = g_timeout_add(60000, send_keepalive, gc);
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
91 } else if (!on && gc->keepalive > 0) {
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
92 debug_printf("removing NOP\n");
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
93 g_source_remove(gc->keepalive);
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
94 gc->keepalive = 0;
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
95 }
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
96 }
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
97
3607
851f421a0f8e [gaim-migrate @ 3720]
Sean Egan <seanegan@gmail.com>
parents: 3606
diff changeset
98 static gboolean delayed_unload(void *handle) {
851f421a0f8e [gaim-migrate @ 3720]
Sean Egan <seanegan@gmail.com>
parents: 3606
diff changeset
99 g_module_close(handle);
851f421a0f8e [gaim-migrate @ 3720]
Sean Egan <seanegan@gmail.com>
parents: 3606
diff changeset
100 return FALSE;
851f421a0f8e [gaim-migrate @ 3720]
Sean Egan <seanegan@gmail.com>
parents: 3606
diff changeset
101 }
851f421a0f8e [gaim-migrate @ 3720]
Sean Egan <seanegan@gmail.com>
parents: 3606
diff changeset
102
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
103 void serv_close(struct gaim_connection *gc)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
104 {
3572
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
105 struct prpl *prpl;
2017
eee309c0de93 [gaim-migrate @ 2027]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2001
diff changeset
106 while (gc->buddy_chats) {
eee309c0de93 [gaim-migrate @ 2027]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2001
diff changeset
107 struct conversation *b = gc->buddy_chats->data;
1063
e1408fb04c36 [gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1057
diff changeset
108 gc->buddy_chats = g_slist_remove(gc->buddy_chats, b);
e1408fb04c36 [gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1057
diff changeset
109 b->gc = NULL;
2546
d392e9b867e9 [gaim-migrate @ 2559]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2531
diff changeset
110 update_buttons_by_protocol(b);
1063
e1408fb04c36 [gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1057
diff changeset
111 }
e1408fb04c36 [gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1057
diff changeset
112
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
113 if (gc->idle_timer > 0)
2131
acc11216ec5d [gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2123
diff changeset
114 g_source_remove(gc->idle_timer);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
115 gc->idle_timer = 0;
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
116
2382
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
117 update_keepalive(gc, FALSE);
1050
c4baa5509558 [gaim-migrate @ 1060]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1038
diff changeset
118
981
7e231bc0018a [gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 980
diff changeset
119 if (gc->prpl && gc->prpl->close)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
120 gc->prpl->close(gc);
3572
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
121
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
122 prpl = gc->prpl;
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
123 account_offline(gc);
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
124 destroy_gaim_conn(gc);
3572
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
125
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
126 #ifdef GAIM_PLUGINS
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
127 if (prpl->plug) { /* This is a plugin */
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
128 prpl_accounts[prpl->protocol]--;
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
129 debug_printf("Prpl %s is now being used by %d accounts\n", prpl->name, prpl_accounts[prpl->protocol]);
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
130 if (prpl_accounts[prpl->protocol] == 0) { /* We don't need this protocol anymore */
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
131 debug_printf("Throwing out prpl %s\n", prpl->name);
3607
851f421a0f8e [gaim-migrate @ 3720]
Sean Egan <seanegan@gmail.com>
parents: 3606
diff changeset
132 g_timeout_add(0,delayed_unload, prpl->plug->handle);
3572
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
133 prpl->plug->handle = NULL;
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
134 }
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
135 }
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
136 #endif
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
137
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
138 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
139
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
140 void serv_touch_idle(struct gaim_connection *gc)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
141 {
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
142 /* Are we idle? If so, not anymore */
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
143 if (gc->is_idle > 0) {
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
144 gc->is_idle = 0;
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
145 serv_set_idle(gc, 0);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
146 }
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
147 time(&gc->lastsent);
1834
0695f52c06da [gaim-migrate @ 1844]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1815
diff changeset
148 if (gc->is_auto_away)
0695f52c06da [gaim-migrate @ 1844]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1815
diff changeset
149 check_idle(gc);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
150 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
151
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
152 void serv_finish_login(struct gaim_connection *gc)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
153 {
1051
713b0e14e0a9 [gaim-migrate @ 1061]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1050
diff changeset
154 if (strlen(gc->user->user_info)) {
1976
24aed1c31342 [gaim-migrate @ 1986]
Rob Flynn <gaim@robflynn.com>
parents: 1938
diff changeset
155 /* g_malloc(strlen(gc->user->user_info) * 4);
24aed1c31342 [gaim-migrate @ 1986]
Rob Flynn <gaim@robflynn.com>
parents: 1938
diff changeset
156 strncpy_withhtml(buf, gc->user->user_info, strlen(gc->user->user_info) * 4); */
1292
cb84b5c6d9ab [gaim-migrate @ 1302]
Rob Flynn <gaim@robflynn.com>
parents: 1263
diff changeset
157 serv_set_info(gc, gc->user->user_info);
1976
24aed1c31342 [gaim-migrate @ 1986]
Rob Flynn <gaim@robflynn.com>
parents: 1938
diff changeset
158 /* g_free(buf); */
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
159 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
160
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
161 if (gc->idle_timer > 0)
2131
acc11216ec5d [gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2123
diff changeset
162 g_source_remove(gc->idle_timer);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
163
2381
427ccd7dfdd2 [gaim-migrate @ 2394]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
164 gc->idle_timer = g_timeout_add(20000, check_idle, gc);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
165 serv_touch_idle(gc);
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
166
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
167 time(&gc->login_time);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
168
1995
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
169 if (gc->prpl->options & OPT_PROTO_CORRECT_TIME)
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
170 serv_add_buddy(gc, gc->username);
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
171
1772
896432d66303 [gaim-migrate @ 1782]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1771
diff changeset
172 update_keepalive(gc, TRUE);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
173 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
174
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
175 /* This should return the elapsed time in seconds in which Gaim will not send
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
176 * typing notifications.
3001
87fff45fa36b [gaim-migrate @ 3014]
Sean Egan <seanegan@gmail.com>
parents: 2993
diff changeset
177 * if it returns zero, it will not send any more typing notifications
87fff45fa36b [gaim-migrate @ 3014]
Sean Egan <seanegan@gmail.com>
parents: 2993
diff changeset
178 * typing is a flag - TRUE for typing, FALSE for stopped typing */
87fff45fa36b [gaim-migrate @ 3014]
Sean Egan <seanegan@gmail.com>
parents: 2993
diff changeset
179 int serv_send_typing(struct gaim_connection *g, char *name, int typing) {
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
180 if (g && g->prpl && g->prpl->send_typing)
3001
87fff45fa36b [gaim-migrate @ 3014]
Sean Egan <seanegan@gmail.com>
parents: 2993
diff changeset
181 return g->prpl->send_typing(g, name, typing);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
182 else return 0;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
183 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
184
3033
1143524a2eaf [gaim-migrate @ 3046]
Sean Egan <seanegan@gmail.com>
parents: 3002
diff changeset
185 int serv_send_im(struct gaim_connection *gc, char *name, char *message, int len, int flags)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
186 {
2123
56c4382f2909 [gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2108
diff changeset
187 int val = -EINVAL;
3601
81d514f109de [gaim-migrate @ 3703]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
188 struct conversation *cnv = find_conversation(name);
981
7e231bc0018a [gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 980
diff changeset
189 if (gc->prpl && gc->prpl->send_im)
3033
1143524a2eaf [gaim-migrate @ 3046]
Sean Egan <seanegan@gmail.com>
parents: 3002
diff changeset
190 val = gc->prpl->send_im(gc, name, message, len, flags);
94
9f6ce50ffb78 [gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 79
diff changeset
191
2231
8c4ff1a368bd [gaim-migrate @ 2241]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
192 if (!(flags & IM_FLAG_AWAY))
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
193 serv_touch_idle(gc);
2123
56c4382f2909 [gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2108
diff changeset
194
3601
81d514f109de [gaim-migrate @ 3703]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
195 if (cnv && cnv->type_again_timeout)
81d514f109de [gaim-migrate @ 3703]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
196 gtk_timeout_remove(cnv->type_again_timeout);
81d514f109de [gaim-migrate @ 3703]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
197
2123
56c4382f2909 [gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2108
diff changeset
198 return val;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
199 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
200
1032
643a4d81c18a [gaim-migrate @ 1042]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1030
diff changeset
201 void serv_get_info(struct gaim_connection *g, char *name)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
202 {
1006
0a4d0ed65e17 [gaim-migrate @ 1016]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
203 if (g && g->prpl && g->prpl->get_info)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
204 g->prpl->get_info(g, name);
249
810c595258c8 [gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 248
diff changeset
205 }
810c595258c8 [gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 248
diff changeset
206
2773
a0fd8f91e294 [gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2768
diff changeset
207 void serv_get_away(struct gaim_connection *g, char *name)
a0fd8f91e294 [gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2768
diff changeset
208 {
a0fd8f91e294 [gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2768
diff changeset
209 if (g && g->prpl && g->prpl->get_away)
a0fd8f91e294 [gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2768
diff changeset
210 g->prpl->get_away(g, name);
a0fd8f91e294 [gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2768
diff changeset
211 }
a0fd8f91e294 [gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2768
diff changeset
212
1032
643a4d81c18a [gaim-migrate @ 1042]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1030
diff changeset
213 void serv_get_dir(struct gaim_connection *g, char *name)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
214 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
215 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->get_dir)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
216 g->prpl->get_dir(g, name);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
217 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
218
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
219 void serv_set_dir(struct gaim_connection *g, const char *first, const char *middle, const char *last, const char *maiden,
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
220 const char *city, const char *state, const char *country, int web)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
221 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
222 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->set_dir)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
223 g->prpl->set_dir(g, first, middle, last, maiden, city, state, country, web);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
224 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
225
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
226 void serv_dir_search(struct gaim_connection *g, const char *first, const char *middle, const char *last, const char *maiden,
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
227 const char *city, const char *state, const char *country, const char *email)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
228 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
229 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->dir_search)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
230 g->prpl->dir_search(g, first, middle, last, maiden, city, state, country, email);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
231 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
232
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
233
1401
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1376
diff changeset
234 void serv_set_away(struct gaim_connection *gc, char *state, char *message)
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1376
diff changeset
235 {
1938
c9db54d8d8dc [gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1937
diff changeset
236 if (gc && gc->prpl && gc->prpl->set_away) {
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
237 char *buf = NULL;
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
238 if (message) {
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
239 buf = g_malloc(strlen(message) + 1);
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2681
diff changeset
240 if (gc->flags & OPT_CONN_HTML)
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
241 strncpy(buf, message, strlen(message) + 1);
1938
c9db54d8d8dc [gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1937
diff changeset
242 else
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
243 strncpy_nohtml(buf, message, strlen(message) + 1);
1937
6a9109c79034 [gaim-migrate @ 1947]
Rob Flynn <gaim@robflynn.com>
parents: 1920
diff changeset
244 }
1938
c9db54d8d8dc [gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1937
diff changeset
245
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
246 gc->prpl->set_away(gc, state, buf);
2000
ae11844fa2b1 [gaim-migrate @ 2010]
Rob Flynn <gaim@robflynn.com>
parents: 1995
diff changeset
247
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
248 plugin_event(event_away, gc, state, buf);
1938
c9db54d8d8dc [gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1937
diff changeset
249
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
250 if (buf)
1938
c9db54d8d8dc [gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1937
diff changeset
251 g_free(buf);
1404
96e93119268d [gaim-migrate @ 1414]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1401
diff changeset
252 }
1937
6a9109c79034 [gaim-migrate @ 1947]
Rob Flynn <gaim@robflynn.com>
parents: 1920
diff changeset
253
1938
c9db54d8d8dc [gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1937
diff changeset
254 system_log(log_away, gc, NULL, OPT_LOG_BUDDY_AWAY | OPT_LOG_MY_SIGNON);
1401
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1376
diff changeset
255 }
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1376
diff changeset
256
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1376
diff changeset
257 void serv_set_away_all(char *message)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
258 {
976
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
259 GSList *c = connections;
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
260 struct gaim_connection *g;
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
261
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
262 while (c) {
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
263 g = (struct gaim_connection *)c->data;
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
264 serv_set_away(g, GAIM_AWAY_CUSTOM, message);
976
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
265 c = c->next;
423
0d4e80bdb96b [gaim-migrate @ 433]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 414
diff changeset
266 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
267 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
268
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
269 void serv_set_info(struct gaim_connection *g, char *info)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
270 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
271 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->set_info) {
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
272 if (plugin_event(event_set_info, g, info))
3456
b48065e52337 [gaim-migrate @ 3503]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
273 return;
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
274 g->prpl->set_info(g, info);
1749
5bfc58c20e82 [gaim-migrate @ 1759]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1734
diff changeset
275 }
237
6ced2f1c8b24 [gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 200
diff changeset
276 }
6ced2f1c8b24 [gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 200
diff changeset
277
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
278 void serv_change_passwd(struct gaim_connection *g, const char *orig, const char *new)
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
279 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
280 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->change_passwd)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
281 g->prpl->change_passwd(g, orig, new);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
282 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
283
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
284 void serv_add_buddy(struct gaim_connection *g, const char *name)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
285 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
286 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->add_buddy)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
287 g->prpl->add_buddy(g, name);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
288 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
289
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
290 void serv_add_buddies(struct gaim_connection *g, GList *buddies)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
291 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
292 if (g && g_slist_find(connections, g) && g->prpl) {
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
293 if (g->prpl->add_buddies)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
294 g->prpl->add_buddies(g, buddies);
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
295 else if (g->prpl->add_buddy)
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
296 while (buddies) {
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
297 g->prpl->add_buddy(g, buddies->data);
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
298 buddies = buddies->next;
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
299 }
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
300 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
301 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
302
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
303
2681
37d80035e77f [gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2662
diff changeset
304 void serv_remove_buddy(struct gaim_connection *g, char *name, char *group)
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
305 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
306 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->remove_buddy)
2681
37d80035e77f [gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2662
diff changeset
307 g->prpl->remove_buddy(g, name, group);
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
308 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
309
2681
37d80035e77f [gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2662
diff changeset
310 void serv_remove_buddies(struct gaim_connection *gc, GList *g, char *group)
2334
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
311 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
312 if (!g_slist_find(connections, gc))
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
313 return;
2334
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
314 if (!gc->prpl)
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
315 return; /* how the hell did that happen? */
2334
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
316 if (gc->prpl->remove_buddies)
2681
37d80035e77f [gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2662
diff changeset
317 gc->prpl->remove_buddies(gc, g, group);
2334
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
318 else {
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
319 while (g) {
2681
37d80035e77f [gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2662
diff changeset
320 serv_remove_buddy(gc, g->data, group);
2334
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
321 g = g->next;
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
322 }
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
323 }
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
324 }
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
325
3136
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
326 /*
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
327 * Set buddy's alias on server roster/list
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
328 */
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
329 void serv_alias_buddy(struct buddy *b)
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
330 {
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
331 if(b && b->gc && b->gc->prpl && b->gc->prpl->alias_buddy) {
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
332 b->gc->prpl->alias_buddy(b->gc, b->name);
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
333 }
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
334 }
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
335
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
336 /*
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
337 * Move a buddy from one group to another on server.
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
338 *
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
339 * Note: For now we'll not deal with changing gc's at the same time, but
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
340 * it should be possible. Probably needs to be done, someday.
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
341 */
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
342 void serv_move_buddy(struct buddy *b, struct group *og, struct group *ng)
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
343 {
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
344 if(b && b->gc && og && og->gc && ng && ng->gc) {
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
345 /*
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
346 * If there are no connection changes...
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
347 */
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
348 if(b->gc == og->gc && b->gc == ng->gc && ng->gc == og->gc) {
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
349 if(b->gc->prpl && b->gc->prpl->group_buddy) {
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
350 b->gc->prpl->group_buddy(b->gc, b->name, og->name, ng->name);
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
351 }
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
352 }
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
353 }
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
354 }
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
355
3348
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
356 /*
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
357 * Rename a group on server roster/list.
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
358 */
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
359 void serv_rename_group(struct gaim_connection *g, struct group *old_group, const char *new_name)
3348
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
360 {
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
361 if (g && g->prpl && old_group && new_name) {
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
362 GList *tobemoved = NULL;
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
363 GSList *original;
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
364
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
365 for (original=old_group->members; original; original=g_slist_next(original))
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
366 tobemoved = g_list_append(tobemoved, ((struct buddy *)original->data)->name);
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
367
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
368 if (g->prpl->rename_group) {
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
369 /* prpl's might need to check if the group already
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
370 * exists or not, and handle that differently */
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
371 g->prpl->rename_group(g, old_group->name, new_name, tobemoved);
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
372 } else {
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
373 serv_remove_buddies(g, tobemoved, old_group->name);
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
374 serv_add_buddies(g, tobemoved);
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
375 }
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
376
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
377 g_list_free(tobemoved);
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
378 }
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
379 }
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
380
1038
daad2440a642 [gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
381 void serv_add_permit(struct gaim_connection *g, char *name)
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
382 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
383 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->add_permit)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
384 g->prpl->add_permit(g, name);
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
385 }
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
386
1038
daad2440a642 [gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
387 void serv_add_deny(struct gaim_connection *g, char *name)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
388 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
389 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->add_deny)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
390 g->prpl->add_deny(g, name);
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
391 }
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
392
1038
daad2440a642 [gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
393 void serv_rem_permit(struct gaim_connection *g, char *name)
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
394 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
395 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->rem_permit)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
396 g->prpl->rem_permit(g, name);
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
397 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
398
1038
daad2440a642 [gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
399 void serv_rem_deny(struct gaim_connection *g, char *name)
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
400 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
401 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->rem_deny)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
402 g->prpl->rem_deny(g, name);
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
403 }
678
c72f58814e9f [gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 660
diff changeset
404
1038
daad2440a642 [gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
405 void serv_set_permit_deny(struct gaim_connection *g)
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
406 {
1145
cd96ca1aed02 [gaim-migrate @ 1155]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1140
diff changeset
407 /* this is called when either you import a buddy list, and make lots of changes that way,
cd96ca1aed02 [gaim-migrate @ 1155]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1140
diff changeset
408 * or when the user toggles the permit/deny mode in the prefs. In either case you should
cd96ca1aed02 [gaim-migrate @ 1155]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1140
diff changeset
409 * probably be resetting and resending the permit/deny info when you get this. */
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
410 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->set_permit_deny)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
411 g->prpl->set_permit_deny(g);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
412 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
413
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1015
diff changeset
414
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
415 void serv_set_idle(struct gaim_connection *g, int time)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
416 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
417 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->set_idle)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
418 g->prpl->set_idle(g, time);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
419 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
420
976
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
421 void serv_warn(struct gaim_connection *g, char *name, int anon)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
422 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
423 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->warn)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
424 g->prpl->warn(g, name, anon);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
425 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
426
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
427 void serv_join_chat(struct gaim_connection *g, GList *data)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
428 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
429 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->join_chat)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
430 g->prpl->join_chat(g, data);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
431 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
432
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
433 void serv_chat_invite(struct gaim_connection *g, int id, const char *message, const char *name)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
434 {
2359
ad56a93661fc [gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2345
diff changeset
435 char *buffy = message && *message ? g_strdup(message) : NULL;
ad56a93661fc [gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2345
diff changeset
436 plugin_event(event_chat_send_invite, g, (void *)id, name, &buffy);
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
437 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->chat_invite)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
438 g->prpl->chat_invite(g, id, buffy, name);
2359
ad56a93661fc [gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2345
diff changeset
439 if (buffy)
ad56a93661fc [gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2345
diff changeset
440 g_free(buffy);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
441 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
442
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
443 void serv_chat_leave(struct gaim_connection *g, int id)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
444 {
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
445 if (!g_slist_find(connections, g))
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
446 return;
1015
c3579d03a0c1 [gaim-migrate @ 1025]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1013
diff changeset
447
981
7e231bc0018a [gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 980
diff changeset
448 if (g->prpl && g->prpl->chat_leave)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
449 g->prpl->chat_leave(g, id);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
450 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
451
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
452 void serv_chat_whisper(struct gaim_connection *g, int id, char *who, char *message)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
453 {
981
7e231bc0018a [gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 980
diff changeset
454 if (g->prpl && g->prpl->chat_whisper)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
455 g->prpl->chat_whisper(g, id, who, message);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
456 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
457
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2131
diff changeset
458 int serv_chat_send(struct gaim_connection *g, int id, char *message)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
459 {
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2131
diff changeset
460 int val = -EINVAL;
981
7e231bc0018a [gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 980
diff changeset
461 if (g->prpl && g->prpl->chat_send)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
462 val = g->prpl->chat_send(g, id, message);
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
463 serv_touch_idle(g);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2131
diff changeset
464 return val;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
465 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
466
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
467 int find_queue_row_by_name(char *name)
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
468 {
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
469 GSList *templist;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
470 char *temp;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
471 int i;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
472
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
473 templist = message_queue;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
474
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
475 for (i = 0; i < GTK_CLIST(clistqueue)->rows; i++) {
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
476 gtk_clist_get_text(GTK_CLIST(clistqueue), i, 0, &temp);
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
477
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
478 if (!strcmp(name, temp))
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
479 return i;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
480 }
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
481
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
482 return -1;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
483 }
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
484
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
485 int find_queue_total_by_name(char *name)
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
486 {
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
487 GSList *templist;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
488 int i = 0;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
489
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
490 templist = message_queue;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
491
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
492 while (templist) {
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
493 struct queued_message *qm = (struct queued_message *)templist->data;
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
494 if ((qm->flags & WFLAG_RECV) && !strcmp(name, qm->name))
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
495 i++;
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
496
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
497 templist = templist->next;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
498 }
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
499
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
500 return i;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
501 }
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
502
2435
b4f2a53c0ee5 [gaim-migrate @ 2448]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2382
diff changeset
503 struct queued_away_response {
b4f2a53c0ee5 [gaim-migrate @ 2448]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2382
diff changeset
504 char name[80];
b4f2a53c0ee5 [gaim-migrate @ 2448]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2382
diff changeset
505 time_t sent_away;
b4f2a53c0ee5 [gaim-migrate @ 2448]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2382
diff changeset
506 };
b4f2a53c0ee5 [gaim-migrate @ 2448]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2382
diff changeset
507
1774
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
508 struct queued_away_response *find_queued_away_response_by_name(char *name)
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
509 {
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
510 GSList *templist;
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
511 struct queued_away_response *qar;
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
512
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
513 templist = away_time_queue;
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
514
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
515 while (templist) {
1774
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
516 qar = (struct queued_away_response *)templist->data;
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
517
1774
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
518 if (!strcmp(name, qar->name))
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
519 return qar;
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
520
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
521 templist = templist->next;
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
522 }
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
523
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
524 return NULL;
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
525 }
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
526
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
527 /* woo. i'm actually going to comment this function. isn't that fun. make sure to follow along, kids */
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
528 void serv_got_im(struct gaim_connection *gc, char *name, char *message, guint32 flags, time_t mtime, gint len)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
529 {
1981
7739e648a28a [gaim-migrate @ 1991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1976
diff changeset
530 char *buffy;
7739e648a28a [gaim-migrate @ 1991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1976
diff changeset
531 char *angel;
7739e648a28a [gaim-migrate @ 1991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1976
diff changeset
532 int plugin_return;
2273
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
533 int away = 0;
1981
7739e648a28a [gaim-migrate @ 1991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1976
diff changeset
534
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
535 struct conversation *cnv;
764
a566fc987db9 [gaim-migrate @ 774]
Todd Kulesza <fflewddur>
parents: 752
diff changeset
536 int new_conv = 0;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
537
2273
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
538 /* pay no attention to the man behind the curtain.
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
539 *
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
540 * the reason i feel okay with this is because it's useful to some plugins.
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
541 * Gaim doesn't ever use it itself. Besides, it's not entirely accurate; it's
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
542 * possible to have false negatives with most protocols. Also with some it's
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
543 * easy to have false positives as well. So if you're a plugin author, don't
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
544 * rely on this, still do your own checks. but uh. it's a start. */
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
545 if (flags & IM_FLAG_GAIMUSER)
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
546 debug_printf("%s is a gaim user.\n", name);
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
547
2106
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
548 /* we should update the conversation window buttons and menu, if it exists. */
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
549 cnv = find_conversation(name);
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
550 if (cnv)
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
551 set_convo_gc(cnv, gc);
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
552 /* we do the new_conv check here in case any plugins decide to create it */
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
553 else
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
554 new_conv = 1;
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
555
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
556 /* plugin stuff. we pass a char ** but we don't want to pass what's been given us
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
557 * by the prpls. so we create temp holders and pass those instead. it's basically
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
558 * just to avoid segfaults. of course, if the data is binary, plugins don't see it.
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
559 * bitch all you want; i really don't want you to be dealing with it. */
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
560 if (len < 0) {
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
561 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG));
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
562 strcpy(buffy, message);
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
563 angel = g_strdup(name);
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
564 plugin_return = plugin_event(event_im_recv, gc, &angel, &buffy, &flags);
1339
6b31e7948b05 [gaim-migrate @ 1349]
Rob Flynn <gaim@robflynn.com>
parents: 1336
diff changeset
565
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
566 if (!buffy || !angel || plugin_return) {
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
567 if (buffy)
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
568 g_free(buffy);
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
569 if (angel)
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
570 g_free(angel);
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
571 return;
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
572 }
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
573 name = angel;
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
574 message = buffy;
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
575 } else {
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
576 name = g_strdup(name);
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
577 message = g_memdup(message, len);
1100
f168625b63fe [gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1089
diff changeset
578 }
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
579
3792
2567aabdf624 [gaim-migrate @ 3932]
Rob Flynn <gaim@robflynn.com>
parents: 3789
diff changeset
580 #if 0
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
581 /* TiK, using TOC, sends an automated message in order to get your away message. Now,
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
582 * this is one of the biggest hacks I think I've seen. But, in order to be nice to
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
583 * TiK, we're going to give users the option to ignore it. */
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
584 if ((away_options & OPT_AWAY_TIK_HACK) && gc->away && strlen(gc->away) && (len < 0) &&
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
585 !strcmp(message, ">>>Automated Message: Getting Away Message<<<")) {
831
97f1ae636ed7 [gaim-migrate @ 841]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 809
diff changeset
586 char *tmpmsg = stylize(awaymessage->message, MSG_LEN);
3033
1143524a2eaf [gaim-migrate @ 3046]
Sean Egan <seanegan@gmail.com>
parents: 3002
diff changeset
587 serv_send_im(gc, name, tmpmsg, -1, IM_FLAG_AWAY);
831
97f1ae636ed7 [gaim-migrate @ 841]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 809
diff changeset
588 g_free(tmpmsg);
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
589 g_free(name);
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
590 g_free(message);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
591 return;
736
d05d746384a7 [gaim-migrate @ 746]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 710
diff changeset
592 }
3792
2567aabdf624 [gaim-migrate @ 3932]
Rob Flynn <gaim@robflynn.com>
parents: 3789
diff changeset
593 #endif
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
594
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
595 /* if you can't figure this out, stop reading right now.
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
596 * "we're not worthy! we're not worthy!" */
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
597 if ((len < 0) && (convo_options & OPT_CONVO_SEND_LINKS))
616
874ed877c854 [gaim-migrate @ 626]
Rob Flynn <gaim@robflynn.com>
parents: 592
diff changeset
598 linkify_text(message);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
599
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
600 /* um. when we call write_to_conv with the message we received, it's nice to pass whether
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
601 * or not it was an auto-response. so if it was an auto-response, we set the appropriate
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
602 * flag. this is just so prpls don't have to know about WFLAG_* (though some do anyway) */
2273
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
603 if (flags & IM_FLAG_AWAY)
764
a566fc987db9 [gaim-migrate @ 774]
Todd Kulesza <fflewddur>
parents: 752
diff changeset
604 away = WFLAG_AUTO;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
605
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
606 /* alright. two cases for how to handle this. either we're away or we're not. if we're not,
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
607 * then it's easy. if we are, then there are three or four different ways of handling it
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
608 * and different things we have to do for each. */
1404
96e93119268d [gaim-migrate @ 1414]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1401
diff changeset
609 if (gc->away) {
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
610 time_t t;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
611 char *tmpmsg;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
612 struct buddy *b = find_buddy(gc, name);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
613 char *alias = b ? b->show : name;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
614 int row;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
615 struct queued_away_response *qar;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
616
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
617 time(&t);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
618
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
619 /* either we're going to queue it or not. Because of the way awayness currently
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
620 * works, this is fucked up. it's possible for an account to be away without the
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
621 * imaway dialog being shown. in fact, it's possible for *all* the accounts to be
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
622 * away without the imaway dialog being shown. so in order for this to be queued
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
623 * properly, we have to make sure that the imaway dialog actually exists, first. */
2313
bd9d403fb15b [gaim-migrate @ 2323]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2309
diff changeset
624 if (!cnv && clistqueue && (away_options & OPT_AWAY_QUEUE)) {
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
625 /* alright, so we're going to queue it. neat, eh? :) so first we create
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
626 * something to store the message, and add it to our queue. Then we update
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
627 * the away dialog to indicate that we've queued something. */
1769
68eddf56f419 [gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1768
diff changeset
628 struct queued_message *qm;
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
629
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
630 qm = g_new0(struct queued_message, 1);
1774
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
631 g_snprintf(qm->name, sizeof(qm->name), "%s", name);
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
632 qm->message = g_memdup(message, len == -1 ? strlen(message) + 1 : len);
1769
68eddf56f419 [gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1768
diff changeset
633 qm->gc = gc;
68eddf56f419 [gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1768
diff changeset
634 qm->tm = mtime;
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
635 qm->flags = WFLAG_RECV | away;
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
636 qm->len = len;
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
637 message_queue = g_slist_append(message_queue, qm);
1768
9aae465eeb6e [gaim-migrate @ 1778]
Rob Flynn <gaim@robflynn.com>
parents: 1764
diff changeset
638
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
639 row = find_queue_row_by_name(qm->name);
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
640
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
641 if (row >= 0) {
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
642 char number[32];
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
643 int qtotal;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
644
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
645 qtotal = find_queue_total_by_name(qm->name);
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
646 g_snprintf(number, 32, _("(%d messages)"), qtotal);
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
647 gtk_clist_set_text(GTK_CLIST(clistqueue), row, 1, number);
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
648 } else {
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
649 gchar *heh[2];
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
650
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
651 heh[0] = qm->name;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
652 heh[1] = _("(1 message)");
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
653 gtk_clist_append(GTK_CLIST(clistqueue), heh);
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
654 }
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
655 } else {
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
656 /* ok, so we're not queuing it. well then, we'll try to handle it normally.
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
657 * Some people think that ignoring it is a perfectly acceptible way to handle
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
658 * it. i think they're on crack, but hey, that's why it's optional. */
2313
bd9d403fb15b [gaim-migrate @ 2323]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2309
diff changeset
659 if (away_options & OPT_AWAY_DISCARD) {
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
660 g_free(name);
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
661 g_free(message);
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
662 return;
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
663 }
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
664
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
665 /* ok, so we're not ignoring it. make sure the conversation exists and is
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
666 * updated (partly handled above already), play the receive sound (sound.c
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
667 * will take care of not playing while away), and then write it to the
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
668 * convo window. */
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
669 if (cnv == NULL) {
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
670 cnv = new_conversation(name);
1898
73d73939f698 [gaim-migrate @ 1908]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1834
diff changeset
671 set_convo_gc(cnv, gc);
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
672 }
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
673 if (new_conv && (sound_options & OPT_SOUND_FIRST_RCV))
3060
4f2f12bf4408 [gaim-migrate @ 3074]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
674 play_sound(SND_FIRST_RECEIVE);
4f2f12bf4408 [gaim-migrate @ 3074]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
675 else if (cnv->makesound)
4f2f12bf4408 [gaim-migrate @ 3074]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
676 play_sound(SND_RECEIVE);
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
677
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
678 write_to_conv(cnv, message, away | WFLAG_RECV, NULL, mtime, len);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
679 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
680
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
681 /* regardless of whether we queue it or not, we should send an auto-response. That is,
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
682 * of course, unless the horse.... no wait. */
2906
538c58b43eff [gaim-migrate @ 2919]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2856
diff changeset
683 if ((away_options & OPT_AWAY_NO_AUTO_RESP) || !strlen(gc->away) ||
538c58b43eff [gaim-migrate @ 2919]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2856
diff changeset
684 ((away_options & OPT_AWAY_IDLE_RESP) && !gc->is_idle)) {
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
685 g_free(name);
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
686 g_free(message);
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
687 return;
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
688 }
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
689
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
690 /* this used to be based on the conversation window. but um, if you went away, and
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
691 * someone sent you a message and got your auto-response, and then you closed the
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
692 * window, and then the sent you another one, they'd get the auto-response back
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
693 * too soon. besides that, we need to keep track of this even if we've got a queue.
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
694 * so the rest of this block is just the auto-response, if necessary */
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
695 qar = find_queued_away_response_by_name(name);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
696 if (!qar) {
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
697 qar = (struct queued_away_response *)g_new0(struct queued_away_response, 1);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
698 g_snprintf(qar->name, sizeof(qar->name), "%s", name);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
699 qar->sent_away = 0;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
700 away_time_queue = g_slist_append(away_time_queue, qar);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
701 }
2906
538c58b43eff [gaim-migrate @ 2919]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2856
diff changeset
702 if ((t - qar->sent_away) < away_resend) {
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
703 g_free(name);
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
704 g_free(message);
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
705 return;
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
706 }
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
707 qar->sent_away = t;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
708
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
709 /* apply default fonts and colors */
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
710 tmpmsg = stylize(gc->away, MSG_LEN);
3033
1143524a2eaf [gaim-migrate @ 3046]
Sean Egan <seanegan@gmail.com>
parents: 3002
diff changeset
711 serv_send_im(gc, name, away_subs(tmpmsg, alias), -1, IM_FLAG_AWAY);
2313
bd9d403fb15b [gaim-migrate @ 2323]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2309
diff changeset
712 if (!cnv && clistqueue && (away_options & OPT_AWAY_QUEUE)) {
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
713 struct queued_message *qm;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
714 qm = g_new0(struct queued_message, 1);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
715 g_snprintf(qm->name, sizeof(qm->name), "%s", name);
1785
f4ae086c746b [gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1775
diff changeset
716 qm->message = g_strdup(away_subs(tmpmsg, alias));
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
717 qm->gc = gc;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
718 qm->tm = mtime;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
719 qm->flags = WFLAG_SEND | WFLAG_AUTO;
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2937
diff changeset
720 qm->len = -1;
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
721 message_queue = g_slist_append(message_queue, qm);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
722 } else if (cnv != NULL)
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
723 write_to_conv(cnv, away_subs(tmpmsg, alias), WFLAG_SEND | WFLAG_AUTO, NULL,
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
724 mtime, len);
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
725 g_free(tmpmsg);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
726 } else {
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
727 /* we're not away. this is easy. if the convo window doesn't exist, create and update
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
728 * it (if it does exist it was updated earlier), then play a sound indicating we've
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
729 * received it and then display it. easy. */
3521
f3981f94494a [gaim-migrate @ 3594]
Sean Egan <seanegan@gmail.com>
parents: 3517
diff changeset
730
f3981f94494a [gaim-migrate @ 3594]
Sean Egan <seanegan@gmail.com>
parents: 3517
diff changeset
731 if (new_conv && (sound_options & OPT_SOUND_FIRST_RCV))
f3981f94494a [gaim-migrate @ 3594]
Sean Egan <seanegan@gmail.com>
parents: 3517
diff changeset
732 play_sound(SND_FIRST_RECEIVE);
3524
6f9610016503 [gaim-migrate @ 3597]
Sean Egan <seanegan@gmail.com>
parents: 3523
diff changeset
733 else if (new_conv || cnv->makesound)
3521
f3981f94494a [gaim-migrate @ 3594]
Sean Egan <seanegan@gmail.com>
parents: 3517
diff changeset
734 play_sound(SND_RECEIVE);
f3981f94494a [gaim-migrate @ 3594]
Sean Egan <seanegan@gmail.com>
parents: 3517
diff changeset
735
3524
6f9610016503 [gaim-migrate @ 3597]
Sean Egan <seanegan@gmail.com>
parents: 3523
diff changeset
736 if (away_options & OPT_AWAY_QUEUE_UNREAD && !find_conversation(name) && docklet_count) {
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
737 /* We're gonna queue it up and wait for the user to ask for it... probably
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
738 * by clicking the docklet or windows tray icon. */
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
739 struct queued_message *qm;
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
740 qm = g_new0(struct queued_message, 1);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
741 g_snprintf(qm->name, sizeof(qm->name), "%s", name);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
742 qm->message = g_strdup(message);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
743 qm->gc = gc;
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
744 qm->tm = mtime;
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
745 qm->flags = away | WFLAG_RECV;
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
746 qm->len = len;
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
747 unread_message_queue = g_slist_append(unread_message_queue, qm);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
748 } else {
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
749 if (cnv == NULL) {
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
750 cnv = new_conversation(name);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
751 set_convo_gc(cnv, gc);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
752 }
3521
f3981f94494a [gaim-migrate @ 3594]
Sean Egan <seanegan@gmail.com>
parents: 3517
diff changeset
753
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
754 set_convo_name(cnv, name);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
755
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
756 write_to_conv(cnv, message, away | WFLAG_RECV, NULL, mtime, len);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
757 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
758 }
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
759 plugin_event(event_im_displayed_rcvd, gc, name, message, flags, mtime);
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
760 g_free(name);
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
761 g_free(message);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
762 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
763
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
764
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
765
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
766 void serv_got_update(struct gaim_connection *gc, char *name, int loggedin, int evil, time_t signon,
2920
4ed6fb39870b [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2906
diff changeset
767 time_t idle, int type, guint caps)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
768 {
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
769 struct buddy *b = find_buddy(gc, name);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
770
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
771 if (signon && (gc->prpl->options & OPT_PROTO_CORRECT_TIME)) {
1435
f16e17d42b43 [gaim-migrate @ 1445]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1434
diff changeset
772 char *tmp = g_strdup(normalize(name));
1995
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
773 if (!g_strcasecmp(tmp, normalize(gc->username))) {
2506
072f253d5939 [gaim-migrate @ 2519]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2505
diff changeset
774 gc->evil = evil;
1995
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
775 gc->correction_time = (signon - gc->login_time);
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
776 update_idle_times();
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
777 }
1435
f16e17d42b43 [gaim-migrate @ 1445]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1434
diff changeset
778 g_free(tmp);
f16e17d42b43 [gaim-migrate @ 1445]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1434
diff changeset
779 }
f16e17d42b43 [gaim-migrate @ 1445]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1434
diff changeset
780
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
781 if (!b) {
1376
730a1a19b4cc [gaim-migrate @ 1386]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1371
diff changeset
782 debug_printf("Error, no such buddy %s\n", name);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
783 return;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
784 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
785
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
786 /* This code will 'align' the name from the TOC */
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
787 /* server with what's in our record. We want to */
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
788 /* store things how THEY want it... */
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
789 if (strcmp(name, b->name)) {
2787
feea7103a235 [gaim-migrate @ 2800]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2773
diff changeset
790 char *who = g_strdup(b->name);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
791 g_snprintf(b->name, sizeof(b->name), "%s", name);
2273
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
792 handle_buddy_rename(b, who);
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
793 g_free(who);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
794 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
795
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
796 if (!b->idle && idle) {
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
797 plugin_event(event_buddy_idle, gc, b->name);
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
798 system_log(log_idle, gc, b, OPT_LOG_BUDDY_IDLE);
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
799 }
1140
249b040f6a83 [gaim-migrate @ 1150]
Rob Flynn <gaim@robflynn.com>
parents: 1102
diff changeset
800 if (b->idle && !idle) {
2131
acc11216ec5d [gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2123
diff changeset
801 do_pounce(gc, b->name, OPT_POUNCE_UNIDLE);
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
802 plugin_event(event_buddy_unidle, gc, b->name);
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
803 system_log(log_unidle, gc, b, OPT_LOG_BUDDY_IDLE);
1140
249b040f6a83 [gaim-migrate @ 1150]
Rob Flynn <gaim@robflynn.com>
parents: 1102
diff changeset
804 }
1000
91b7377e7b45 [gaim-migrate @ 1010]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 990
diff changeset
805
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
806 b->idle = idle;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
807 b->evil = evil;
780
c714def9cebb [gaim-migrate @ 790]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 771
diff changeset
808
136
4e91b92f91a7 [gaim-migrate @ 146]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 115
diff changeset
809 if ((b->uc & UC_UNAVAILABLE) && !(type & UC_UNAVAILABLE)) {
2131
acc11216ec5d [gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2123
diff changeset
810 do_pounce(gc, b->name, OPT_POUNCE_UNAWAY);
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
811 plugin_event(event_buddy_back, gc, b->name);
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
812 system_log(log_back, gc, b, OPT_LOG_BUDDY_AWAY);
780
c714def9cebb [gaim-migrate @ 790]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 771
diff changeset
813 } else if (!(b->uc & UC_UNAVAILABLE) && (type & UC_UNAVAILABLE)) {
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
814 plugin_event(event_buddy_away, gc, b->name);
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
815 system_log(log_away, gc, b, OPT_LOG_BUDDY_AWAY);
136
4e91b92f91a7 [gaim-migrate @ 146]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 115
diff changeset
816 }
780
c714def9cebb [gaim-migrate @ 790]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 771
diff changeset
817
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
818 b->uc = type;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
819 if (caps)
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
820 b->caps = caps;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
821
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
822 b->signon = signon;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
823
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
824 if (loggedin) {
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
825 if (!b->present) {
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
826 b->present = 1;
2131
acc11216ec5d [gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2123
diff changeset
827 do_pounce(gc, b->name, OPT_POUNCE_SIGNON);
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
828 plugin_event(event_buddy_signon, gc, b->name);
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
829 system_log(log_signon, gc, b, OPT_LOG_BUDDY_SIGNON);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
830 }
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
831 } else {
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
832 if (b->present) {
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
833 plugin_event(event_buddy_signoff, gc, b->name);
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
834 system_log(log_signoff, gc, b, OPT_LOG_BUDDY_SIGNON);
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
835 }
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
836 b->present = 0;
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
837 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
838
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
839 set_buddy(gc, b);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
840 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
841
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
842
1100
f168625b63fe [gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1089
diff changeset
843 void serv_got_eviled(struct gaim_connection *gc, char *name, int lev)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
844 {
1771
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
845 char buf2[1024];
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
846
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
847 plugin_event(event_warned, gc, name, lev);
391
be408b41c172 [gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 368
diff changeset
848
2646
2555683e8dc8 [gaim-migrate @ 2659]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2607
diff changeset
849 if (gc->evil >= lev) {
1771
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
850 gc->evil = lev;
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
851 return;
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
852 }
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
853
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
854 gc->evil = lev;
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
855
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
856 g_snprintf(buf2, sizeof(buf2), "%s has just been warned by %s.\nYour new warning level is %d%%",
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
857 gc->username, ((name == NULL)? "an anonymous person" : name), lev);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
858
3427
8fa61405af2b [gaim-migrate @ 3453]
Sean Egan <seanegan@gmail.com>
parents: 3348
diff changeset
859 do_error_dialog(buf2, NULL, GAIM_INFO);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
860 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
861
3768
f53370197bb9 [gaim-migrate @ 3907]
Sean Egan <seanegan@gmail.com>
parents: 3749
diff changeset
862 void serv_got_typing(struct gaim_connection *gc, char *name, int timeout, int state) {
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
863 struct conversation *cnv = find_conversation(name);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
864 if (cnv) {
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
865 set_convo_gc(cnv, gc);
3787
aed40c72c818 [gaim-migrate @ 3927]
Luke Schierer <lschiere@pidgin.im>
parents: 3768
diff changeset
866 cnv->typing_state = state;
aed40c72c818 [gaim-migrate @ 3927]
Luke Schierer <lschiere@pidgin.im>
parents: 3768
diff changeset
867 update_convo_status(cnv);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
868 } else return;
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
869 plugin_event(event_got_typing, gc, name);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
870 do_pounce(gc, name, OPT_POUNCE_TYPING);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
871 if (timeout > 0) {
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
872 if (cnv->typing_timeout)
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
873 gtk_timeout_remove (cnv->typing_timeout);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
874 cnv->typing_timeout = gtk_timeout_add(timeout * 1000,(GtkFunction)reset_typing,
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
875 g_strdup(name));
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
876 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
877 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
878
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
879 void serv_got_typing_stopped(struct gaim_connection *gc, char *name) {
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
880 struct conversation *c = find_conversation(name);
3787
aed40c72c818 [gaim-migrate @ 3927]
Luke Schierer <lschiere@pidgin.im>
parents: 3768
diff changeset
881 if(!c)
aed40c72c818 [gaim-migrate @ 3927]
Luke Schierer <lschiere@pidgin.im>
parents: 3768
diff changeset
882 return;
aed40c72c818 [gaim-migrate @ 3927]
Luke Schierer <lschiere@pidgin.im>
parents: 3768
diff changeset
883 if (c->typing_timeout) {
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
884 gtk_timeout_remove (c->typing_timeout);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
885 }
3787
aed40c72c818 [gaim-migrate @ 3927]
Luke Schierer <lschiere@pidgin.im>
parents: 3768
diff changeset
886 c->typing_state = NOT_TYPING;
aed40c72c818 [gaim-migrate @ 3927]
Luke Schierer <lschiere@pidgin.im>
parents: 3768
diff changeset
887 update_convo_status(c);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
888 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
889
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
890 static void close_invite(GtkWidget *w, GtkWidget *w2)
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
891 {
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
892 GList *str = gtk_object_get_user_data(GTK_OBJECT(w2));
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
893 GList *tmp = str;
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
894
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
895 while (tmp) {
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
896 g_free(tmp->data);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
897 tmp = tmp->next;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
898 }
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
899 if (str)
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
900 g_list_free(str);
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
901
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
902 gtk_widget_destroy(w2);
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
903 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
904
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
905 static void chat_invite_callback(GtkWidget *w, GtkWidget *w2)
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
906 {
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
907 struct gaim_connection *g = (struct gaim_connection *)
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
908 gtk_object_get_user_data(GTK_OBJECT(GTK_DIALOG(w2)->vbox));
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
909 GList *str, *tmp;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
910
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
911 str = gtk_object_get_user_data(GTK_OBJECT(w2));
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
912
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
913 serv_join_chat(g, str);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
914
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
915 tmp = str;
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
916
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
917 while (tmp) {
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
918 /* this is either a g_malloc'd char* or g_malloc'd int* */
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
919 g_free(tmp->data);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
920 tmp = tmp->next;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
921 }
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
922 if (str)
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
923 g_list_free(str);
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
924
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
925 gtk_widget_destroy(w2);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
926 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
927
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
928
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
929
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
930 void serv_got_chat_invite(struct gaim_connection *g, char *name, char *who, char *message, GList *data)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
931 {
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
932 GtkWidget *d;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
933 GtkWidget *label;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
934 GtkWidget *yesbtn;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
935 GtkWidget *nobtn;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
936
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
937 char buf2[BUF_LONG];
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
938
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
939
1000
91b7377e7b45 [gaim-migrate @ 1010]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 990
diff changeset
940 plugin_event(event_chat_invited, g, who, name, message);
391
be408b41c172 [gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 368
diff changeset
941
414
f9dc74875833 [gaim-migrate @ 424]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 411
diff changeset
942 if (message)
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
943 g_snprintf(buf2, sizeof(buf2), "User '%s' invites %s to buddy chat room: '%s'\n%s", who,
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
944 g->username, name, message);
414
f9dc74875833 [gaim-migrate @ 424]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 411
diff changeset
945 else
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
946 g_snprintf(buf2, sizeof(buf2), "User '%s' invites %s to buddy chat room: '%s'\n", who,
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
947 g->username, name);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
948
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
949 d = gtk_dialog_new();
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
950 gtk_widget_realize(d);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
951
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
952
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
953 label = gtk_label_new(buf2);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
954 gtk_widget_show(label);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
955 yesbtn = picture_button(d, _("Yes"), ok_xpm);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
956 nobtn = picture_button(d, _("No"), cancel_xpm);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
957 gtk_widget_show(nobtn);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
958 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->vbox), label, FALSE, FALSE, 5);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
959 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), yesbtn, FALSE, FALSE, 5);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
960 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), nobtn, FALSE, FALSE, 5);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
961
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
962 gtk_object_set_user_data(GTK_OBJECT(GTK_DIALOG(d)->vbox), g);
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
963 gtk_object_set_user_data(GTK_OBJECT(d), data);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
964
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
965
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
966 gtk_window_set_title(GTK_WINDOW(d), "Buddy chat invite");
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
967 gtk_signal_connect(GTK_OBJECT(nobtn), "clicked", GTK_SIGNAL_FUNC(close_invite), d);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
968 gtk_signal_connect(GTK_OBJECT(yesbtn), "clicked", GTK_SIGNAL_FUNC(chat_invite_callback), d);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
969
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
970
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
971 gtk_widget_show(d);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
972 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
973
1785
f4ae086c746b [gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1775
diff changeset
974 struct conversation *serv_got_joined_chat(struct gaim_connection *gc, int id, char *name)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
975 {
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
976 struct conversation *b;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
977
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
978 b = (struct conversation *)g_new0(struct conversation, 1);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
979 gc->buddy_chats = g_slist_append(gc->buddy_chats, b);
1692
a312d64a995d [gaim-migrate @ 1702]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1659
diff changeset
980 chats = g_list_append(chats, b);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
981
472
6a92cd7322cc [gaim-migrate @ 482]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 447
diff changeset
982 b->is_chat = TRUE;
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
983 b->ignored = NULL;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
984 b->in_room = NULL;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
985 b->id = id;
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
986 b->gc = gc;
3124
f69328f7a603 [gaim-migrate @ 3139]
Sean Egan <seanegan@gmail.com>
parents: 3069
diff changeset
987 b->send_history = g_list_append(NULL, NULL);
1479
4c62ead808a2 [gaim-migrate @ 1489]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1456
diff changeset
988 b->history = g_string_new("");
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
989 g_snprintf(b->name, 80, "%s", name);
3124
f69328f7a603 [gaim-migrate @ 3139]
Sean Egan <seanegan@gmail.com>
parents: 3069
diff changeset
990
3457
222e23f91092 [gaim-migrate @ 3505]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
991 if ((logging_options & OPT_LOG_CHATS) || find_log_info(b->name)) {
888
38ffd1faa31a [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
992 FILE *fd;
38ffd1faa31a [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
993 char *filename;
38ffd1faa31a [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
994
38ffd1faa31a [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
995 filename = (char *)malloc(100);
1212
a487b35ac05a [gaim-migrate @ 1222]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1191
diff changeset
996 g_snprintf(filename, 100, "%s.chat", b->name);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
997
3457
222e23f91092 [gaim-migrate @ 3505]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
998 fd = open_log_file(filename, b->is_chat);
1722
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
999 if (fd) {
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
1000 if (!(logging_options & OPT_LOG_STRIP_HTML))
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
1001 fprintf(fd,
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
1002 "<HR><BR><H3 Align=Center> ---- New Conversation @ %s ----</H3><BR>\n",
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
1003 full_date());
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
1004 else
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
1005 fprintf(fd, "---- New Conversation @ %s ----\n", full_date());
1437
1f0660a2c893 [gaim-migrate @ 1447]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1435
diff changeset
1006
1722
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
1007 fclose(fd);
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
1008 }
888
38ffd1faa31a [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
1009 free(filename);
38ffd1faa31a [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
1010 }
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1011
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1012 show_new_buddy_chat(b);
1785
f4ae086c746b [gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1775
diff changeset
1013
3710
03ba413ca20b [gaim-migrate @ 3843]
Luke Schierer <lschiere@pidgin.im>
parents: 3620
diff changeset
1014 plugin_event(event_chat_join, gc, id, name);
03ba413ca20b [gaim-migrate @ 3843]
Luke Schierer <lschiere@pidgin.im>
parents: 3620
diff changeset
1015
1785
f4ae086c746b [gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1775
diff changeset
1016 return b;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1017 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1018
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
1019 void serv_got_chat_left(struct gaim_connection *g, int id)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1020 {
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1021 GSList *bcs = g->buddy_chats;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1022 struct conversation *b = NULL;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1023
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1024
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1025 while (bcs) {
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1026 b = (struct conversation *)bcs->data;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1027 if (id == b->id) {
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1028 break;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1029 }
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1030 b = NULL;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1031 bcs = bcs->next;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1032 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1033
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1034 if (!b)
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1035 return;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1036
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
1037 plugin_event(event_chat_leave, g, b->id);
391
be408b41c172 [gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 368
diff changeset
1038
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1235
diff changeset
1039 debug_printf("Leaving room %s.\n", b->name);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1040
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1041 g->buddy_chats = g_slist_remove(g->buddy_chats, b);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1042
2017
eee309c0de93 [gaim-migrate @ 2027]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2001
diff changeset
1043 delete_chat(b);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1044 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1045
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
1046 void serv_got_chat_in(struct gaim_connection *g, int id, char *who, int whisper, char *message,
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
1047 time_t mtime)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1048 {
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1049 int w;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1050 GSList *bcs = g->buddy_chats;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1051 struct conversation *b = NULL;
2296
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1052 char *buf;
3163
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1053 char *buffy, *angel;
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1054 int plugin_return;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1055
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1056 while (bcs) {
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1057 b = (struct conversation *)bcs->data;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1058 if (id == b->id)
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1059 break;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1060 bcs = bcs->next;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1061 b = NULL;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1062
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1063 }
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1064 if (!b)
1100
f168625b63fe [gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1089
diff changeset
1065 return;
391
be408b41c172 [gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 368
diff changeset
1066
3163
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1067
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1068 /* plugin stuff. we pass a char ** but we don't want to pass what's been given us
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1069 * by the prpls. so we create temp holders and pass those instead. it's basically
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1070 * just to avoid segfaults. of course, if the data is binary, plugins don't see it.
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1071 * bitch all you want; i really don't want you to be dealing with it. */
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1072
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1073 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG));
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1074 strcpy(buffy, message);
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1075 angel = g_strdup(who);
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
1076 plugin_return = plugin_event(event_chat_recv, g, b->id, &angel, &buffy);
3163
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1077
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1078 if (!buffy || !angel || plugin_return) {
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1079 if (buffy)
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1080 g_free(buffy);
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1081 if (angel)
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1082 g_free(angel);
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
1083 return;
3163
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1084 }
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1085 who = angel;
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1086 message = buffy;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1087
2296
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1088 buf = g_malloc(MAX(strlen(message) * 2, 8192));
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1089 strcpy(buf, message);
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1090
2313
bd9d403fb15b [gaim-migrate @ 2323]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2309
diff changeset
1091 if (convo_options & OPT_CONVO_SEND_LINKS)
2296
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1092 linkify_text(buf);
1643
d7e380618fd5 [gaim-migrate @ 1653]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1587
diff changeset
1093
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1094 if (whisper)
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1095 w = WFLAG_WHISPER;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1096 else
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1097 w = 0;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1098
2296
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1099 chat_write(b, who, w, buf, mtime);
3163
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1100 g_free(who);
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1101 g_free(message);
2296
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1102 g_free(buf);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1103 }
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1104
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1105 static void des_popup(GtkWidget *w, GtkWidget *window)
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1106 {
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1107 if (w == window) {
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1108 char *u = gtk_object_get_user_data(GTK_OBJECT(window));
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1109 g_free(u);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1110 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1111 gtk_widget_destroy(window);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1112 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1113
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1114 void serv_got_popup(char *msg, char *u, int wid, int hei)
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1115 {
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1116 GtkWidget *window;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1117 GtkWidget *vbox;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1118 GtkWidget *sw;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1119 GtkWidget *text;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1120 GtkWidget *hbox;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1121 GtkWidget *button;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1122 char *url = g_strdup(u);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1123
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1124 GAIM_DIALOG(window);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1125 gtk_window_set_wmclass(GTK_WINDOW(window), "popup", "Gaim");
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1126 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, TRUE);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1127 gtk_window_set_title(GTK_WINDOW(window), "Gaim - Popup");
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1128 gtk_container_set_border_width(GTK_CONTAINER(window), 5);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1129 gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(des_popup), window);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1130 gtk_object_set_user_data(GTK_OBJECT(window), url);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1131 gtk_widget_realize(window);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1132
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1133 vbox = gtk_vbox_new(FALSE, 5);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1134 gtk_container_add(GTK_CONTAINER(window), vbox);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1135
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1136 sw = gtk_scrolled_window_new(NULL, NULL);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1137 gtk_widget_set_usize(sw, wid, hei);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1138 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1139 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 5);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1140
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1141 text = gtk_imhtml_new(NULL, NULL);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1142 gtk_container_add(GTK_CONTAINER(sw), text);
2906
538c58b43eff [gaim-migrate @ 2919]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2856
diff changeset
1143 GTK_LAYOUT(text)->hadjustment->step_increment = 10.0;
538c58b43eff [gaim-migrate @ 2919]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2856
diff changeset
1144 GTK_LAYOUT(text)->vadjustment->step_increment = 10.0;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1145 gaim_setup_imhtml(text);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1146
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1147 hbox = gtk_hbox_new(FALSE, 5);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1148 gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1149
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1150 button = picture_button(window, _("Close"), cancel_xpm);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1151 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1152 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(des_popup), window);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1153
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1154 button = picture_button(window, _("More Info"), tb_search_xpm);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1155 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5);
2827
51999a36c0b1 [gaim-migrate @ 2840]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2787
diff changeset
1156 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(open_url), url);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1157
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1158 gtk_widget_show_all(window);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1159
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
1160 gtk_imhtml_append_text(GTK_IMHTML(text), msg, -1, GTK_IMHTML_NO_NEWLINE);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1161 }