annotate src/server.c @ 3752:b32474e522fa

[gaim-migrate @ 3890] From: "William T. Mahan" <wtm2@duke.edu> This patch, against CVS HEAD, fixes three bugs in Oscar File Transfer support. I can split it up further if desired. * Send a null checksum when initiating a file transfer, which fixes "files don't match" warnings produced by some versions of WinAIM; add a compile-time option to actually compute the checksum, which is slow but necessary when sending to some Mac clients. * Don't allow sending files to oneself, because it causes all kinds of subtle problems and it's not useful. * Don't crash when there is an error writing to the output file when receiving. From: "William T. Mahan" <wtm2@duke.edu> This patch 2 of 3, which applies on top of the first, adds support for reverse connections for Oscar File Transfer, the lack of which has been the biggest complaint so far. Reverse connections are used by newer AIM clients when there is difficulty verifying the IP of the sender. From: "William T. Mahan" <wtm2@duke.edu> This patch 3 of 3, which applies on top of the first 2, removes the alarm() and sigaction() calls that were added by my original FT patch to detect transfer timeouts. Besides apparently not working on Windows, they involved a lot of ugly code to handle a special case. My new approach is to add destructors that can called when SNACs are freed; a timeout is detected when a request SNAC is cleaned up before the transfer is accepted. Although this touches several files, it is more generic than the old method. I tried to implement this in an unintrusive manner, so that there is little preformance penalty for SNACs that do not use destructors. My first two patches should work fine without this. If there are any objections to the third patch, I ask that the first two patches be applied, in which case I will set up a SourceForge page for this one. committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Sat, 19 Oct 2002 05:22:30 +0000
parents ddc4bfd2c825
children f53370197bb9
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) {
2531
93b50fa8f410 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2506
diff changeset
63 if (!strlen(user->password) && !(p->options & OPT_PROTO_NO_PASSWORD)) {
3427
8fa61405af2b [gaim-migrate @ 3453]
Sean Egan <seanegan@gmail.com>
parents: 3348
diff changeset
64 do_error_dialog(_("Please enter your password"), NULL, GAIM_ERROR);
2531
93b50fa8f410 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2506
diff changeset
65 return;
93b50fa8f410 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2506
diff changeset
66 }
93b50fa8f410 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2506
diff changeset
67
3572
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
68 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
69 user->connecting = TRUE;
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
70 connecting_count++;
3570
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3524
diff changeset
71 debug_printf("connecting_count: %d\n", connecting_count);
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
72 plugin_event(event_connecting, user);
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
73 p->login(user);
423
0d4e80bdb96b [gaim-migrate @ 433]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 414
diff changeset
74 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
75 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
76
2382
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
77 static gboolean send_keepalive(gpointer d)
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
78 {
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
79 struct gaim_connection *gc = d;
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
80 if (gc->prpl && gc->prpl->keepalive)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
81 gc->prpl->keepalive(gc);
2382
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
82 return TRUE;
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
83 }
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 static void update_keepalive(struct gaim_connection *gc, gboolean on)
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
86 {
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
87 if (on && !gc->keepalive) {
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
88 debug_printf("allowing NOP\n");
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
89 gc->keepalive = g_timeout_add(60000, send_keepalive, gc);
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
90 } else if (!on && gc->keepalive > 0) {
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
91 debug_printf("removing NOP\n");
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
92 g_source_remove(gc->keepalive);
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
93 gc->keepalive = 0;
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
94 }
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
3607
851f421a0f8e [gaim-migrate @ 3720]
Sean Egan <seanegan@gmail.com>
parents: 3606
diff changeset
97 static gboolean delayed_unload(void *handle) {
851f421a0f8e [gaim-migrate @ 3720]
Sean Egan <seanegan@gmail.com>
parents: 3606
diff changeset
98 g_module_close(handle);
851f421a0f8e [gaim-migrate @ 3720]
Sean Egan <seanegan@gmail.com>
parents: 3606
diff changeset
99 return FALSE;
851f421a0f8e [gaim-migrate @ 3720]
Sean Egan <seanegan@gmail.com>
parents: 3606
diff changeset
100 }
851f421a0f8e [gaim-migrate @ 3720]
Sean Egan <seanegan@gmail.com>
parents: 3606
diff changeset
101
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
102 void serv_close(struct gaim_connection *gc)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
103 {
3572
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
104 struct prpl *prpl;
2017
eee309c0de93 [gaim-migrate @ 2027]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2001
diff changeset
105 while (gc->buddy_chats) {
eee309c0de93 [gaim-migrate @ 2027]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2001
diff changeset
106 struct conversation *b = gc->buddy_chats->data;
1063
e1408fb04c36 [gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1057
diff changeset
107 gc->buddy_chats = g_slist_remove(gc->buddy_chats, b);
e1408fb04c36 [gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1057
diff changeset
108 b->gc = NULL;
2546
d392e9b867e9 [gaim-migrate @ 2559]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2531
diff changeset
109 update_buttons_by_protocol(b);
1063
e1408fb04c36 [gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1057
diff changeset
110 }
e1408fb04c36 [gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1057
diff changeset
111
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
112 if (gc->idle_timer > 0)
2131
acc11216ec5d [gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2123
diff changeset
113 g_source_remove(gc->idle_timer);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
114 gc->idle_timer = 0;
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
115
2382
569ae9f2bb89 [gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2381
diff changeset
116 update_keepalive(gc, FALSE);
1050
c4baa5509558 [gaim-migrate @ 1060]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1038
diff changeset
117
981
7e231bc0018a [gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 980
diff changeset
118 if (gc->prpl && gc->prpl->close)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
119 gc->prpl->close(gc);
3572
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
120
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
121 prpl = gc->prpl;
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
122 account_offline(gc);
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
123 destroy_gaim_conn(gc);
3572
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
124
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
125 #ifdef GAIM_PLUGINS
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
126 if (prpl->plug) { /* This is a plugin */
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
127 prpl_accounts[prpl->protocol]--;
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
128 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
129 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
130 debug_printf("Throwing out prpl %s\n", prpl->name);
3607
851f421a0f8e [gaim-migrate @ 3720]
Sean Egan <seanegan@gmail.com>
parents: 3606
diff changeset
131 g_timeout_add(0,delayed_unload, prpl->plug->handle);
3572
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
132 prpl->plug->handle = NULL;
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
133 }
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 #endif
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3570
diff changeset
136
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
137 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
138
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
139 void serv_touch_idle(struct gaim_connection *gc)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
140 {
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
141 /* Are we idle? If so, not anymore */
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
142 if (gc->is_idle > 0) {
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
143 gc->is_idle = 0;
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
144 serv_set_idle(gc, 0);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
145 }
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
146 time(&gc->lastsent);
1834
0695f52c06da [gaim-migrate @ 1844]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1815
diff changeset
147 if (gc->is_auto_away)
0695f52c06da [gaim-migrate @ 1844]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1815
diff changeset
148 check_idle(gc);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
149 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
150
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
151 void serv_finish_login(struct gaim_connection *gc)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
152 {
1051
713b0e14e0a9 [gaim-migrate @ 1061]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1050
diff changeset
153 if (strlen(gc->user->user_info)) {
1976
24aed1c31342 [gaim-migrate @ 1986]
Rob Flynn <gaim@robflynn.com>
parents: 1938
diff changeset
154 /* g_malloc(strlen(gc->user->user_info) * 4);
24aed1c31342 [gaim-migrate @ 1986]
Rob Flynn <gaim@robflynn.com>
parents: 1938
diff changeset
155 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
156 serv_set_info(gc, gc->user->user_info);
1976
24aed1c31342 [gaim-migrate @ 1986]
Rob Flynn <gaim@robflynn.com>
parents: 1938
diff changeset
157 /* g_free(buf); */
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
158 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
159
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
160 if (gc->idle_timer > 0)
2131
acc11216ec5d [gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2123
diff changeset
161 g_source_remove(gc->idle_timer);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
162
2381
427ccd7dfdd2 [gaim-migrate @ 2394]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
163 gc->idle_timer = g_timeout_add(20000, check_idle, gc);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
164 serv_touch_idle(gc);
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
165
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
166 time(&gc->login_time);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
167
1995
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
168 if (gc->prpl->options & OPT_PROTO_CORRECT_TIME)
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
169 serv_add_buddy(gc, gc->username);
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
170
1772
896432d66303 [gaim-migrate @ 1782]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1771
diff changeset
171 update_keepalive(gc, TRUE);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
172 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
173
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
174 /* 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
175 * typing notifications.
3001
87fff45fa36b [gaim-migrate @ 3014]
Sean Egan <seanegan@gmail.com>
parents: 2993
diff changeset
176 * 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
177 * typing is a flag - TRUE for typing, FALSE for stopped typing */
87fff45fa36b [gaim-migrate @ 3014]
Sean Egan <seanegan@gmail.com>
parents: 2993
diff changeset
178 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
179 if (g && g->prpl && g->prpl->send_typing)
3001
87fff45fa36b [gaim-migrate @ 3014]
Sean Egan <seanegan@gmail.com>
parents: 2993
diff changeset
180 return g->prpl->send_typing(g, name, typing);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
181 else return 0;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
182 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
183
3033
1143524a2eaf [gaim-migrate @ 3046]
Sean Egan <seanegan@gmail.com>
parents: 3002
diff changeset
184 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
185 {
2123
56c4382f2909 [gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2108
diff changeset
186 int val = -EINVAL;
3601
81d514f109de [gaim-migrate @ 3703]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
187 struct conversation *cnv = find_conversation(name);
981
7e231bc0018a [gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 980
diff changeset
188 if (gc->prpl && gc->prpl->send_im)
3033
1143524a2eaf [gaim-migrate @ 3046]
Sean Egan <seanegan@gmail.com>
parents: 3002
diff changeset
189 val = gc->prpl->send_im(gc, name, message, len, flags);
94
9f6ce50ffb78 [gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 79
diff changeset
190
2231
8c4ff1a368bd [gaim-migrate @ 2241]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
191 if (!(flags & IM_FLAG_AWAY))
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
192 serv_touch_idle(gc);
2123
56c4382f2909 [gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2108
diff changeset
193
3601
81d514f109de [gaim-migrate @ 3703]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
194 if (cnv && cnv->type_again_timeout)
81d514f109de [gaim-migrate @ 3703]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
195 gtk_timeout_remove(cnv->type_again_timeout);
81d514f109de [gaim-migrate @ 3703]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
196
2123
56c4382f2909 [gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2108
diff changeset
197 return val;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
198 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
199
1032
643a4d81c18a [gaim-migrate @ 1042]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1030
diff changeset
200 void serv_get_info(struct gaim_connection *g, char *name)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
201 {
1006
0a4d0ed65e17 [gaim-migrate @ 1016]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
202 if (g && g->prpl && g->prpl->get_info)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
203 g->prpl->get_info(g, name);
249
810c595258c8 [gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 248
diff changeset
204 }
810c595258c8 [gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 248
diff changeset
205
2773
a0fd8f91e294 [gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2768
diff changeset
206 void serv_get_away(struct gaim_connection *g, char *name)
a0fd8f91e294 [gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2768
diff changeset
207 {
a0fd8f91e294 [gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2768
diff changeset
208 if (g && g->prpl && g->prpl->get_away)
a0fd8f91e294 [gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2768
diff changeset
209 g->prpl->get_away(g, name);
a0fd8f91e294 [gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2768
diff changeset
210 }
a0fd8f91e294 [gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2768
diff changeset
211
1032
643a4d81c18a [gaim-migrate @ 1042]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1030
diff changeset
212 void serv_get_dir(struct gaim_connection *g, char *name)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
213 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
214 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
215 g->prpl->get_dir(g, name);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
216 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
217
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
218 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
219 const char *city, const char *state, const char *country, int web)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
220 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
221 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
222 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
223 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
224
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
225 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
226 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
227 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
228 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
229 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
230 }
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
1401
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1376
diff changeset
233 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
234 {
1938
c9db54d8d8dc [gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1937
diff changeset
235 if (gc && gc->prpl && gc->prpl->set_away) {
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
236 char *buf = NULL;
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
237 if (message) {
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
238 buf = g_malloc(strlen(message) + 1);
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2681
diff changeset
239 if (gc->flags & OPT_CONN_HTML)
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
240 strncpy(buf, message, strlen(message) + 1);
1938
c9db54d8d8dc [gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1937
diff changeset
241 else
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
242 strncpy_nohtml(buf, message, strlen(message) + 1);
1937
6a9109c79034 [gaim-migrate @ 1947]
Rob Flynn <gaim@robflynn.com>
parents: 1920
diff changeset
243 }
1938
c9db54d8d8dc [gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1937
diff changeset
244
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
245 gc->prpl->set_away(gc, state, buf);
2000
ae11844fa2b1 [gaim-migrate @ 2010]
Rob Flynn <gaim@robflynn.com>
parents: 1995
diff changeset
246
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
247 plugin_event(event_away, gc, state, buf);
1938
c9db54d8d8dc [gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1937
diff changeset
248
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
249 if (buf)
1938
c9db54d8d8dc [gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1937
diff changeset
250 g_free(buf);
1404
96e93119268d [gaim-migrate @ 1414]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1401
diff changeset
251 }
1937
6a9109c79034 [gaim-migrate @ 1947]
Rob Flynn <gaim@robflynn.com>
parents: 1920
diff changeset
252
1938
c9db54d8d8dc [gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1937
diff changeset
253 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
254 }
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 void serv_set_away_all(char *message)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
257 {
976
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
258 GSList *c = connections;
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
259 struct gaim_connection *g;
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
260
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
261 while (c) {
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
262 g = (struct gaim_connection *)c->data;
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
263 serv_set_away(g, GAIM_AWAY_CUSTOM, message);
976
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
264 c = c->next;
423
0d4e80bdb96b [gaim-migrate @ 433]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 414
diff changeset
265 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
266 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
267
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
268 void serv_set_info(struct gaim_connection *g, char *info)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
269 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
270 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
271 if (plugin_event(event_set_info, g, info))
3456
b48065e52337 [gaim-migrate @ 3503]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
272 return;
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
273 g->prpl->set_info(g, info);
1749
5bfc58c20e82 [gaim-migrate @ 1759]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1734
diff changeset
274 }
237
6ced2f1c8b24 [gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 200
diff changeset
275 }
6ced2f1c8b24 [gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 200
diff changeset
276
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
277 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
278 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
279 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
280 g->prpl->change_passwd(g, orig, new);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
281 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
282
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
283 void serv_add_buddy(struct gaim_connection *g, const char *name)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
284 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
285 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
286 g->prpl->add_buddy(g, name);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
287 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
288
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
289 void serv_add_buddies(struct gaim_connection *g, GList *buddies)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
290 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
291 if (g && g_slist_find(connections, g) && g->prpl) {
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
292 if (g->prpl->add_buddies)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
293 g->prpl->add_buddies(g, buddies);
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
294 else if (g->prpl->add_buddy)
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
295 while (buddies) {
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
296 g->prpl->add_buddy(g, buddies->data);
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
297 buddies = buddies->next;
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
298 }
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1303
diff changeset
299 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
300 }
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
2681
37d80035e77f [gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2662
diff changeset
303 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
304 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
305 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
306 g->prpl->remove_buddy(g, name, group);
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
307 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
308
2681
37d80035e77f [gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2662
diff changeset
309 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
310 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
311 if (!g_slist_find(connections, gc))
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
312 return;
2334
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
313 if (!gc->prpl)
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
314 return; /* how the hell did that happen? */
2334
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
315 if (gc->prpl->remove_buddies)
2681
37d80035e77f [gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2662
diff changeset
316 gc->prpl->remove_buddies(gc, g, group);
2334
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
317 else {
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
318 while (g) {
2681
37d80035e77f [gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2662
diff changeset
319 serv_remove_buddy(gc, g->data, group);
2334
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
320 g = g->next;
b53cd5b63a99 [gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
321 }
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
3136
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
325 /*
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
326 * Set buddy's alias on server roster/list
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
327 */
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
328 void serv_alias_buddy(struct buddy *b)
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
329 {
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
330 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
331 b->gc->prpl->alias_buddy(b->gc, b->name);
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
332 }
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 * Move a buddy from one group to another on server.
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
337 *
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
338 * 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
339 * it should be possible. Probably needs to be done, someday.
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
340 */
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
341 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
342 {
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
343 if(b && b->gc && og && og->gc && ng && ng->gc) {
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
344 /*
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
345 * If there are no connection changes...
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
346 */
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
347 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
348 if(b->gc->prpl && b->gc->prpl->group_buddy) {
1bd472b7f7a2 [gaim-migrate @ 3151]
Rob Flynn <gaim@robflynn.com>
parents: 3124
diff changeset
349 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
350 }
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
3348
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
355 /*
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
356 * Rename a group on server roster/list.
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
357 */
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
358 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
359 {
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
360 if (g && g->prpl && old_group && new_name) {
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
361 GList *tobemoved = NULL;
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
362 GSList *original;
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
363
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
364 for (original=old_group->members; original; original=g_slist_next(original))
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
365 tobemoved = g_list_append(tobemoved, ((struct buddy *)original->data)->name);
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
366
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
367 if (g->prpl->rename_group) {
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
368 /* prpl's might need to check if the group already
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
369 * exists or not, and handle that differently */
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
370 g->prpl->rename_group(g, old_group->name, new_name, tobemoved);
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
371 } else {
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
372 serv_remove_buddies(g, tobemoved, old_group->name);
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
373 serv_add_buddies(g, tobemoved);
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
374 }
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
375
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
376 g_list_free(tobemoved);
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
377 }
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
378 }
dd34e0b40fed [gaim-migrate @ 3367]
Jim Seymour <jseymour>
parents: 3163
diff changeset
379
1038
daad2440a642 [gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
380 void serv_add_permit(struct gaim_connection *g, char *name)
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
381 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
382 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
383 g->prpl->add_permit(g, name);
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
384 }
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
385
1038
daad2440a642 [gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
386 void serv_add_deny(struct gaim_connection *g, char *name)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
387 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
388 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
389 g->prpl->add_deny(g, name);
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
390 }
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
391
1038
daad2440a642 [gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
392 void serv_rem_permit(struct gaim_connection *g, char *name)
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
393 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
394 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
395 g->prpl->rem_permit(g, name);
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
396 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
397
1038
daad2440a642 [gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
398 void serv_rem_deny(struct gaim_connection *g, char *name)
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
399 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
400 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
401 g->prpl->rem_deny(g, name);
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
402 }
678
c72f58814e9f [gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 660
diff changeset
403
1038
daad2440a642 [gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
404 void serv_set_permit_deny(struct gaim_connection *g)
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
405 {
1145
cd96ca1aed02 [gaim-migrate @ 1155]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1140
diff changeset
406 /* 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
407 * 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
408 * 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
409 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
410 g->prpl->set_permit_deny(g);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
411 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
412
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1015
diff changeset
413
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
414 void serv_set_idle(struct gaim_connection *g, int time)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
415 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
416 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
417 g->prpl->set_idle(g, time);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
418 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
419
976
2586b2a3725e [gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 973
diff changeset
420 void serv_warn(struct gaim_connection *g, char *name, int anon)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
421 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
422 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
423 g->prpl->warn(g, name, anon);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
424 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
425
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
426 void serv_join_chat(struct gaim_connection *g, GList *data)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
427 {
2586
0f5390176949 [gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2546
diff changeset
428 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
429 g->prpl->join_chat(g, data);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
430 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
431
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3457
diff changeset
432 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
433 {
2359
ad56a93661fc [gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2345
diff changeset
434 char *buffy = message && *message ? g_strdup(message) : NULL;
ad56a93661fc [gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2345
diff changeset
435 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
436 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
437 g->prpl->chat_invite(g, id, buffy, name);
2359
ad56a93661fc [gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2345
diff changeset
438 if (buffy)
ad56a93661fc [gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2345
diff changeset
439 g_free(buffy);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
440 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
441
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
442 void serv_chat_leave(struct gaim_connection *g, int id)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
443 {
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
444 if (!g_slist_find(connections, g))
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
445 return;
1015
c3579d03a0c1 [gaim-migrate @ 1025]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1013
diff changeset
446
981
7e231bc0018a [gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 980
diff changeset
447 if (g->prpl && g->prpl->chat_leave)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
448 g->prpl->chat_leave(g, id);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
449 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
450
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
451 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
452 {
981
7e231bc0018a [gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 980
diff changeset
453 if (g->prpl && g->prpl->chat_whisper)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
454 g->prpl->chat_whisper(g, id, who, message);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
455 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
456
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2131
diff changeset
457 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
458 {
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2131
diff changeset
459 int val = -EINVAL;
981
7e231bc0018a [gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 980
diff changeset
460 if (g->prpl && g->prpl->chat_send)
2662
b0c5770156e1 [gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2646
diff changeset
461 val = g->prpl->chat_send(g, id, message);
960
fa681641643d [gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 931
diff changeset
462 serv_touch_idle(g);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2131
diff changeset
463 return val;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
464 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
465
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
466 int find_queue_row_by_name(char *name)
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
467 {
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
468 GSList *templist;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
469 char *temp;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
470 int i;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
471
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
472 templist = message_queue;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
473
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
474 for (i = 0; i < GTK_CLIST(clistqueue)->rows; i++) {
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
475 gtk_clist_get_text(GTK_CLIST(clistqueue), i, 0, &temp);
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
476
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
477 if (!strcmp(name, temp))
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
478 return i;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
479 }
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 return -1;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
482 }
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 int find_queue_total_by_name(char *name)
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
485 {
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
486 GSList *templist;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
487 int i = 0;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
488
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
489 templist = message_queue;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
490
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
491 while (templist) {
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
492 struct queued_message *qm = (struct queued_message *)templist->data;
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
493 if ((qm->flags & WFLAG_RECV) && !strcmp(name, qm->name))
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
494 i++;
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
495
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
496 templist = templist->next;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
497 }
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 return i;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
500 }
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
501
2435
b4f2a53c0ee5 [gaim-migrate @ 2448]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2382
diff changeset
502 struct queued_away_response {
b4f2a53c0ee5 [gaim-migrate @ 2448]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2382
diff changeset
503 char name[80];
b4f2a53c0ee5 [gaim-migrate @ 2448]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2382
diff changeset
504 time_t sent_away;
b4f2a53c0ee5 [gaim-migrate @ 2448]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2382
diff changeset
505 };
b4f2a53c0ee5 [gaim-migrate @ 2448]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2382
diff changeset
506
1774
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
507 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
508 {
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
509 GSList *templist;
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
510 struct queued_away_response *qar;
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
511
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
512 templist = away_time_queue;
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
513
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
514 while (templist) {
1774
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
515 qar = (struct queued_away_response *)templist->data;
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
516
1774
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
517 if (!strcmp(name, qar->name))
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
518 return qar;
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
519
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
520 templist = templist->next;
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
521 }
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 return NULL;
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
524 }
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
525
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
526 /* 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
527 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
528 {
1981
7739e648a28a [gaim-migrate @ 1991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1976
diff changeset
529 char *buffy;
7739e648a28a [gaim-migrate @ 1991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1976
diff changeset
530 char *angel;
7739e648a28a [gaim-migrate @ 1991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1976
diff changeset
531 int plugin_return;
2273
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
532 int away = 0;
1981
7739e648a28a [gaim-migrate @ 1991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1976
diff changeset
533
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
534 struct conversation *cnv;
764
a566fc987db9 [gaim-migrate @ 774]
Todd Kulesza <fflewddur>
parents: 752
diff changeset
535 int new_conv = 0;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
536
2273
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
537 /* pay no attention to the man behind the curtain.
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
538 *
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
539 * 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
540 * 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
541 * 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
542 * 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
543 * 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
544 if (flags & IM_FLAG_GAIMUSER)
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
545 debug_printf("%s is a gaim user.\n", name);
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
546
2106
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
547 /* 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
548 cnv = find_conversation(name);
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
549 if (cnv)
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
550 set_convo_gc(cnv, gc);
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
551 /* 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
552 else
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
553 new_conv = 1;
efb39c151cf7 [gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2104
diff changeset
554
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
555 /* 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
556 * 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
557 * 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
558 * 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
559 if (len < 0) {
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
560 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG));
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
561 strcpy(buffy, message);
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
562 angel = g_strdup(name);
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
563 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
564
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
565 if (!buffy || !angel || plugin_return) {
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
566 if (buffy)
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
567 g_free(buffy);
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
568 if (angel)
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
569 g_free(angel);
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
570 return;
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
571 }
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
572 name = angel;
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
573 message = buffy;
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
574 } else {
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
575 name = g_strdup(name);
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
576 message = g_memdup(message, len);
1100
f168625b63fe [gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1089
diff changeset
577 }
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
578
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
579 /* 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
580 * 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
581 * 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
582 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
583 !strcmp(message, ">>>Automated Message: Getting Away Message<<<")) {
831
97f1ae636ed7 [gaim-migrate @ 841]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 809
diff changeset
584 char *tmpmsg = stylize(awaymessage->message, MSG_LEN);
3033
1143524a2eaf [gaim-migrate @ 3046]
Sean Egan <seanegan@gmail.com>
parents: 3002
diff changeset
585 serv_send_im(gc, name, tmpmsg, -1, IM_FLAG_AWAY);
831
97f1ae636ed7 [gaim-migrate @ 841]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 809
diff changeset
586 g_free(tmpmsg);
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
587 g_free(name);
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
588 g_free(message);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
589 return;
736
d05d746384a7 [gaim-migrate @ 746]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 710
diff changeset
590 }
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
591
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
592 /* if you can't figure this out, stop reading right now.
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
593 * "we're not worthy! we're not worthy!" */
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
594 if ((len < 0) && (convo_options & OPT_CONVO_SEND_LINKS))
616
874ed877c854 [gaim-migrate @ 626]
Rob Flynn <gaim@robflynn.com>
parents: 592
diff changeset
595 linkify_text(message);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
596
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
597 /* 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
598 * 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
599 * 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
600 if (flags & IM_FLAG_AWAY)
764
a566fc987db9 [gaim-migrate @ 774]
Todd Kulesza <fflewddur>
parents: 752
diff changeset
601 away = WFLAG_AUTO;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
602
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
603 /* 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
604 * 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
605 * and different things we have to do for each. */
1404
96e93119268d [gaim-migrate @ 1414]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1401
diff changeset
606 if (gc->away) {
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
607 time_t t;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
608 char *tmpmsg;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
609 struct buddy *b = find_buddy(gc, name);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
610 char *alias = b ? b->show : name;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
611 int row;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
612 struct queued_away_response *qar;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
613
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
614 time(&t);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
615
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
616 /* 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
617 * 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
618 * 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
619 * 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
620 * 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
621 if (!cnv && clistqueue && (away_options & OPT_AWAY_QUEUE)) {
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
622 /* 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
623 * 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
624 * the away dialog to indicate that we've queued something. */
1769
68eddf56f419 [gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1768
diff changeset
625 struct queued_message *qm;
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
626
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
627 qm = g_new0(struct queued_message, 1);
1774
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1773
diff changeset
628 g_snprintf(qm->name, sizeof(qm->name), "%s", name);
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
629 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
630 qm->gc = gc;
68eddf56f419 [gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1768
diff changeset
631 qm->tm = mtime;
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
632 qm->flags = WFLAG_RECV | away;
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
633 qm->len = len;
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
634 message_queue = g_slist_append(message_queue, qm);
1768
9aae465eeb6e [gaim-migrate @ 1778]
Rob Flynn <gaim@robflynn.com>
parents: 1764
diff changeset
635
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
636 row = find_queue_row_by_name(qm->name);
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
637
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
638 if (row >= 0) {
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
639 char number[32];
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
640 int qtotal;
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
641
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
642 qtotal = find_queue_total_by_name(qm->name);
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
643 g_snprintf(number, 32, _("(%d messages)"), qtotal);
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
644 gtk_clist_set_text(GTK_CLIST(clistqueue), row, 1, number);
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
645 } else {
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
646 gchar *heh[2];
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
647
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
648 heh[0] = qm->name;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
649 heh[1] = _("(1 message)");
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
650 gtk_clist_append(GTK_CLIST(clistqueue), heh);
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
651 }
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
652 } else {
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
653 /* 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
654 * 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
655 * 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
656 if (away_options & OPT_AWAY_DISCARD) {
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
657 g_free(name);
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
658 g_free(message);
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
659 return;
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
660 }
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
661
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
662 /* 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
663 * updated (partly handled above already), play the receive sound (sound.c
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
664 * 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
665 * convo window. */
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
666 if (cnv == NULL) {
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
667 cnv = new_conversation(name);
1898
73d73939f698 [gaim-migrate @ 1908]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1834
diff changeset
668 set_convo_gc(cnv, gc);
1773
6d1d9e988fd4 [gaim-migrate @ 1783]
Rob Flynn <gaim@robflynn.com>
parents: 1772
diff changeset
669 }
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
670 if (new_conv && (sound_options & OPT_SOUND_FIRST_RCV))
3060
4f2f12bf4408 [gaim-migrate @ 3074]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
671 play_sound(SND_FIRST_RECEIVE);
4f2f12bf4408 [gaim-migrate @ 3074]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
672 else if (cnv->makesound)
4f2f12bf4408 [gaim-migrate @ 3074]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
673 play_sound(SND_RECEIVE);
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
674
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
675 write_to_conv(cnv, message, away | WFLAG_RECV, NULL, mtime, len);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
676 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
677
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
678 /* 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
679 * of course, unless the horse.... no wait. */
2906
538c58b43eff [gaim-migrate @ 2919]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2856
diff changeset
680 if ((away_options & OPT_AWAY_NO_AUTO_RESP) || !strlen(gc->away) ||
538c58b43eff [gaim-migrate @ 2919]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2856
diff changeset
681 ((away_options & OPT_AWAY_IDLE_RESP) && !gc->is_idle)) {
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
682 g_free(name);
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
683 g_free(message);
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
684 return;
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
685 }
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
686
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
687 /* 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
688 * 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
689 * 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
690 * 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
691 * 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
692 qar = find_queued_away_response_by_name(name);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
693 if (!qar) {
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
694 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
695 g_snprintf(qar->name, sizeof(qar->name), "%s", name);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
696 qar->sent_away = 0;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
697 away_time_queue = g_slist_append(away_time_queue, qar);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
698 }
2906
538c58b43eff [gaim-migrate @ 2919]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2856
diff changeset
699 if ((t - qar->sent_away) < away_resend) {
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
700 g_free(name);
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
701 g_free(message);
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
702 return;
2104
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
703 }
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
704 qar->sent_away = t;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
705
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
706 /* apply default fonts and colors */
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
707 tmpmsg = stylize(gc->away, MSG_LEN);
3033
1143524a2eaf [gaim-migrate @ 3046]
Sean Egan <seanegan@gmail.com>
parents: 3002
diff changeset
708 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
709 if (!cnv && clistqueue && (away_options & OPT_AWAY_QUEUE)) {
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
710 struct queued_message *qm;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
711 qm = g_new0(struct queued_message, 1);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
712 g_snprintf(qm->name, sizeof(qm->name), "%s", name);
1785
f4ae086c746b [gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1775
diff changeset
713 qm->message = g_strdup(away_subs(tmpmsg, alias));
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
714 qm->gc = gc;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
715 qm->tm = mtime;
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
716 qm->flags = WFLAG_SEND | WFLAG_AUTO;
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2937
diff changeset
717 qm->len = -1;
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
718 message_queue = g_slist_append(message_queue, qm);
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
719 } else if (cnv != NULL)
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
720 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
721 mtime, len);
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
722 g_free(tmpmsg);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
723 } else {
1775
9ca22174da76 [gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
724 /* 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
725 * 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
726 * received it and then display it. easy. */
3521
f3981f94494a [gaim-migrate @ 3594]
Sean Egan <seanegan@gmail.com>
parents: 3517
diff changeset
727
f3981f94494a [gaim-migrate @ 3594]
Sean Egan <seanegan@gmail.com>
parents: 3517
diff changeset
728 if (new_conv && (sound_options & OPT_SOUND_FIRST_RCV))
f3981f94494a [gaim-migrate @ 3594]
Sean Egan <seanegan@gmail.com>
parents: 3517
diff changeset
729 play_sound(SND_FIRST_RECEIVE);
3524
6f9610016503 [gaim-migrate @ 3597]
Sean Egan <seanegan@gmail.com>
parents: 3523
diff changeset
730 else if (new_conv || cnv->makesound)
3521
f3981f94494a [gaim-migrate @ 3594]
Sean Egan <seanegan@gmail.com>
parents: 3517
diff changeset
731 play_sound(SND_RECEIVE);
f3981f94494a [gaim-migrate @ 3594]
Sean Egan <seanegan@gmail.com>
parents: 3517
diff changeset
732
3524
6f9610016503 [gaim-migrate @ 3597]
Sean Egan <seanegan@gmail.com>
parents: 3523
diff changeset
733 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
734 /* 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
735 * by clicking the docklet or windows tray icon. */
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
736 struct queued_message *qm;
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
737 qm = g_new0(struct queued_message, 1);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
738 g_snprintf(qm->name, sizeof(qm->name), "%s", name);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
739 qm->message = g_strdup(message);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
740 qm->gc = gc;
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
741 qm->tm = mtime;
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
742 qm->flags = away | WFLAG_RECV;
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
743 qm->len = len;
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
744 unread_message_queue = g_slist_append(unread_message_queue, qm);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
745 } else {
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
746 if (cnv == NULL) {
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
747 cnv = new_conversation(name);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
748 set_convo_gc(cnv, gc);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
749 }
3521
f3981f94494a [gaim-migrate @ 3594]
Sean Egan <seanegan@gmail.com>
parents: 3517
diff changeset
750
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
751 set_convo_name(cnv, name);
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
752
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
753 write_to_conv(cnv, message, away | WFLAG_RECV, NULL, mtime, len);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
754 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
755 }
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
756 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
757 g_free(name);
0b81421021fd [gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
758 g_free(message);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
759 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
760
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
761
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
762
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
763 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
764 time_t idle, int type, guint caps)
1
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 struct buddy *b = find_buddy(gc, name);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
767
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
768 if (signon && (gc->prpl->options & OPT_PROTO_CORRECT_TIME)) {
1435
f16e17d42b43 [gaim-migrate @ 1445]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1434
diff changeset
769 char *tmp = g_strdup(normalize(name));
1995
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
770 if (!g_strcasecmp(tmp, normalize(gc->username))) {
2506
072f253d5939 [gaim-migrate @ 2519]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2505
diff changeset
771 gc->evil = evil;
1995
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
772 gc->correction_time = (signon - gc->login_time);
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
773 update_idle_times();
815997c7d4f1 [gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1981
diff changeset
774 }
1435
f16e17d42b43 [gaim-migrate @ 1445]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1434
diff changeset
775 g_free(tmp);
f16e17d42b43 [gaim-migrate @ 1445]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1434
diff changeset
776 }
f16e17d42b43 [gaim-migrate @ 1445]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1434
diff changeset
777
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
778 if (!b) {
1376
730a1a19b4cc [gaim-migrate @ 1386]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1371
diff changeset
779 debug_printf("Error, no such buddy %s\n", name);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
780 return;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
781 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
782
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
783 /* This code will 'align' the name from the TOC */
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
784 /* server with what's in our record. We want to */
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
785 /* store things how THEY want it... */
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
786 if (strcmp(name, b->name)) {
2787
feea7103a235 [gaim-migrate @ 2800]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2773
diff changeset
787 char *who = g_strdup(b->name);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
788 g_snprintf(b->name, sizeof(b->name), "%s", name);
2273
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
789 handle_buddy_rename(b, who);
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2231
diff changeset
790 g_free(who);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
791 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
792
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
793 if (!b->idle && idle) {
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
794 plugin_event(event_buddy_idle, gc, b->name);
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
795 system_log(log_idle, gc, b, OPT_LOG_BUDDY_IDLE);
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
796 }
1140
249b040f6a83 [gaim-migrate @ 1150]
Rob Flynn <gaim@robflynn.com>
parents: 1102
diff changeset
797 if (b->idle && !idle) {
2131
acc11216ec5d [gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2123
diff changeset
798 do_pounce(gc, b->name, OPT_POUNCE_UNIDLE);
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
799 plugin_event(event_buddy_unidle, gc, b->name);
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
800 system_log(log_unidle, gc, b, OPT_LOG_BUDDY_IDLE);
1140
249b040f6a83 [gaim-migrate @ 1150]
Rob Flynn <gaim@robflynn.com>
parents: 1102
diff changeset
801 }
1000
91b7377e7b45 [gaim-migrate @ 1010]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 990
diff changeset
802
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
803 b->idle = idle;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
804 b->evil = evil;
780
c714def9cebb [gaim-migrate @ 790]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 771
diff changeset
805
136
4e91b92f91a7 [gaim-migrate @ 146]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 115
diff changeset
806 if ((b->uc & UC_UNAVAILABLE) && !(type & UC_UNAVAILABLE)) {
2131
acc11216ec5d [gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2123
diff changeset
807 do_pounce(gc, b->name, OPT_POUNCE_UNAWAY);
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
808 plugin_event(event_buddy_back, gc, b->name);
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
809 system_log(log_back, gc, b, OPT_LOG_BUDDY_AWAY);
780
c714def9cebb [gaim-migrate @ 790]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 771
diff changeset
810 } else if (!(b->uc & UC_UNAVAILABLE) && (type & UC_UNAVAILABLE)) {
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
811 plugin_event(event_buddy_away, gc, b->name);
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
812 system_log(log_away, gc, b, OPT_LOG_BUDDY_AWAY);
136
4e91b92f91a7 [gaim-migrate @ 146]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 115
diff changeset
813 }
780
c714def9cebb [gaim-migrate @ 790]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 771
diff changeset
814
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
815 b->uc = type;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
816 if (caps)
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
817 b->caps = caps;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
818
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
819 b->signon = signon;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
820
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
821 if (loggedin) {
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
822 if (!b->present) {
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
823 b->present = 1;
2131
acc11216ec5d [gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2123
diff changeset
824 do_pounce(gc, b->name, OPT_POUNCE_SIGNON);
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
825 plugin_event(event_buddy_signon, gc, b->name);
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
826 system_log(log_signon, gc, b, OPT_LOG_BUDDY_SIGNON);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
827 }
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
828 } else {
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
829 if (b->present) {
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
830 plugin_event(event_buddy_signoff, gc, b->name);
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
831 system_log(log_signoff, gc, b, OPT_LOG_BUDDY_SIGNON);
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
832 }
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
833 b->present = 0;
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
834 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
835
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
836 set_buddy(gc, b);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
837 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
838
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
839
1100
f168625b63fe [gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1089
diff changeset
840 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
841 {
1771
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
842 char buf2[1024];
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
843
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
844 plugin_event(event_warned, gc, name, lev);
391
be408b41c172 [gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 368
diff changeset
845
2646
2555683e8dc8 [gaim-migrate @ 2659]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2607
diff changeset
846 if (gc->evil >= lev) {
1771
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
847 gc->evil = lev;
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
848 return;
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
849 }
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
850
213607e89598 [gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1769
diff changeset
851 gc->evil = lev;
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 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
854 gc->username, ((name == NULL)? "an anonymous person" : name), lev);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
855
3427
8fa61405af2b [gaim-migrate @ 3453]
Sean Egan <seanegan@gmail.com>
parents: 3348
diff changeset
856 do_error_dialog(buf2, NULL, GAIM_INFO);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
857 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
858
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
859 void serv_got_typing(struct gaim_connection *gc, char *name, int timeout) {
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
860 struct conversation *cnv = find_conversation(name);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
861 if (cnv) {
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
862 set_convo_gc(cnv, gc);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
863 show_typing(cnv);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
864 } else return;
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
865 plugin_event(event_got_typing, gc, name);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
866 do_pounce(gc, name, OPT_POUNCE_TYPING);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
867 if (timeout > 0) {
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
868 if (cnv->typing_timeout)
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
869 gtk_timeout_remove (cnv->typing_timeout);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
870 cnv->typing_timeout = gtk_timeout_add(timeout * 1000,(GtkFunction)reset_typing,
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
871 g_strdup(name));
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
872 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
873 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
874
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
875 void serv_got_typing_stopped(struct gaim_connection *gc, char *name) {
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
876 struct conversation *c = find_conversation(name);
3002
8851d33517e9 [gaim-migrate @ 3015]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
877 if (c && c->typing_timeout) {
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
878 gtk_timeout_remove (c->typing_timeout);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
879 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
880 reset_typing(g_strdup(name));
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
881 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
882
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
883 static void close_invite(GtkWidget *w, GtkWidget *w2)
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
884 {
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
885 GList *str = gtk_object_get_user_data(GTK_OBJECT(w2));
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
886 GList *tmp = str;
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
887
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
888 while (tmp) {
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
889 g_free(tmp->data);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
890 tmp = tmp->next;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
891 }
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
892 if (str)
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
893 g_list_free(str);
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
894
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
895 gtk_widget_destroy(w2);
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
896 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
897
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
898 static void chat_invite_callback(GtkWidget *w, GtkWidget *w2)
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
899 {
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
900 struct gaim_connection *g = (struct gaim_connection *)
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
901 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
902 GList *str, *tmp;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
903
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
904 str = gtk_object_get_user_data(GTK_OBJECT(w2));
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
905
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
906 serv_join_chat(g, str);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
907
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
908 tmp = str;
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
909
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
910 while (tmp) {
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
911 /* 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
912 g_free(tmp->data);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
913 tmp = tmp->next;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
914 }
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
915 if (str)
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
916 g_list_free(str);
1723
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
917
76e601b77099 [gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1722
diff changeset
918 gtk_widget_destroy(w2);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
919 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
920
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
921
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
922
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2167
diff changeset
923 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
924 {
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
925 GtkWidget *d;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
926 GtkWidget *label;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
927 GtkWidget *yesbtn;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
928 GtkWidget *nobtn;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
929
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
930 char buf2[BUF_LONG];
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
931
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
932
1000
91b7377e7b45 [gaim-migrate @ 1010]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 990
diff changeset
933 plugin_event(event_chat_invited, g, who, name, message);
391
be408b41c172 [gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 368
diff changeset
934
414
f9dc74875833 [gaim-migrate @ 424]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 411
diff changeset
935 if (message)
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
936 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
937 g->username, name, message);
414
f9dc74875833 [gaim-migrate @ 424]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 411
diff changeset
938 else
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
939 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
940 g->username, name);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
941
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
942 d = gtk_dialog_new();
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
943 gtk_widget_realize(d);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
944
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
945
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
946 label = gtk_label_new(buf2);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
947 gtk_widget_show(label);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
948 yesbtn = picture_button(d, _("Yes"), ok_xpm);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
949 nobtn = picture_button(d, _("No"), cancel_xpm);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
950 gtk_widget_show(nobtn);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
951 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
952 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
953 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
954
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
955 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
956 gtk_object_set_user_data(GTK_OBJECT(d), data);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
957
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
958
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
959 gtk_window_set_title(GTK_WINDOW(d), "Buddy chat invite");
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
960 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
961 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
962
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
963
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
964 gtk_widget_show(d);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
965 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
966
1785
f4ae086c746b [gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1775
diff changeset
967 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
968 {
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
969 struct conversation *b;
1
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 b = (struct conversation *)g_new0(struct conversation, 1);
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
972 gc->buddy_chats = g_slist_append(gc->buddy_chats, b);
1692
a312d64a995d [gaim-migrate @ 1702]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1659
diff changeset
973 chats = g_list_append(chats, b);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
974
472
6a92cd7322cc [gaim-migrate @ 482]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 447
diff changeset
975 b->is_chat = TRUE;
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
976 b->ignored = NULL;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
977 b->in_room = NULL;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
978 b->id = id;
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
979 b->gc = gc;
3124
f69328f7a603 [gaim-migrate @ 3139]
Sean Egan <seanegan@gmail.com>
parents: 3069
diff changeset
980 b->send_history = g_list_append(NULL, NULL);
1479
4c62ead808a2 [gaim-migrate @ 1489]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1456
diff changeset
981 b->history = g_string_new("");
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
982 g_snprintf(b->name, 80, "%s", name);
3124
f69328f7a603 [gaim-migrate @ 3139]
Sean Egan <seanegan@gmail.com>
parents: 3069
diff changeset
983
3457
222e23f91092 [gaim-migrate @ 3505]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
984 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
985 FILE *fd;
38ffd1faa31a [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
986 char *filename;
38ffd1faa31a [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
987
38ffd1faa31a [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
988 filename = (char *)malloc(100);
1212
a487b35ac05a [gaim-migrate @ 1222]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1191
diff changeset
989 g_snprintf(filename, 100, "%s.chat", b->name);
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
990
3457
222e23f91092 [gaim-migrate @ 3505]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
991 fd = open_log_file(filename, b->is_chat);
1722
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
992 if (fd) {
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
993 if (!(logging_options & OPT_LOG_STRIP_HTML))
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
994 fprintf(fd,
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
995 "<HR><BR><H3 Align=Center> ---- New Conversation @ %s ----</H3><BR>\n",
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
996 full_date());
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
997 else
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
998 fprintf(fd, "---- New Conversation @ %s ----\n", full_date());
1437
1f0660a2c893 [gaim-migrate @ 1447]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1435
diff changeset
999
1722
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
1000 fclose(fd);
1edc8b545d6f [gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1721
diff changeset
1001 }
888
38ffd1faa31a [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
1002 free(filename);
38ffd1faa31a [gaim-migrate @ 898]
Rob Flynn <gaim@robflynn.com>
parents: 834
diff changeset
1003 }
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1004
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1005 show_new_buddy_chat(b);
1785
f4ae086c746b [gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1775
diff changeset
1006
3710
03ba413ca20b [gaim-migrate @ 3843]
Luke Schierer <lschiere@pidgin.im>
parents: 3620
diff changeset
1007 plugin_event(event_chat_join, gc, id, name);
03ba413ca20b [gaim-migrate @ 3843]
Luke Schierer <lschiere@pidgin.im>
parents: 3620
diff changeset
1008
1785
f4ae086c746b [gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1775
diff changeset
1009 return b;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1010 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1011
964
2cd7b73e2c9a [gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 962
diff changeset
1012 void serv_got_chat_left(struct gaim_connection *g, int id)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1013 {
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1014 GSList *bcs = g->buddy_chats;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1015 struct conversation *b = NULL;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1016
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1017
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1018 while (bcs) {
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1019 b = (struct conversation *)bcs->data;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1020 if (id == b->id) {
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1021 break;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1022 }
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1023 b = NULL;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1024 bcs = bcs->next;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1025 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1026
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1027 if (!b)
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1028 return;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1029
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
1030 plugin_event(event_chat_leave, g, b->id);
391
be408b41c172 [gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 368
diff changeset
1031
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1235
diff changeset
1032 debug_printf("Leaving room %s.\n", b->name);
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 g->buddy_chats = g_slist_remove(g->buddy_chats, b);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1035
2017
eee309c0de93 [gaim-migrate @ 2027]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2001
diff changeset
1036 delete_chat(b);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1037 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1038
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
1039 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
1040 time_t mtime)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1041 {
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1042 int w;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1043 GSList *bcs = g->buddy_chats;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1044 struct conversation *b = NULL;
2296
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1045 char *buf;
3163
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1046 char *buffy, *angel;
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1047 int plugin_return;
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 while (bcs) {
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1050 b = (struct conversation *)bcs->data;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1051 if (id == b->id)
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1052 break;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1053 bcs = bcs->next;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1054 b = NULL;
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 }
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1057 if (!b)
1100
f168625b63fe [gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1089
diff changeset
1058 return;
391
be408b41c172 [gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 368
diff changeset
1059
3163
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1060
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1061 /* 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
1062 * 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
1063 * 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
1064 * 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
1065
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1066 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG));
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1067 strcpy(buffy, message);
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1068 angel = g_strdup(who);
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
1069 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
1070
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1071 if (!buffy || !angel || plugin_return) {
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1072 if (buffy)
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1073 g_free(buffy);
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1074 if (angel)
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1075 g_free(angel);
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2359
diff changeset
1076 return;
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 who = angel;
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1079 message = buffy;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1080
2296
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1081 buf = g_malloc(MAX(strlen(message) * 2, 8192));
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1082 strcpy(buf, message);
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1083
2313
bd9d403fb15b [gaim-migrate @ 2323]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2309
diff changeset
1084 if (convo_options & OPT_CONVO_SEND_LINKS)
2296
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1085 linkify_text(buf);
1643
d7e380618fd5 [gaim-migrate @ 1653]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1587
diff changeset
1086
1252
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1087 if (whisper)
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1088 w = WFLAG_WHISPER;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1089 else
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1090 w = 0;
46c09828e929 [gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
1091
2296
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1092 chat_write(b, who, w, buf, mtime);
3163
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1093 g_free(who);
e102d1629c71 [gaim-migrate @ 3179]
Sean Egan <seanegan@gmail.com>
parents: 3136
diff changeset
1094 g_free(message);
2296
878503b60006 [gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2289
diff changeset
1095 g_free(buf);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1096 }
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1097
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1098 static void des_popup(GtkWidget *w, GtkWidget *window)
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1099 {
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1100 if (w == window) {
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1101 char *u = gtk_object_get_user_data(GTK_OBJECT(window));
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1102 g_free(u);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1103 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1104 gtk_widget_destroy(window);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1105 }
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 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
1108 {
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1109 GtkWidget *window;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1110 GtkWidget *vbox;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1111 GtkWidget *sw;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1112 GtkWidget *text;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1113 GtkWidget *hbox;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1114 GtkWidget *button;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1115 char *url = g_strdup(u);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1116
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1117 GAIM_DIALOG(window);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1118 gtk_window_set_wmclass(GTK_WINDOW(window), "popup", "Gaim");
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1119 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, TRUE);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1120 gtk_window_set_title(GTK_WINDOW(window), "Gaim - Popup");
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1121 gtk_container_set_border_width(GTK_CONTAINER(window), 5);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1122 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
1123 gtk_object_set_user_data(GTK_OBJECT(window), url);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1124 gtk_widget_realize(window);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1125
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1126 vbox = gtk_vbox_new(FALSE, 5);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1127 gtk_container_add(GTK_CONTAINER(window), vbox);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1128
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1129 sw = gtk_scrolled_window_new(NULL, NULL);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1130 gtk_widget_set_usize(sw, wid, hei);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1131 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
1132 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 5);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1133
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1134 text = gtk_imhtml_new(NULL, NULL);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1135 gtk_container_add(GTK_CONTAINER(sw), text);
2906
538c58b43eff [gaim-migrate @ 2919]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2856
diff changeset
1136 GTK_LAYOUT(text)->hadjustment->step_increment = 10.0;
538c58b43eff [gaim-migrate @ 2919]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2856
diff changeset
1137 GTK_LAYOUT(text)->vadjustment->step_increment = 10.0;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1138 gaim_setup_imhtml(text);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1139
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1140 hbox = gtk_hbox_new(FALSE, 5);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1141 gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1142
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1143 button = picture_button(window, _("Close"), cancel_xpm);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1144 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1145 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
1146
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1147 button = picture_button(window, _("More Info"), tb_search_xpm);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1148 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
1149 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
1150
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1151 gtk_widget_show_all(window);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
1152
2856
b1e300a85678 [gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2827
diff changeset
1153 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
1154 }