src/conversation.c

Fri, 09 Sep 2005 20:14:32 +0000

author
Peter Lawler <pidgin@bleeter.id.au>
date
Fri, 09 Sep 2005 20:14:32 +0000
changeset 11485
fe334b13d1d0
parent 11481
498f90760488
child 11500
e0965fb5bcd8
permissions
-rw-r--r--

[gaim-migrate @ 13727]
Fix the /nick weirdness bug I introduced.

Also, patch 1283539, from Peter Lawler (two changes)
1. When in a chat where Gaim can tell which users are buddies (i.e. non-Jabber chats), only the names of buddies are bolded. I'm not sure if I'll like this, but I'm committing it so we can all try it out.
2. "remove bold, underline, and italics when we're ignoring formatting, as well"

committer: Richard Laager <rlaager@pidgin.im>

66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1 /*
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
2 * gaim
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
3 *
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8015
diff changeset
4 * Gaim is the legal property of its developers, whose names are too numerous
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8015
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8015
diff changeset
6 * source distribution.
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
7 *
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
11 * (at your option) any later version.
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
12 *
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
16 * GNU General Public License for more details.
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
17 *
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
21 */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
22 #include "internal.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
23 #include "blist.h"
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
24 #include "conversation.h"
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11137
diff changeset
25 #include "dbus-maybe.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
26 #include "debug.h"
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6846
diff changeset
27 #include "imgstore.h"
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5350
diff changeset
28 #include "notify.h"
5539
a13dd0ba205a [gaim-migrate @ 5939]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
29 #include "prefs.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
30 #include "prpl.h"
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
31 #include "signals.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
32 #include "util.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
33
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
34 typedef struct
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
35 {
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
36 char *id;
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
37 char *name;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
38 GaimConvPlacementFunc fnc;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
39
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
40 } ConvPlacementData;
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
41
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
42 #define SEND_TYPED_TIMEOUT 5000
4241
d2855049753d [gaim-migrate @ 4491]
Ethan Blanton <elb@pidgin.im>
parents: 4228
diff changeset
43
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
44 static GaimConvWindowUiOps *win_ui_ops = NULL;
4481
1a02f276e41e [gaim-migrate @ 4756]
Christian Hammond <chipx86@chipx86.com>
parents: 4478
diff changeset
45
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
46 static GList *conversations = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
47 static GList *ims = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
48 static GList *chats = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
49 static GList *windows = NULL;
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
50 static GList *conv_placement_fncs = NULL;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
51 static GaimConvPlacementFunc place_conv = NULL;
2191
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
52
7602
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
53 static void ensure_default_funcs(void);
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
54 static void conv_placement_last_created_win(GaimConversation *conv);
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
55
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
56 static gboolean
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
57 find_nick(const char *nick, const char *message)
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
58 {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
59 char *msg, *who, *p;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
60 int n;
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
61 gboolean ret = FALSE;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
62
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4687
diff changeset
63 msg = g_utf8_strdown(message, -1);
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4687
diff changeset
64
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
65 who = g_utf8_strdown(nick, -1);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
66 n = strlen(who);
814
279b5c144286 [gaim-migrate @ 824]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 808
diff changeset
67
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
68 if ((p = strstr(msg, who)) != NULL) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
69 if ((p == msg || !isalnum(*(p - 1))) && !isalnum(*(p + n))) {
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
70 ret = TRUE;
1692
ff73167542e9 [gaim-migrate @ 1702]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1663
diff changeset
71 }
1573
878f7c59ee85 [gaim-migrate @ 1583]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1532
diff changeset
72 }
472
9a5b8da2d760 [gaim-migrate @ 482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 411
diff changeset
73
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
74 g_free(who);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
75 g_free(msg);
3612
7712c1e4afad [gaim-migrate @ 3726]
Sean Egan <seanegan@pidgin.im>
parents: 3597
diff changeset
76
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
77 return ret;
3596
94fcf584c358 [gaim-migrate @ 3698]
Mark Doliner <markdoliner@pidgin.im>
parents: 3572
diff changeset
78 }
94fcf584c358 [gaim-migrate @ 3698]
Mark Doliner <markdoliner@pidgin.im>
parents: 3572
diff changeset
79
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
80 static gboolean
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
81 reset_typing(gpointer data)
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
82 {
6640
007eb21016b4 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6637
diff changeset
83 GaimConversation *c = (GaimConversation *)data;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
84 GaimConvIm *im;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
85
6640
007eb21016b4 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6637
diff changeset
86 if (!g_list_find(conversations, c))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
87 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
88
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
89 im = GAIM_CONV_IM(c);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
90
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
91 gaim_conv_im_set_typing_state(im, GAIM_NOT_TYPING);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
92 gaim_conv_im_update_typing(im);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
93 gaim_conv_im_stop_typing_timeout(im);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
94
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
95 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
96 }
3159
15816c95c61c [gaim-migrate @ 3175]
Sean Egan <seanegan@pidgin.im>
parents: 3129
diff changeset
97
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
98 static gboolean
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
99 send_typed(gpointer data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
100 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
101 GaimConversation *conv = (GaimConversation *)data;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
102 GaimConnection *gc;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
103 const char *name;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
104
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
105 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
106 name = gaim_conversation_get_name(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
107
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
108 if (conv != NULL && gc != NULL && name != NULL) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
109 gaim_conv_im_set_type_again(GAIM_CONV_IM(conv), TRUE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
110
6402
d9015e8d06fd [gaim-migrate @ 6907]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
111 serv_send_typing(gc, name, GAIM_TYPED);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
112
5213
d56ea526b80c [gaim-migrate @ 5583]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
113 gaim_debug(GAIM_DEBUG_MISC, "conversation", "typed...\n");
573
a267d68a8240 [gaim-migrate @ 583]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 570
diff changeset
114 }
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
115
2725
a844d0964552 [gaim-migrate @ 2738]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2722
diff changeset
116 return FALSE;
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
117 }
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
118
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
119 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
120 common_send(GaimConversation *conv, const char *message)
3790
8f009843ceeb [gaim-migrate @ 3930]
Rob Flynn <gaim@robflynn.com>
parents: 3789
diff changeset
121 {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
122 GaimConversationType type;
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
123 GaimAccount *account;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
124 GaimConnection *gc;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
125 GaimConversationUiOps *ops;
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
126 char *displayed = NULL, *sent = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
127 int plugin_return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
128 int err = 0;
3790
8f009843ceeb [gaim-migrate @ 3930]
Rob Flynn <gaim@robflynn.com>
parents: 3789
diff changeset
129
7947
76de4859a53a [gaim-migrate @ 8621]
Mark Doliner <markdoliner@pidgin.im>
parents: 7930
diff changeset
130 if (strlen(message) == 0)
76de4859a53a [gaim-migrate @ 8621]
Mark Doliner <markdoliner@pidgin.im>
parents: 7930
diff changeset
131 return;
76de4859a53a [gaim-migrate @ 8621]
Mark Doliner <markdoliner@pidgin.im>
parents: 7930
diff changeset
132
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
133 account = gaim_conversation_get_account(conv);
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
134 gc = gaim_conversation_get_gc(conv);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
135
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
136 g_return_if_fail(account != NULL);
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
137 g_return_if_fail(gc != NULL);
3731
1bc8fa617c7d [gaim-migrate @ 3869]
Nathan Walp <nwalp@pidgin.im>
parents: 3716
diff changeset
138
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
139 type = gaim_conversation_get_type(conv);
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
140 ops = gaim_conversation_get_ui_ops(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
141
10665
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
142 if (conv->features & GAIM_CONNECTION_HTML)
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
143 displayed = gaim_markup_linkify(message);
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5103
diff changeset
144 else
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
145 displayed = g_strdup(message);
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5103
diff changeset
146
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
147 plugin_return =
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
148 GPOINTER_TO_INT(gaim_signal_emit_return_1(
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
149 gaim_conversations_get_handle(),
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
150 (type == GAIM_CONV_TYPE_IM ? "writing-im-msg" : "writing-chat-msg"),
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
151 account, conv, &displayed));
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
152
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
153 if (displayed == NULL)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
154 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
155
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
156 if (plugin_return) {
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
157 g_free(displayed);
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
158 return;
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
159 }
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
160
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
161 gaim_signal_emit(gaim_conversations_get_handle(),
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
162 (type == GAIM_CONV_TYPE_IM ? "wrote-im-msg" : "wrote-chat-msg"),
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
163 account, conv, displayed);
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
164
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
165 sent = g_strdup(displayed);
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
166
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
167 plugin_return =
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
168 GPOINTER_TO_INT(gaim_signal_emit_return_1(
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
169 gaim_conversations_get_handle(), (type == GAIM_CONV_TYPE_IM ?
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
170 "displaying-im-msg" : "displaying-chat-msg"),
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
171 account, conv, &displayed));
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
172
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
173 if (plugin_return) {
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
174 g_free(displayed);
8078
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
175 displayed = NULL;
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
176 } else {
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
177 gaim_signal_emit(gaim_conversations_get_handle(),
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
178 (type == GAIM_CONV_TYPE_IM ? "displayed-im-msg" : "displayed-chat-msg"),
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
179 account, conv, displayed);
796
afdd0e29d634 [gaim-migrate @ 806]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 795
diff changeset
180 }
472
9a5b8da2d760 [gaim-migrate @ 482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 411
diff changeset
181
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
182 if (type == GAIM_CONV_TYPE_IM) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
183 GaimConvIm *im = GAIM_CONV_IM(conv);
2102
2d024ad2e07b [gaim-migrate @ 2112]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2094
diff changeset
184
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
185 gaim_signal_emit(gaim_conversations_get_handle(), "sending-im-msg",
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
186 account,
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
187 gaim_conversation_get_name(conv), &sent);
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
188
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
189 if (sent != NULL && sent[0] != '\0') {
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6846
diff changeset
190 GaimMessageFlags msgflags = GAIM_MESSAGE_SEND;
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6846
diff changeset
191
10665
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
192 if (conv->features & GAIM_CONNECTION_HTML) {
8442
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8386
diff changeset
193 err = serv_send_im(gc, gaim_conversation_get_name(conv),
9166
c998879df157 [gaim-migrate @ 9951]
Tim Ringenbach <marv@pidgin.im>
parents: 9155
diff changeset
194 sent, 0);
8442
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8386
diff changeset
195 } else {
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8386
diff changeset
196 gchar *tmp = gaim_unescape_html(sent);
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8386
diff changeset
197 err = serv_send_im(gc, gaim_conversation_get_name(conv),
9166
c998879df157 [gaim-migrate @ 9951]
Tim Ringenbach <marv@pidgin.im>
parents: 9155
diff changeset
198 tmp, 0);
8442
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8386
diff changeset
199 g_free(tmp);
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8386
diff changeset
200 }
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6846
diff changeset
201
8078
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
202 if ((err > 0) && (displayed != NULL))
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
203 gaim_conv_im_write(im, NULL, displayed, msgflags, time(NULL));
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6846
diff changeset
204
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
205 gaim_signal_emit(gaim_conversations_get_handle(), "sent-im-msg",
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
206 account,
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
207 gaim_conversation_get_name(conv), sent);
2102
2d024ad2e07b [gaim-migrate @ 2112]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2094
diff changeset
208 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
209 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
210 else {
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
211 gaim_signal_emit(gaim_conversations_get_handle(), "sending-chat-msg",
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
212 account, &sent,
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
213 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)));
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
214
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
215 if (sent != NULL && sent[0] != '\0') {
10665
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
216 if (conv->features & GAIM_CONNECTION_HTML) {
8442
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8386
diff changeset
217 err = serv_chat_send(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), sent);
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8386
diff changeset
218 } else {
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8386
diff changeset
219 gchar *tmp = gaim_unescape_html(sent);
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8386
diff changeset
220 err = serv_chat_send(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), tmp);
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8386
diff changeset
221 g_free(tmp);
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8386
diff changeset
222 }
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
223
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
224 gaim_signal_emit(gaim_conversations_get_handle(), "sent-chat-msg",
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
225 account, sent,
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
226 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)));
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
227 }
472
9a5b8da2d760 [gaim-migrate @ 482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 411
diff changeset
228 }
1253
f02697a6aada [gaim-migrate @ 1263]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
229
2123
4cfdde0aa3f1 [gaim-migrate @ 2133]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2111
diff changeset
230 if (err < 0) {
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
231 const char *who;
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
232 char *msg;
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
233
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
234 who = gaim_conversation_get_name(conv);
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
235
5213
d56ea526b80c [gaim-migrate @ 5583]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
236 if (err == -E2BIG) {
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
237 msg = _("Unable to send message: The message is too large.");
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
238
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
239 if (!gaim_conv_present_error(who, account, msg)) {
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
240 msg = g_strdup_printf(_("Unable to send message to %s."), who);
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
241 gaim_notify_error(gc, NULL, msg, _("The message is too large."));
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
242 g_free(msg);
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
243 }
5213
d56ea526b80c [gaim-migrate @ 5583]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
244 }
d56ea526b80c [gaim-migrate @ 5583]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
245 else if (err == -ENOTCONN) {
d56ea526b80c [gaim-migrate @ 5583]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
246 gaim_debug(GAIM_DEBUG_ERROR, "conversation",
d56ea526b80c [gaim-migrate @ 5583]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
247 "Not yet connected.\n");
d56ea526b80c [gaim-migrate @ 5583]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
248 }
d56ea526b80c [gaim-migrate @ 5583]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
249 else {
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
250 msg = _("Unable to send message.");
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
251
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
252 if (!gaim_conv_present_error(who, account, msg)) {
10962
c0ed281c0422 [gaim-migrate @ 12765]
Gary Kramlich <grim@reaperworld.com>
parents: 10958
diff changeset
253 msg = g_strdup_printf(_("Unable to send message to %s."), who);
10132
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
254 gaim_notify_error(gc, NULL, msg, NULL);
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
255 g_free(msg);
a11b4c81d70d [gaim-migrate @ 11196]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
256 }
5213
d56ea526b80c [gaim-migrate @ 5583]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
257 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
258 }
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
259
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
260 g_free(displayed);
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
261 g_free(sent);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
262 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
263
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
264 GaimConvWindow *
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
265 gaim_conv_window_new(void)
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
266 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
267 GaimConvWindow *win;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
268
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
269 win = g_new0(GaimConvWindow, 1);
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11137
diff changeset
270 GAIM_DBUS_REGISTER_POINTER(win, GaimConvWindow);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
271
5860
27f5a177b7fc [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
272 windows = g_list_append(windows, win);
27f5a177b7fc [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
273
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 6982
diff changeset
274 win->ui_ops = gaim_conversations_get_win_ui_ops();
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
275
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
276 if (win->ui_ops != NULL && win->ui_ops->new_window != NULL)
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
277 win->ui_ops->new_window(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
278
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
279 return win;
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
280 }
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
281
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
282 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
283 gaim_conv_window_destroy(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
284 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
285 GaimConvWindowUiOps *ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
286 GList *node;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
287
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
288 g_return_if_fail(win != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
289
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
290 ops = gaim_conv_window_get_ui_ops(win);
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
291
4638
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
292 /*
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
293 * If there are any conversations in this, destroy them all. The last
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
294 * conversation will call gaim_conv_window_destroy(), but this time, this
4638
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
295 * check will fail and the window will actually be destroyed.
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
296 *
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
297 * This is needed because chats may not close right away. They may
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
298 * wait for notification first. When they get that, the window is
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
299 * already destroyed, and gaim either crashes or spits out gtk warnings.
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
300 * The problem is fixed with this check.
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
301 */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
302 if (gaim_conv_window_get_conversation_count(win) > 0) {
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
303
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
304 node = g_list_first(gaim_conv_window_get_conversations(win));
4647
c61c9b1d3378 [gaim-migrate @ 4957]
Nathan Walp <nwalp@pidgin.im>
parents: 4638
diff changeset
305 while(node != NULL)
4638
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
306 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
307 GaimConversation *conv = node->data;
4647
c61c9b1d3378 [gaim-migrate @ 4957]
Nathan Walp <nwalp@pidgin.im>
parents: 4638
diff changeset
308
c61c9b1d3378 [gaim-migrate @ 4957]
Nathan Walp <nwalp@pidgin.im>
parents: 4638
diff changeset
309 node = g_list_next(node);
4638
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
310
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
311 gaim_conversation_destroy(conv);
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
312 }
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
313 }
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
314 else
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
315 {
4638
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
316 if (ops != NULL && ops->destroy_window != NULL)
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
317 ops->destroy_window(win);
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
318
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
319 g_list_free(gaim_conv_window_get_conversations(win));
4638
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
320
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
321 windows = g_list_remove(windows, win);
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
322
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11137
diff changeset
323 GAIM_DBUS_UNREGISTER_POINTER(win);
4638
714511ae10a6 [gaim-migrate @ 4946]
Christian Hammond <chipx86@chipx86.com>
parents: 4622
diff changeset
324 g_free(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
325 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
326 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
327
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
328 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
329 gaim_conv_window_show(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
330 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
331 GaimConvWindowUiOps *ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
332
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
333 g_return_if_fail(win != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
334
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
335 ops = gaim_conv_window_get_ui_ops(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
336
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
337 if (ops == NULL || ops->show == NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
338 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
339
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
340 ops->show(win);
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
341 }
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
342
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
343 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
344 gaim_conv_window_hide(GaimConvWindow *win)
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
345 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
346 GaimConvWindowUiOps *ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
347
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
348 g_return_if_fail(win != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
349
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
350 ops = gaim_conv_window_get_ui_ops(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
351
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
352 if (ops == NULL || ops->hide == NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
353 return;
3790
8f009843ceeb [gaim-migrate @ 3930]
Rob Flynn <gaim@robflynn.com>
parents: 3789
diff changeset
354
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
355 ops->hide(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
356 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
357
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
358 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
359 gaim_conv_window_raise(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
360 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
361 GaimConvWindowUiOps *ops;
3790
8f009843ceeb [gaim-migrate @ 3930]
Rob Flynn <gaim@robflynn.com>
parents: 3789
diff changeset
362
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
363 g_return_if_fail(win != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
364
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
365 ops = gaim_conv_window_get_ui_ops(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
366
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
367 if (ops == NULL || ops->raise == NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
368 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
369
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
370 ops->raise(win);
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
371 }
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
372
9260
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
373 gboolean
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
374 gaim_conv_window_has_focus(GaimConvWindow *win)
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
375 {
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
376 gboolean ret = FALSE;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
377 GaimConvWindowUiOps *ops;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
378
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
379 g_return_val_if_fail(win != NULL, FALSE);
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
380
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
381 ops = gaim_conv_window_get_ui_ops(win);
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
382
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
383 if (ops != NULL && ops->has_focus != NULL)
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
384 ret = ops->has_focus(win);
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
385
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
386 return ret;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
387 }
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
388
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
389 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
390 gaim_conv_window_set_ui_ops(GaimConvWindow *win, GaimConvWindowUiOps *ops)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
391 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
392 GaimConversationUiOps *conv_ops = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
393 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
394
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
395 g_return_if_fail(win != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
396
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
397 if (win->ui_ops == ops)
3790
8f009843ceeb [gaim-migrate @ 3930]
Rob Flynn <gaim@robflynn.com>
parents: 3789
diff changeset
398 return;
8f009843ceeb [gaim-migrate @ 3930]
Rob Flynn <gaim@robflynn.com>
parents: 3789
diff changeset
399
5139
24c56d94ed79 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
400 if (ops != NULL && ops->get_conversation_ui_ops != NULL)
24c56d94ed79 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
401 conv_ops = ops->get_conversation_ui_ops();
24c56d94ed79 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
402
24c56d94ed79 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
403 if (win->ui_ops != NULL && win->ui_ops->destroy_window != NULL)
24c56d94ed79 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
404 win->ui_ops->destroy_window(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
405
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
406 win->ui_ops = ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
407
5139
24c56d94ed79 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
408 if (win->ui_ops != NULL && win->ui_ops->new_window != NULL)
24c56d94ed79 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
409 win->ui_ops->new_window(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
410
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
411 for (l = gaim_conv_window_get_conversations(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
412 l != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
413 l = l->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
414
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
415 GaimConversation *conv = (GaimConversation *)l;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
416
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
417 gaim_conversation_set_ui_ops(conv, conv_ops);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
418
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
419 if (win->ui_ops != NULL && win->ui_ops->add_conversation != NULL)
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
420 win->ui_ops->add_conversation(win, conv);
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
421 }
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
422 }
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
423
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
424 GaimConvWindowUiOps *
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
425 gaim_conv_window_get_ui_ops(const GaimConvWindow *win)
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
426 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
427 g_return_val_if_fail(win != NULL, NULL);
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
428
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
429 return win->ui_ops;
858
e514a22143a3 [gaim-migrate @ 868]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 856
diff changeset
430 }
e514a22143a3 [gaim-migrate @ 868]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 856
diff changeset
431
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
432 int
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
433 gaim_conv_window_add_conversation(GaimConvWindow *win, GaimConversation *conv)
858
e514a22143a3 [gaim-migrate @ 868]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 856
diff changeset
434 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
435 GaimConvWindowUiOps *ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
436
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
437 g_return_val_if_fail(win != NULL, -1);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
438 g_return_val_if_fail(conv != NULL, -1);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
439
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
440 if (gaim_conversation_get_window(conv) != NULL) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
441 gaim_conv_window_remove_conversation(
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
442 gaim_conversation_get_window(conv),
10824
38b3d6349bae [gaim-migrate @ 12488]
Tim Ringenbach <marv@pidgin.im>
parents: 10805
diff changeset
443 conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
444 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
445
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
446 ops = gaim_conv_window_get_ui_ops(win);
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
447
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
448 win->conversations = g_list_append(win->conversations, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
449 win->conversation_count++;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
450
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
451 if (ops != NULL) {
4369
228ac8ae0f99 [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
452 conv->window = win;
228ac8ae0f99 [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
453
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
454 if (ops->get_conversation_ui_ops != NULL)
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
455 gaim_conversation_set_ui_ops(conv, ops->get_conversation_ui_ops());
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
456
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
457 if (ops->add_conversation != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
458 ops->add_conversation(win, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
459 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
460
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
461 return win->conversation_count - 1;
234
100138758e8d [gaim-migrate @ 244]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents: 230
diff changeset
462 }
611
29f64e3898ac [gaim-migrate @ 621]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 610
diff changeset
463
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
464 GaimConversation *
10824
38b3d6349bae [gaim-migrate @ 12488]
Tim Ringenbach <marv@pidgin.im>
parents: 10805
diff changeset
465 gaim_conv_window_remove_conversation(GaimConvWindow *win, GaimConversation *conv)
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
466 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
467 GaimConvWindowUiOps *ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
468 GList *node;
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
469
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
470 g_return_val_if_fail(win != NULL, NULL);
10824
38b3d6349bae [gaim-migrate @ 12488]
Tim Ringenbach <marv@pidgin.im>
parents: 10805
diff changeset
471 g_return_val_if_fail(conv != NULL, NULL);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
472
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
473 ops = gaim_conv_window_get_ui_ops(win);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
474
10824
38b3d6349bae [gaim-migrate @ 12488]
Tim Ringenbach <marv@pidgin.im>
parents: 10805
diff changeset
475 node = g_list_find(gaim_conv_window_get_conversations(win), conv);
38b3d6349bae [gaim-migrate @ 12488]
Tim Ringenbach <marv@pidgin.im>
parents: 10805
diff changeset
476
38b3d6349bae [gaim-migrate @ 12488]
Tim Ringenbach <marv@pidgin.im>
parents: 10805
diff changeset
477 if (!node)
38b3d6349bae [gaim-migrate @ 12488]
Tim Ringenbach <marv@pidgin.im>
parents: 10805
diff changeset
478 return NULL;
38b3d6349bae [gaim-migrate @ 12488]
Tim Ringenbach <marv@pidgin.im>
parents: 10805
diff changeset
479
4360
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
480 if (ops != NULL && ops->remove_conversation != NULL)
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
481 ops->remove_conversation(win, conv);
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
482
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
483 win->conversations = g_list_remove_link(win->conversations, node);
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
484
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
485 g_list_free_1(node);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
486
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
487 win->conversation_count--;
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
488
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
489 conv->window = NULL;
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
490
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
491 if (gaim_conv_window_get_conversation_count(win) == 0)
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
492 gaim_conv_window_destroy(win);
1253
f02697a6aada [gaim-migrate @ 1263]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
493
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
494 return conv;
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
495 }
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
496
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
497 size_t
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
498 gaim_conv_window_get_conversation_count(const GaimConvWindow *win)
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
499 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
500 g_return_val_if_fail(win != NULL, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
501
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
502 return win->conversation_count;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
503 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
504
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
505 void
10827
e87fea8e6914 [gaim-migrate @ 12492]
Tim Ringenbach <marv@pidgin.im>
parents: 10824
diff changeset
506 gaim_conv_window_switch_conversation(GaimConvWindow *win, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
507 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
508 GaimConvWindowUiOps *ops;
10827
e87fea8e6914 [gaim-migrate @ 12492]
Tim Ringenbach <marv@pidgin.im>
parents: 10824
diff changeset
509 GaimConversation *old_conv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
510
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
511 g_return_if_fail(win != NULL);
10827
e87fea8e6914 [gaim-migrate @ 12492]
Tim Ringenbach <marv@pidgin.im>
parents: 10824
diff changeset
512 g_return_if_fail(conv != NULL);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
513
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
514 old_conv = gaim_conv_window_get_active_conversation(win);
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
515
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
516 gaim_signal_emit(gaim_conversations_get_handle(),
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
517 "conversation-switching", old_conv, conv);
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
518
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
519 ops = gaim_conv_window_get_ui_ops(win);
3790
8f009843ceeb [gaim-migrate @ 3930]
Rob Flynn <gaim@robflynn.com>
parents: 3789
diff changeset
520
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
521 if (ops != NULL && ops->switch_conversation != NULL)
10827
e87fea8e6914 [gaim-migrate @ 12492]
Tim Ringenbach <marv@pidgin.im>
parents: 10824
diff changeset
522 ops->switch_conversation(win, conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
523
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
524 gaim_signal_emit(gaim_conversations_get_handle(),
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
525 "conversation-switched", old_conv, conv);
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
526 }
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
527
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
528 GaimConversation *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
529 gaim_conv_window_get_active_conversation(const GaimConvWindow *win)
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
530 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
531 GaimConvWindowUiOps *ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
532
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
533 g_return_val_if_fail(win != NULL, NULL);
206
aaf3904d36c2 [gaim-migrate @ 216]
Rob Flynn <gaim@robflynn.com>
parents: 189
diff changeset
534
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
535 if (gaim_conv_window_get_conversation_count(win) == 0)
5680
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5677
diff changeset
536 return NULL;
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5677
diff changeset
537
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
538 ops = gaim_conv_window_get_ui_ops(win);
1253
f02697a6aada [gaim-migrate @ 1263]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
539
10827
e87fea8e6914 [gaim-migrate @ 12492]
Tim Ringenbach <marv@pidgin.im>
parents: 10824
diff changeset
540 if (ops != NULL && ops->get_active_conversation != NULL)
e87fea8e6914 [gaim-migrate @ 12492]
Tim Ringenbach <marv@pidgin.im>
parents: 10824
diff changeset
541 return ops->get_active_conversation(win);
1253
f02697a6aada [gaim-migrate @ 1263]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
542
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
543 return NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
544 }
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
545
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
546 GList *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
547 gaim_conv_window_get_conversations(const GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
548 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
549 g_return_val_if_fail(win != NULL, NULL);
1253
f02697a6aada [gaim-migrate @ 1263]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
550
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
551 return win->conversations;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
552 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
553
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
554 GList *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
555 gaim_get_windows(void)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
556 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
557 return windows;
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
558 }
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
559
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
560 GaimConvWindow *
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
561 gaim_get_first_window_with_type(GaimConversationType type)
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
562 {
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
563 GList *wins, *convs;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
564 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
565 GaimConversation *conv;
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
566
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
567 if (type == GAIM_CONV_TYPE_UNKNOWN)
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
568 return NULL;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
569
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
570 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
571 win = (GaimConvWindow *)wins->data;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
572
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
573 for (convs = gaim_conv_window_get_conversations(win);
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
574 convs != NULL;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
575 convs = convs->next) {
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
576
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
577 conv = (GaimConversation *)convs->data;
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
578
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
579 if (gaim_conversation_get_type(conv) == type)
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
580 return win;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
581 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
582 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
583
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
584 return NULL;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
585 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
586
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
587 GaimConvWindow *
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
588 gaim_get_last_window_with_type(GaimConversationType type)
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
589 {
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
590 GList *wins, *convs;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
591 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
592 GaimConversation *conv;
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
593
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
594 if (type == GAIM_CONV_TYPE_UNKNOWN)
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
595 return NULL;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
596
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
597 for (wins = g_list_last(gaim_get_windows());
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
598 wins != NULL;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
599 wins = wins->prev) {
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
600
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
601 win = (GaimConvWindow *)wins->data;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
602
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
603 for (convs = gaim_conv_window_get_conversations(win);
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
604 convs != NULL;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
605 convs = convs->next) {
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
606
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
607 conv = (GaimConversation *)convs->data;
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
608
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
609 if (gaim_conversation_get_type(conv) == type)
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
610 return win;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
611 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
612 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
613
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
614 return NULL;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
615 }
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
616
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
617 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
618 * Conversation API
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
619 **************************************************************************/
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
620 static void
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
621 gaim_conversation_chat_cleanup_for_rejoin(GaimConversation *conv)
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
622 {
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
623 const char *disp;
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
624 GaimAccount *account;
8373
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
625 GaimConnection *gc;
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
626
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
627 account = gaim_conversation_get_account(conv);
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
628
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
629 g_list_foreach(conv->logs, (GFunc)gaim_log_free, NULL);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
630 g_list_free(conv->logs);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
631 conv->logs = g_list_append(NULL, gaim_log_new(GAIM_LOG_CHAT, gaim_conversation_get_name(conv),
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
632 account, conv, time(NULL)));
8373
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
633
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
634 gc = gaim_account_get_connection(account);
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
635
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
636 if ((disp = gaim_connection_get_display_name(gc)) != NULL)
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
637 gaim_conv_chat_set_nick(GAIM_CONV_CHAT(conv), disp);
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
638 else
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
639 {
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
640 gaim_conv_chat_set_nick(GAIM_CONV_CHAT(conv),
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
641 gaim_account_get_username(account));
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
642 }
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
643
8373
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
644 gaim_conv_chat_clear_users(GAIM_CONV_CHAT(conv));
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
645 gaim_conv_chat_set_topic(GAIM_CONV_CHAT(conv), NULL, NULL);
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
646 GAIM_CONV_CHAT(conv)->left = FALSE;
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
647
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
648 gaim_conversation_update(conv, GAIM_CONV_UPDATE_CHATLEFT);
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
649 }
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
650
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
651 GaimConversation *
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
652 gaim_conversation_new(GaimConversationType type, GaimAccount *account,
4476
bf88170ba269 [gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents: 4471
diff changeset
653 const char *name)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
654 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
655 GaimConversation *conv;
10665
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
656 GaimConnection *gc;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
657
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
658 g_return_val_if_fail(type != GAIM_CONV_TYPE_UNKNOWN, NULL);
7088
0920bc6160ae [gaim-migrate @ 7653]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
659 g_return_val_if_fail(account != NULL, NULL);
0920bc6160ae [gaim-migrate @ 7653]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
660 g_return_val_if_fail(name != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
661
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
662 /* Check if this conversation already exists. */
10246
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
663 if ((conv = gaim_find_conversation_with_account(type, name, account)) != NULL)
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
664 {
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
665 if (gaim_conversation_get_type(conv) != GAIM_CONV_TYPE_CHAT ||
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
666 gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)))
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
667 {
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
668 if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT)
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
669 gaim_conversation_chat_cleanup_for_rejoin(conv);
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
670
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
671 return conv;
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
672 }
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
673 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
674
10665
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
675 gc = gaim_account_get_connection(account);
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
676 g_return_val_if_fail(gc != NULL, NULL);
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
677
6402
d9015e8d06fd [gaim-migrate @ 6907]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
678 conv = g_new0(GaimConversation, 1);
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11137
diff changeset
679 GAIM_DBUS_REGISTER_POINTER(conv, GaimConversation);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
680
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
681 conv->type = type;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4481
diff changeset
682 conv->account = account;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
683 conv->name = g_strdup(name);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
684 conv->title = g_strdup(name);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
685 conv->send_history = g_list_append(NULL, NULL);
5139
24c56d94ed79 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
686 conv->data = g_hash_table_new_full(g_str_hash, g_str_equal,
4876
b6ec886c8c77 [gaim-migrate @ 5206]
Christian Hammond <chipx86@chipx86.com>
parents: 4818
diff changeset
687 g_free, NULL);
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
688 conv->logs = g_list_append(NULL, gaim_log_new(type == GAIM_CONV_TYPE_CHAT ? GAIM_LOG_CHAT :
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8442
diff changeset
689 GAIM_LOG_IM, conv->name, account,
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
690 conv, time(NULL)));
10665
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
691 /* copy features from the connection. */
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
692 conv->features = gc->flags;
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
693
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
694
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
695 if (type == GAIM_CONV_TYPE_IM)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
696 {
9324
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9261
diff changeset
697 GaimBuddyIcon *icon;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
698 conv->u.im = g_new0(GaimConvIm, 1);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
699 conv->u.im->conv = conv;
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11137
diff changeset
700 GAIM_DBUS_REGISTER_POINTER(conv->u.im, GaimConvIm);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
701
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
702 ims = g_list_append(ims, conv);
9324
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9261
diff changeset
703 if ((icon = gaim_buddy_icons_find(account, name)))
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9261
diff changeset
704 gaim_conv_im_set_icon(conv->u.im, icon);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
705
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
706 gaim_conversation_set_logging(conv,
7562
7cbd89f3cef1 [gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents: 7561
diff changeset
707 gaim_prefs_get_bool("/core/logging/log_ims"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
708 }
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
709 else if (type == GAIM_CONV_TYPE_CHAT)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
710 {
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
711 const char *disp;
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
712
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
713 conv->u.chat = g_new0(GaimConvChat, 1);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
714 conv->u.chat->conv = conv;
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11137
diff changeset
715 GAIM_DBUS_REGISTER_POINTER(conv->u.chat, GaimConvChat);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
716
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
717 chats = g_list_append(chats, conv);
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
718
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
719 if ((disp = gaim_connection_get_display_name(account->gc)))
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
720 gaim_conv_chat_set_nick(conv->u.chat, disp);
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
721 else
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
722 gaim_conv_chat_set_nick(conv->u.chat,
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
723 gaim_account_get_username(account));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
724
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5539
diff changeset
725 gaim_conversation_set_logging(conv,
7562
7cbd89f3cef1 [gaim-migrate @ 8176]
Christian Hammond <chipx86@chipx86.com>
parents: 7561
diff changeset
726 gaim_prefs_get_bool("/core/logging/log_chats"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
727 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
728
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
729 conversations = g_list_append(conversations, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
730
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
731 /* Auto-set the title. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
732 gaim_conversation_autoset_title(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
733
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
734 /*
9155
29d593903d2b [gaim-migrate @ 9939]
Mark Doliner <markdoliner@pidgin.im>
parents: 9150
diff changeset
735 * Place the conversation somewhere. If there are no conversation
29d593903d2b [gaim-migrate @ 9939]
Mark Doliner <markdoliner@pidgin.im>
parents: 9150
diff changeset
736 * windows open, or if tabbed conversations are not enabled, then
29d593903d2b [gaim-migrate @ 9939]
Mark Doliner <markdoliner@pidgin.im>
parents: 9150
diff changeset
737 * place the conversation in a new window by itself. Otherwise use
29d593903d2b [gaim-migrate @ 9939]
Mark Doliner <markdoliner@pidgin.im>
parents: 9150
diff changeset
738 * the chosen conversation placement function.
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
739 */
9155
29d593903d2b [gaim-migrate @ 9939]
Mark Doliner <markdoliner@pidgin.im>
parents: 9150
diff changeset
740 if ((windows == NULL) || (!gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")))
8373
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
741 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
742 GaimConvWindow *win;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
743
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
744 win = gaim_conv_window_new();
9607
9154f00c1c82 [gaim-migrate @ 10450]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9606
diff changeset
745
9614
4da9c73665c3 [gaim-migrate @ 10458]
Luke Schierer <lschiere@pidgin.im>
parents: 9613
diff changeset
746 gaim_conv_window_add_conversation(win, conv);
4da9c73665c3 [gaim-migrate @ 10458]
Luke Schierer <lschiere@pidgin.im>
parents: 9613
diff changeset
747
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
748 /* Ensure the window is visible. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
749 gaim_conv_window_show(win);
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
750 }
8373
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
751 else
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
752 {
7602
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
753 if (place_conv == NULL)
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
754 {
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
755 ensure_default_funcs();
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
756
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
757 place_conv = conv_placement_last_created_win;
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
758 }
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
759
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
760 if (place_conv == NULL)
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
761 gaim_debug(GAIM_DEBUG_ERROR, "conversation",
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
762 "This is about to suck.\n");
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
763
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
764 place_conv(conv);
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
765 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
766
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
767 gaim_signal_emit(gaim_conversations_get_handle(),
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
768 "conversation-created", conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
769
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
770 return conv;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
771 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
772
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
773 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
774 gaim_conversation_destroy(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
775 {
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5139
diff changeset
776 GaimPluginProtocolInfo *prpl_info = NULL;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
777 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
778 GaimConversationUiOps *ops;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
779 GaimConnection *gc;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
780 const char *name;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
781 GList *node;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
782
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
783 g_return_if_fail(conv != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
784
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
785 win = gaim_conversation_get_window(conv);
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
786 ops = gaim_conversation_get_ui_ops(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
787 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
788 name = gaim_conversation_get_name(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
789
8373
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
790 if (gc != NULL)
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
791 {
5262
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
792 /* Still connected */
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
793 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
794
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
795 if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM)
8373
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
796 {
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5539
diff changeset
797 if (gaim_prefs_get_bool("/core/conversations/im/send_typing"))
6403
9b2428783d7c [gaim-migrate @ 6908]
Christian Hammond <chipx86@chipx86.com>
parents: 6402
diff changeset
798 serv_send_typing(gc, name, GAIM_NOT_TYPING);
5262
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
799
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
800 if (gc && prpl_info->convo_closed != NULL)
6403
9b2428783d7c [gaim-migrate @ 6908]
Christian Hammond <chipx86@chipx86.com>
parents: 6402
diff changeset
801 prpl_info->convo_closed(gc, name);
5262
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
802 }
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
803 else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT)
8373
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
804 {
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
805 int chat_id = gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv));
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
806 #if 0
5262
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
807 /*
6030
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6020
diff changeset
808 * This is unfortunately necessary, because calling
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6020
diff changeset
809 * serv_chat_leave() calls this gaim_conversation_destroy(),
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6020
diff changeset
810 * which leads to two calls here.. We can't just return after
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6020
diff changeset
811 * this, because then it'll return on the next pass. So, since
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6020
diff changeset
812 * serv_got_chat_left(), which is eventually called from the
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6020
diff changeset
813 * prpl that serv_chat_leave() calls, removes this conversation
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6020
diff changeset
814 * from the gc's buddy_chats list, we're going to check to see
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6020
diff changeset
815 * if this exists in the list. If so, we want to return after
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6020
diff changeset
816 * calling this, because it'll be called again. If not, fall
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6020
diff changeset
817 * through, because it'll have already been removed, and we'd
5262
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
818 * be on the 2nd pass.
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
819 *
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
820 * Long paragraph. <-- Short sentence.
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
821 *
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
822 * -- ChipX86
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
823 */
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
824
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
825 if (gc && g_slist_find(gc->buddy_chats, conv) != NULL) {
8373
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
826 serv_chat_leave(gc, chat_id);
5262
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
827
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
828 return;
2e879b7de7fd [gaim-migrate @ 5634]
José Mª Pérez Cáncer <jm_pc@users.sourceforge.net>
parents: 5213
diff changeset
829 }
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
830 #endif
8373
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
831 /*
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
832 * Instead of all of that, lets just close the window when
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
833 * the user tells us to, and let the prpl deal with the
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
834 * internals on it's own time. Don't do this if the prpl already
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
835 * knows it left the chat.
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
836 */
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
837 if (!gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)))
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
838 serv_chat_leave(gc, chat_id);
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
839
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
840 /*
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
841 * If they didn't call serv_got_chat_left by now, it's too late.
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
842 * So we better do it for them before we destroy the thing.
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
843 */
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
844 if (!gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)))
c71b30120b54 [gaim-migrate @ 9100]
Tim Ringenbach <marv@pidgin.im>
parents: 8348
diff changeset
845 serv_got_chat_left(gc, chat_id);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
846 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
847 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
848
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
849 gaim_signal_emit(gaim_conversations_get_handle(),
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
850 "deleting-conversation", conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
851
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
852 if (conv->name != NULL) g_free(conv->name);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
853 if (conv->title != NULL) g_free(conv->title);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
854
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
855 conv->name = NULL;
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
856 conv->title = NULL;
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
857
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
858 for (node = g_list_first(conv->send_history);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
859 node != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
860 node = g_list_next(node)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
861
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
862 if (node->data != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
863 g_free(node->data);
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
864 node->data = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
865 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
866
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
867 g_list_free(g_list_first(conv->send_history));
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
868
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
869 conversations = g_list_remove(conversations, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
870
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
871 if (conv->type == GAIM_CONV_TYPE_IM) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
872 gaim_conv_im_stop_typing_timeout(conv->u.im);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
873 gaim_conv_im_stop_type_again_timeout(conv->u.im);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
874
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
875 if (conv->u.im->icon != NULL)
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
876 gaim_buddy_icon_unref(conv->u.im->icon);
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
877 conv->u.im->icon = NULL;
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
878
11171
a25653d60f9c [gaim-migrate @ 13272]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11146
diff changeset
879 GAIM_DBUS_UNREGISTER_POINTER(conv->u.im);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
880 g_free(conv->u.im);
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
881 conv->u.im = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
882
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
883 ims = g_list_remove(ims, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
884 }
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
885 else if (conv->type == GAIM_CONV_TYPE_CHAT) {
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4522
diff changeset
886
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4522
diff changeset
887 for (node = conv->u.chat->in_room; node != NULL; node = node->next) {
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4522
diff changeset
888 if (node->data != NULL)
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10385
diff changeset
889 gaim_conv_chat_cb_destroy((GaimConvChatBuddy *)node->data);
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
890 node->data = NULL;
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4522
diff changeset
891 }
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4522
diff changeset
892
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4522
diff changeset
893 for (node = conv->u.chat->ignored; node != NULL; node = node->next) {
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4522
diff changeset
894 if (node->data != NULL)
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4522
diff changeset
895 g_free(node->data);
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
896 node->data = NULL;
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4522
diff changeset
897 }
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4522
diff changeset
898
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
899 g_list_free(conv->u.chat->in_room);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
900 g_list_free(conv->u.chat->ignored);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
901
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
902 conv->u.chat->in_room = NULL;
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
903 conv->u.chat->ignored = NULL;
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
904
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
905 if (conv->u.chat->who != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
906 g_free(conv->u.chat->who);
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
907 conv->u.chat->who = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
908
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
909 if (conv->u.chat->topic != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
910 g_free(conv->u.chat->topic);
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
911 conv->u.chat->topic = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
912
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10385
diff changeset
913 if(conv->u.chat->nick)
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10385
diff changeset
914 g_free(conv->u.chat->nick);
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10385
diff changeset
915
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11137
diff changeset
916 GAIM_DBUS_UNREGISTER_POINTER(conv->u.chat);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
917 g_free(conv->u.chat);
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
918 conv->u.chat = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
919
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
920 chats = g_list_remove(chats, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
921 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
922
4877
7d1f4381fed0 [gaim-migrate @ 5207]
Christian Hammond <chipx86@chipx86.com>
parents: 4876
diff changeset
923 g_hash_table_destroy(conv->data);
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
924 conv->data = NULL;
4876
b6ec886c8c77 [gaim-migrate @ 5206]
Christian Hammond <chipx86@chipx86.com>
parents: 4818
diff changeset
925
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
926 if (win != NULL) {
10824
38b3d6349bae [gaim-migrate @ 12488]
Tim Ringenbach <marv@pidgin.im>
parents: 10805
diff changeset
927 gaim_conv_window_remove_conversation(win, conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
928 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
929
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
930 if (ops != NULL && ops->destroy_conversation != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
931 ops->destroy_conversation(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
932
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
933 g_list_foreach(conv->logs, (GFunc)gaim_log_free, NULL);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
934 g_list_free(conv->logs);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
935
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11137
diff changeset
936 GAIM_DBUS_UNREGISTER_POINTER(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
937 g_free(conv);
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
938 conv = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
939 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
940
10665
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
941
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
942 void
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
943 gaim_conversation_set_features(GaimConversation *conv, GaimConnectionFlags features)
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
944 {
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
945 GaimConversationUiOps *ops;
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
946
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
947 g_return_if_fail(conv != NULL);
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
948
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
949 conv->features = features;
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
950
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
951 ops = conv->ui_ops;
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
952 if(ops && ops->updated)
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
953 ops->updated(conv, GAIM_CONV_UPDATE_FEATURES);
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
954 }
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
955
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
956
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
957 GaimConnectionFlags
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
958 gaim_conversation_get_features(GaimConversation *conv)
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
959 {
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
960 g_return_val_if_fail(conv != NULL, 0);
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
961 return conv->features;
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
962 }
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
963
66d468c9f67c [gaim-migrate @ 12205]
Sean Egan <seanegan@pidgin.im>
parents: 10526
diff changeset
964
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
965 GaimConversationType
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
966 gaim_conversation_get_type(const GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
967 {
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
968 g_return_val_if_fail(conv != NULL, GAIM_CONV_TYPE_UNKNOWN);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
969
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
970 return conv->type;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
971 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
972
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
973 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
974 gaim_conversation_set_ui_ops(GaimConversation *conv,
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
975 GaimConversationUiOps *ops)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
976 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
977 g_return_if_fail(conv != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
978
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
979 if (conv->ui_ops == ops)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
980 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
981
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
982 if (conv->ui_ops != NULL && conv->ui_ops->destroy_conversation != NULL)
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
983 conv->ui_ops->destroy_conversation(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
984
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
985 conv->ui_data = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
986
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
987 conv->ui_ops = ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
988 }
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
989
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
990 GaimConversationUiOps *
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
991 gaim_conversation_get_ui_ops(const GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
992 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
993 g_return_val_if_fail(conv != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
994
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
995 return conv->ui_ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
996 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
997
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
998 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
999 gaim_conversation_set_account(GaimConversation *conv, GaimAccount *account)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1000 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1001 g_return_if_fail(conv != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1002
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1003 if (account == gaim_conversation_get_account(conv))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1004 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1005
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4481
diff changeset
1006 conv->account = account;
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4481
diff changeset
1007
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4481
diff changeset
1008 gaim_conversation_update(conv, GAIM_CONV_UPDATE_ACCOUNT);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1009 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1010
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1011 GaimAccount *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1012 gaim_conversation_get_account(const GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1013 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1014 g_return_val_if_fail(conv != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1015
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4481
diff changeset
1016 return conv->account;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1017 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1018
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1019 GaimConnection *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1020 gaim_conversation_get_gc(const GaimConversation *conv)
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1021 {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1022 GaimAccount *account;
4425
b2ccc08ed727 [gaim-migrate @ 4700]
Christian Hammond <chipx86@chipx86.com>
parents: 4415
diff changeset
1023
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1024 g_return_val_if_fail(conv != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1025
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4481
diff changeset
1026 account = gaim_conversation_get_account(conv);
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4481
diff changeset
1027
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4481
diff changeset
1028 if (account == NULL)
4425
b2ccc08ed727 [gaim-migrate @ 4700]
Christian Hammond <chipx86@chipx86.com>
parents: 4415
diff changeset
1029 return NULL;
b2ccc08ed727 [gaim-migrate @ 4700]
Christian Hammond <chipx86@chipx86.com>
parents: 4415
diff changeset
1030
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4481
diff changeset
1031 return account->gc;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1032 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1033
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1034 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1035 gaim_conversation_set_title(GaimConversation *conv, const char *title)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1036 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1037 GaimConversationUiOps *ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1038
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1039 g_return_if_fail(conv != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1040 g_return_if_fail(title != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1041
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1042 if (conv->title != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1043 g_free(conv->title);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1044
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1045 conv->title = g_strdup(title);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1046
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
1047 ops = gaim_conversation_get_ui_ops(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1048
8155
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8078
diff changeset
1049 if (ops != NULL && ops->updated != NULL)
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8078
diff changeset
1050 ops->updated(conv, GAIM_CONV_UPDATE_TITLE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1051 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1052
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1053 const char *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1054 gaim_conversation_get_title(const GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1055 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1056 g_return_val_if_fail(conv != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1057
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1058 return conv->title;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1059 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1060
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1061 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1062 gaim_conversation_autoset_title(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1063 {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1064 GaimAccount *account;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1065 GaimBuddy *b;
8015
52c74f82aff3 [gaim-migrate @ 8695]
Nathan Walp <nwalp@pidgin.im>
parents: 7947
diff changeset
1066 GaimChat *chat;
52c74f82aff3 [gaim-migrate @ 8695]
Nathan Walp <nwalp@pidgin.im>
parents: 7947
diff changeset
1067 const char *text = NULL, *name;
3799
1a53373deee6 [gaim-migrate @ 3941]
Nathan Walp <nwalp@pidgin.im>
parents: 3790
diff changeset
1068
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1069 g_return_if_fail(conv != NULL);
2267
9704c0f60689 [gaim-migrate @ 2277]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2264
diff changeset
1070
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4481
diff changeset
1071 account = gaim_conversation_get_account(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1072 name = gaim_conversation_get_name(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1073
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
1074 if(gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) {
10364
5d00600a2fe9 [gaim-migrate @ 11582]
Sean Egan <seanegan@pidgin.im>
parents: 10349
diff changeset
1075 if(account && ((b = gaim_find_buddy(account, name)) != NULL))
11264
90bd0955461b [gaim-migrate @ 13445]
Mark Doliner <markdoliner@pidgin.im>
parents: 11256
diff changeset
1076 text = gaim_buddy_get_alias(b);
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
1077 } else if(gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) {
10364
5d00600a2fe9 [gaim-migrate @ 11582]
Sean Egan <seanegan@pidgin.im>
parents: 10349
diff changeset
1078 if(account && ((chat = gaim_blist_find_chat(account, name)) != NULL))
5d00600a2fe9 [gaim-migrate @ 11582]
Sean Egan <seanegan@pidgin.im>
parents: 10349
diff changeset
1079 text = chat->alias;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1080 }
10364
5d00600a2fe9 [gaim-migrate @ 11582]
Sean Egan <seanegan@pidgin.im>
parents: 10349
diff changeset
1081
8015
52c74f82aff3 [gaim-migrate @ 8695]
Nathan Walp <nwalp@pidgin.im>
parents: 7947
diff changeset
1082
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10104
diff changeset
1083 if(text == NULL)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1084 text = name;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1085
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1086 gaim_conversation_set_title(conv, text);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1087 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1088
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1089 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1090 gaim_conversation_set_unseen(GaimConversation *conv, GaimUnseenState state)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1091 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1092 g_return_if_fail(conv != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1093
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1094 conv->unseen = state;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1095
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1096 gaim_conversation_update(conv, GAIM_CONV_UPDATE_UNSEEN);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1097 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1098
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1099 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1100 gaim_conversation_foreach(void (*func)(GaimConversation *conv))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1101 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1102 GaimConversation *conv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1103 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1104
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1105 g_return_if_fail(func != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1106
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1107 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1108 conv = (GaimConversation *)l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1109
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1110 func(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1111 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1112 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1113
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1114 GaimUnseenState
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1115 gaim_conversation_get_unseen(const GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1116 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1117 g_return_val_if_fail(conv != NULL, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1118
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1119 return conv->unseen;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1120 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1121
7256
311c8febfc92 [gaim-migrate @ 7833]
Christian Hammond <chipx86@chipx86.com>
parents: 7125
diff changeset
1122 void
311c8febfc92 [gaim-migrate @ 7833]
Christian Hammond <chipx86@chipx86.com>
parents: 7125
diff changeset
1123 gaim_conversation_set_name(GaimConversation *conv, const char *name)
311c8febfc92 [gaim-migrate @ 7833]
Christian Hammond <chipx86@chipx86.com>
parents: 7125
diff changeset
1124 {
311c8febfc92 [gaim-migrate @ 7833]
Christian Hammond <chipx86@chipx86.com>
parents: 7125
diff changeset
1125 g_return_if_fail(conv != NULL);
311c8febfc92 [gaim-migrate @ 7833]
Christian Hammond <chipx86@chipx86.com>
parents: 7125
diff changeset
1126
311c8febfc92 [gaim-migrate @ 7833]
Christian Hammond <chipx86@chipx86.com>
parents: 7125
diff changeset
1127 if (conv->name != NULL)
311c8febfc92 [gaim-migrate @ 7833]
Christian Hammond <chipx86@chipx86.com>
parents: 7125
diff changeset
1128 g_free(conv->name);
311c8febfc92 [gaim-migrate @ 7833]
Christian Hammond <chipx86@chipx86.com>
parents: 7125
diff changeset
1129
311c8febfc92 [gaim-migrate @ 7833]
Christian Hammond <chipx86@chipx86.com>
parents: 7125
diff changeset
1130 conv->name = (name == NULL ? NULL : g_strdup(name));
7257
599b8494e6ee [gaim-migrate @ 7834]
Christian Hammond <chipx86@chipx86.com>
parents: 7256
diff changeset
1131
599b8494e6ee [gaim-migrate @ 7834]
Christian Hammond <chipx86@chipx86.com>
parents: 7256
diff changeset
1132 gaim_conversation_autoset_title(conv);
7256
311c8febfc92 [gaim-migrate @ 7833]
Christian Hammond <chipx86@chipx86.com>
parents: 7125
diff changeset
1133 }
311c8febfc92 [gaim-migrate @ 7833]
Christian Hammond <chipx86@chipx86.com>
parents: 7125
diff changeset
1134
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1135 const char *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1136 gaim_conversation_get_name(const GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1137 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1138 g_return_val_if_fail(conv != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1139
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1140 return conv->name;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1141 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1142
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1143 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1144 gaim_conversation_set_logging(GaimConversation *conv, gboolean log)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1145 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1146 g_return_if_fail(conv != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1147
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1148 conv->logging = log;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1149
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1150 gaim_conversation_update(conv, GAIM_CONV_UPDATE_LOGGING);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1151 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1152
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1153 gboolean
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1154 gaim_conversation_is_logging(const GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1155 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1156 g_return_val_if_fail(conv != NULL, FALSE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1157
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1158 return conv->logging;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1159 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1160
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1161 GList *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1162 gaim_conversation_get_send_history(const GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1163 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1164 g_return_val_if_fail(conv != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1165
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1166 return conv->send_history;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1167 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1168
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1169 GaimConvWindow *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1170 gaim_conversation_get_window(const GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1171 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1172 g_return_val_if_fail(conv != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1173
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1174 return conv->window;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1175 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1176
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1177 GaimConvIm *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1178 gaim_conversation_get_im_data(const GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1179 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1180 g_return_val_if_fail(conv != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1181
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
1182 if (gaim_conversation_get_type(conv) != GAIM_CONV_TYPE_IM)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1183 return NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1184
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1185 return conv->u.im;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1186 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1187
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1188 GaimConvChat *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1189 gaim_conversation_get_chat_data(const GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1190 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1191 g_return_val_if_fail(conv != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1192
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
1193 if (gaim_conversation_get_type(conv) != GAIM_CONV_TYPE_CHAT)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1194 return NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1195
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1196 return conv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1197 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1198
4876
b6ec886c8c77 [gaim-migrate @ 5206]
Christian Hammond <chipx86@chipx86.com>
parents: 4818
diff changeset
1199 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1200 gaim_conversation_set_data(GaimConversation *conv, const char *key,
4877
7d1f4381fed0 [gaim-migrate @ 5207]
Christian Hammond <chipx86@chipx86.com>
parents: 4876
diff changeset
1201 gpointer data)
4876
b6ec886c8c77 [gaim-migrate @ 5206]
Christian Hammond <chipx86@chipx86.com>
parents: 4818
diff changeset
1202 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1203 g_return_if_fail(conv != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1204 g_return_if_fail(key != NULL);
4876
b6ec886c8c77 [gaim-migrate @ 5206]
Christian Hammond <chipx86@chipx86.com>
parents: 4818
diff changeset
1205
4877
7d1f4381fed0 [gaim-migrate @ 5207]
Christian Hammond <chipx86@chipx86.com>
parents: 4876
diff changeset
1206 g_hash_table_replace(conv->data, g_strdup(key), data);
4876
b6ec886c8c77 [gaim-migrate @ 5206]
Christian Hammond <chipx86@chipx86.com>
parents: 4818
diff changeset
1207 }
b6ec886c8c77 [gaim-migrate @ 5206]
Christian Hammond <chipx86@chipx86.com>
parents: 4818
diff changeset
1208
b6ec886c8c77 [gaim-migrate @ 5206]
Christian Hammond <chipx86@chipx86.com>
parents: 4818
diff changeset
1209 gpointer
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1210 gaim_conversation_get_data(GaimConversation *conv, const char *key)
4876
b6ec886c8c77 [gaim-migrate @ 5206]
Christian Hammond <chipx86@chipx86.com>
parents: 4818
diff changeset
1211 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1212 g_return_val_if_fail(conv != NULL, NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1213 g_return_val_if_fail(key != NULL, NULL);
4876
b6ec886c8c77 [gaim-migrate @ 5206]
Christian Hammond <chipx86@chipx86.com>
parents: 4818
diff changeset
1214
4877
7d1f4381fed0 [gaim-migrate @ 5207]
Christian Hammond <chipx86@chipx86.com>
parents: 4876
diff changeset
1215 return g_hash_table_lookup(conv->data, key);
4876
b6ec886c8c77 [gaim-migrate @ 5206]
Christian Hammond <chipx86@chipx86.com>
parents: 4818
diff changeset
1216 }
b6ec886c8c77 [gaim-migrate @ 5206]
Christian Hammond <chipx86@chipx86.com>
parents: 4818
diff changeset
1217
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1218 GList *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1219 gaim_get_conversations(void)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1220 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1221 return conversations;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1222 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1223
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1224 GList *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1225 gaim_get_ims(void)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1226 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1227 return ims;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1228 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1229
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1230 GList *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1231 gaim_get_chats(void)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1232 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1233 return chats;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1234 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1235
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7257
diff changeset
1236
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1237 GaimConversation *
10246
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1238 gaim_find_conversation_with_account(GaimConversationType type,
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1239 const char *name,
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1240 const GaimAccount *account)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1241 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1242 GaimConversation *c = NULL;
10246
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1243 gchar *name1;
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1244 const gchar *name2;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1245 GList *cnv;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1246
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1247 g_return_val_if_fail(name != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1248
10246
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1249 name1 = g_strdup(gaim_normalize(account, name));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1250
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1251 for (cnv = gaim_get_conversations(); cnv != NULL; cnv = cnv->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1252 c = (GaimConversation *)cnv->data;
10246
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1253 name2 = gaim_normalize(account, gaim_conversation_get_name(c));
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1254
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
1255 if (((type == GAIM_CONV_TYPE_ANY) || (type == gaim_conversation_get_type(c))) &&
10246
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1256 (account == gaim_conversation_get_account(c)) &&
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1257 !gaim_utf8_strcasecmp(name1, name2)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1258
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1259 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1260 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1261
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1262 c = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1263 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1264
10246
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1265 g_free(name1);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1266
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1267 return c;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1268 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1269
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1270 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1271 gaim_conversation_write(GaimConversation *conv, const char *who,
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6846
diff changeset
1272 const char *message, GaimMessageFlags flags,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1273 time_t mtime)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1274 {
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5139
diff changeset
1275 GaimPluginProtocolInfo *prpl_info = NULL;
6496
9833c2665143 [gaim-migrate @ 7011]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
1276 GaimConnection *gc = NULL;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1277 GaimAccount *account;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1278 GaimConversationUiOps *ops;
11468
3411c0d7f597 [gaim-migrate @ 13708]
Richard Laager <rlaager@pidgin.im>
parents: 11454
diff changeset
1279 const char *alias;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1280 GaimConvWindow *win;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1281 GaimBuddy *b;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1282 GaimUnseenState unseen;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1283 /* int logging_font_options = 0; */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1284
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1285 g_return_if_fail(conv != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1286 g_return_if_fail(message != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1287
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
1288 ops = gaim_conversation_get_ui_ops(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1289
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1290 if (ops == NULL || ops->write_conv == NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1291 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1292
4608
c165a90c65fc [gaim-migrate @ 4896]
Nathan Walp <nwalp@pidgin.im>
parents: 4574
diff changeset
1293 account = gaim_conversation_get_account(conv);
6496
9833c2665143 [gaim-migrate @ 7011]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
1294
9833c2665143 [gaim-migrate @ 7011]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
1295 if (account != NULL)
9833c2665143 [gaim-migrate @ 7011]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
1296 gc = gaim_account_get_connection(account);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1297
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
1298 if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT &&
6496
9833c2665143 [gaim-migrate @ 7011]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
1299 (gc == NULL || !g_slist_find(gc->buddy_chats, conv)))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1300 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1301
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
1302 if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM &&
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1303 !g_list_find(gaim_get_conversations(), conv))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1304 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1305
11468
3411c0d7f597 [gaim-migrate @ 13708]
Richard Laager <rlaager@pidgin.im>
parents: 11454
diff changeset
1306 if (who == NULL || *who == '\0')
3411c0d7f597 [gaim-migrate @ 13708]
Richard Laager <rlaager@pidgin.im>
parents: 11454
diff changeset
1307 who = gaim_conversation_get_name(conv);
3411c0d7f597 [gaim-migrate @ 13708]
Richard Laager <rlaager@pidgin.im>
parents: 11454
diff changeset
1308
3411c0d7f597 [gaim-migrate @ 13708]
Richard Laager <rlaager@pidgin.im>
parents: 11454
diff changeset
1309 alias = who;
3411c0d7f597 [gaim-migrate @ 13708]
Richard Laager <rlaager@pidgin.im>
parents: 11454
diff changeset
1310
9613
cd81e0c76ec0 [gaim-migrate @ 10456]
Kevin Stange <kstange@pidgin.im>
parents: 9607
diff changeset
1311 if (account != NULL) {
cd81e0c76ec0 [gaim-migrate @ 10456]
Kevin Stange <kstange@pidgin.im>
parents: 9607
diff changeset
1312 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol_id(account)));
5350
966c6d4d7bdd [gaim-migrate @ 5726]
Christian Hammond <chipx86@chipx86.com>
parents: 5262
diff changeset
1313
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
1314 if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM ||
5350
966c6d4d7bdd [gaim-migrate @ 5726]
Christian Hammond <chipx86@chipx86.com>
parents: 5262
diff changeset
1315 !(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) {
966c6d4d7bdd [gaim-migrate @ 5726]
Christian Hammond <chipx86@chipx86.com>
parents: 5262
diff changeset
1316
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1317 if (flags & GAIM_MESSAGE_SEND) {
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1318 b = gaim_find_buddy(account,
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1319 gaim_account_get_username(account));
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1320
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1321 if (gaim_account_get_alias(account) != NULL)
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1322 alias = account->alias;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1323 else if (b != NULL && strcmp(b->name, gaim_buddy_get_contact_alias(b)))
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1324 alias = gaim_buddy_get_contact_alias(b);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1325 else if (gaim_connection_get_display_name(gc) != NULL)
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1326 alias = gaim_connection_get_display_name(gc);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1327 else
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1328 alias = gaim_account_get_username(account);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1329 }
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1330 else
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1331 {
5350
966c6d4d7bdd [gaim-migrate @ 5726]
Christian Hammond <chipx86@chipx86.com>
parents: 5262
diff changeset
1332 b = gaim_find_buddy(account, who);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1333
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1334 if (b != NULL)
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1335 alias = gaim_buddy_get_contact_alias(b);
1772
c759c01bd66f [gaim-migrate @ 1782]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1764
diff changeset
1336 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1337 }
474
8e9acf2f6c48 [gaim-migrate @ 484]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 473
diff changeset
1338 }
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
1339
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1340 if (gaim_conversation_is_logging(conv)) {
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1341 GList *log = conv->logs;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1342 while (log != NULL) {
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1343 gaim_log_write((GaimLog *)log->data, flags, alias, mtime, message);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1344 log = log->next;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1345 }
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1346 }
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1347 ops->write_conv(conv, who, alias, message, flags, mtime);
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2363
diff changeset
1348
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1349 win = gaim_conversation_get_window(conv);
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1350
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1351 /* Tab highlighting */
8722
01a0dc50a5ca [gaim-migrate @ 9477]
Sean Egan <seanegan@pidgin.im>
parents: 8635
diff changeset
1352 if (!(flags & GAIM_MESSAGE_RECV) && !(flags & GAIM_MESSAGE_SYSTEM) && !(flags & GAIM_MESSAGE_ERROR))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1353 return;
1479
e7ec4ce61f5b [gaim-migrate @ 1489]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1464
diff changeset
1354
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
1355 if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) {
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6607
diff changeset
1356 if ((flags & GAIM_MESSAGE_RECV) == GAIM_MESSAGE_RECV)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1357 gaim_conv_im_set_typing_state(GAIM_CONV_IM(conv), GAIM_NOT_TYPING);
1253
f02697a6aada [gaim-migrate @ 1263]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1358 }
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1359
10971
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1360 if (gaim_conv_window_has_focus(win) &&
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1361 gaim_conv_window_get_active_conversation(win) == conv)
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1362 {
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1363 unseen = GAIM_UNSEEN_NONE;
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1364 }
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1365 else
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1366 {
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6607
diff changeset
1367 if ((flags & GAIM_MESSAGE_NICK) == GAIM_MESSAGE_NICK ||
4616
177e05ba38a3 [gaim-migrate @ 4907]
Nathan Walp <nwalp@pidgin.im>
parents: 4608
diff changeset
1368 gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1369 unseen = GAIM_UNSEEN_NICK;
8722
01a0dc50a5ca [gaim-migrate @ 9477]
Sean Egan <seanegan@pidgin.im>
parents: 8635
diff changeset
1370 else if ((((flags & GAIM_MESSAGE_SYSTEM) == GAIM_MESSAGE_SYSTEM) ||
01a0dc50a5ca [gaim-migrate @ 9477]
Sean Egan <seanegan@pidgin.im>
parents: 8635
diff changeset
1371 ((flags & GAIM_MESSAGE_ERROR) == GAIM_MESSAGE_ERROR)) &&
6405
30166fa1b9a2 [gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents: 6403
diff changeset
1372 gaim_conversation_get_unseen(conv) != GAIM_UNSEEN_TEXT)
30166fa1b9a2 [gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents: 6403
diff changeset
1373 unseen = GAIM_UNSEEN_EVENT;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1374 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1375 unseen = GAIM_UNSEEN_TEXT;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1376 }
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1377
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1378 gaim_conversation_set_unseen(conv, unseen);
10971
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1379
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1380 /*
11048
13b50adb58f2 [gaim-migrate @ 12976]
Mark Doliner <markdoliner@pidgin.im>
parents: 11033
diff changeset
1381 * TODO: This is #if 0'ed out because we don't have a way of
13b50adb58f2 [gaim-migrate @ 12976]
Mark Doliner <markdoliner@pidgin.im>
parents: 11033
diff changeset
1382 * telling if a conversation window is minimized. This
13b50adb58f2 [gaim-migrate @ 12976]
Mark Doliner <markdoliner@pidgin.im>
parents: 11033
diff changeset
1383 * should probably be done in gtkconv.c anyway.
13b50adb58f2 [gaim-migrate @ 12976]
Mark Doliner <markdoliner@pidgin.im>
parents: 11033
diff changeset
1384 */
13b50adb58f2 [gaim-migrate @ 12976]
Mark Doliner <markdoliner@pidgin.im>
parents: 11033
diff changeset
1385 #if 0
13b50adb58f2 [gaim-migrate @ 12976]
Mark Doliner <markdoliner@pidgin.im>
parents: 11033
diff changeset
1386 /*
13b50adb58f2 [gaim-migrate @ 12976]
Mark Doliner <markdoliner@pidgin.im>
parents: 11033
diff changeset
1387 * This is auto-tab switching.
13b50adb58f2 [gaim-migrate @ 12976]
Mark Doliner <markdoliner@pidgin.im>
parents: 11033
diff changeset
1388 *
10971
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1389 * If we received an IM, and the GaimConvWindow is not active,
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1390 * then make this conversation the active tab in this GaimConvWindow.
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1391 *
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1392 * We do this so that, when the user comes back to the conversation
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1393 * window, the first thing they'll see is the new message. This is
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1394 * especially important when the IM window is flashing in their
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1395 * taskbar--we want the title of the window to be set to the name
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1396 * of the person that IMed them most recently.
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1397 */
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
1398 if ((gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) &&
10971
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1399 (flags & (GAIM_MESSAGE_RECV | GAIM_MESSAGE_ERROR)) &&
11048
13b50adb58f2 [gaim-migrate @ 12976]
Mark Doliner <markdoliner@pidgin.im>
parents: 11033
diff changeset
1400 (!gaim_conv_window_has_focus(win)) &&
13b50adb58f2 [gaim-migrate @ 12976]
Mark Doliner <markdoliner@pidgin.im>
parents: 11033
diff changeset
1401 (gaim_conv_window_is_minimized(win)))
10971
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1402 {
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1403 gaim_conv_window_switch_conversation(win, conv);
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1404 }
11048
13b50adb58f2 [gaim-migrate @ 12976]
Mark Doliner <markdoliner@pidgin.im>
parents: 11033
diff changeset
1405 #endif
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1406 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1407
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1408 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1409 gaim_conversation_update_progress(GaimConversation *conv, float percent)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1410 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1411 GaimConversationUiOps *ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1412
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1413 g_return_if_fail(conv != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1414 g_return_if_fail(percent >= 0 && percent <= 1);
3768
bb6cc9d30511 [gaim-migrate @ 3907]
Nathan Walp <nwalp@pidgin.im>
parents: 3763
diff changeset
1415
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1416 /*
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1417 * NOTE: A percent == 1 indicates that the progress bar should be
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1418 * closed.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1419 */
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
1420 ops = gaim_conversation_get_ui_ops(conv);
3768
bb6cc9d30511 [gaim-migrate @ 3907]
Nathan Walp <nwalp@pidgin.im>
parents: 3763
diff changeset
1421
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1422 if (ops != NULL && ops->update_progress != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1423 ops->update_progress(conv, percent);
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1424 }
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1425
9260
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1426 gboolean
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1427 gaim_conversation_has_focus(GaimConversation *conv)
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1428 {
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1429 gboolean ret = FALSE;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1430 GaimConvWindow *win;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1431 GaimConversationUiOps *ops;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1432
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1433 g_return_val_if_fail(conv != NULL, FALSE);
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1434
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1435 win = gaim_conversation_get_window(conv);
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1436 if (gaim_conv_window_get_active_conversation(win) != conv)
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1437 return FALSE;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1438
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1439 ops = gaim_conversation_get_ui_ops(conv);
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1440
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1441 if (ops != NULL && ops->has_focus != NULL)
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1442 ret = ops->has_focus(conv);
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1443
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1444 return ret;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1445 }
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9251
diff changeset
1446
7930
3005873ac411 [gaim-migrate @ 8601]
Mark Doliner <markdoliner@pidgin.im>
parents: 7879
diff changeset
1447 /*
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
1448 * TODO: Need to make sure calls to this function happen in the core
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
1449 * instead of the UI. That way UIs have less work to do, and the
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
1450 * core/UI split is cleaner. Also need to make sure this is called
7930
3005873ac411 [gaim-migrate @ 8601]
Mark Doliner <markdoliner@pidgin.im>
parents: 7879
diff changeset
1451 * when chats are added/removed from the blist.
3005873ac411 [gaim-migrate @ 8601]
Mark Doliner <markdoliner@pidgin.im>
parents: 7879
diff changeset
1452 */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1453 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1454 gaim_conversation_update(GaimConversation *conv, GaimConvUpdateType type)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1455 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1456 GaimConversationUiOps *ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1457
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1458 g_return_if_fail(conv != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1459
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
1460 ops = gaim_conversation_get_ui_ops(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1461
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1462 if (ops != NULL && ops->updated != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1463 ops->updated(conv, type);
9734
58a18645cbd5 [gaim-migrate @ 10595]
Kevin Stange <kstange@pidgin.im>
parents: 9633
diff changeset
1464
58a18645cbd5 [gaim-migrate @ 10595]
Kevin Stange <kstange@pidgin.im>
parents: 9633
diff changeset
1465 gaim_signal_emit(gaim_conversations_get_handle(),
58a18645cbd5 [gaim-migrate @ 10595]
Kevin Stange <kstange@pidgin.im>
parents: 9633
diff changeset
1466 "conversation-updated", conv, type);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1467 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1468
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1469 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1470 * IM Conversation API
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1471 **************************************************************************/
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1472 GaimConversation *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1473 gaim_conv_im_get_conversation(const GaimConvIm *im)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1474 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1475 g_return_val_if_fail(im != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1476
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1477 return im->conv;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1478 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1479
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1480 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1481 gaim_conv_im_set_icon(GaimConvIm *im, GaimBuddyIcon *icon)
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1482 {
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1483 g_return_if_fail(im != NULL);
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1484
9261
a0ed867a459e [gaim-migrate @ 10060]
Christian Hammond <chipx86@chipx86.com>
parents: 9260
diff changeset
1485 if (im->icon != icon)
a0ed867a459e [gaim-migrate @ 10060]
Christian Hammond <chipx86@chipx86.com>
parents: 9260
diff changeset
1486 {
a0ed867a459e [gaim-migrate @ 10060]
Christian Hammond <chipx86@chipx86.com>
parents: 9260
diff changeset
1487 if (im->icon != NULL)
a0ed867a459e [gaim-migrate @ 10060]
Christian Hammond <chipx86@chipx86.com>
parents: 9260
diff changeset
1488 gaim_buddy_icon_unref(im->icon);
a0ed867a459e [gaim-migrate @ 10060]
Christian Hammond <chipx86@chipx86.com>
parents: 9260
diff changeset
1489
a0ed867a459e [gaim-migrate @ 10060]
Christian Hammond <chipx86@chipx86.com>
parents: 9260
diff changeset
1490 im->icon = (icon == NULL ? NULL : gaim_buddy_icon_ref(icon));
a0ed867a459e [gaim-migrate @ 10060]
Christian Hammond <chipx86@chipx86.com>
parents: 9260
diff changeset
1491 }
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1492
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1493 gaim_conversation_update(gaim_conv_im_get_conversation(im),
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1494 GAIM_CONV_UPDATE_ICON);
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1495 }
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1496
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1497 GaimBuddyIcon *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1498 gaim_conv_im_get_icon(const GaimConvIm *im)
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1499 {
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1500 g_return_val_if_fail(im != NULL, NULL);
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1501
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1502 return im->icon;
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1503 }
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1504
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
1505 void
8288
457cf0339c09 [gaim-migrate @ 9012]
Christian Hammond <chipx86@chipx86.com>
parents: 8287
diff changeset
1506 gaim_conv_im_set_typing_state(GaimConvIm *im, GaimTypingState state)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1507 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1508 g_return_if_fail(im != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1509
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1510 im->typing_state = state;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1511 }
66
cf3be86d0b63 [gaim-migrate @ 76]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1512
8288
457cf0339c09 [gaim-migrate @ 9012]
Christian Hammond <chipx86@chipx86.com>
parents: 8287
diff changeset
1513 GaimTypingState
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1514 gaim_conv_im_get_typing_state(const GaimConvIm *im)
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1515 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1516 g_return_val_if_fail(im != NULL, 0);
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1517
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1518 return im->typing_state;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1519 }
3704
817dd1219f45 [gaim-migrate @ 3835]
Rob Flynn <gaim@robflynn.com>
parents: 3699
diff changeset
1520
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1521 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1522 gaim_conv_im_start_typing_timeout(GaimConvIm *im, int timeout)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1523 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1524 GaimConversation *conv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1525 const char *name;
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1526
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1527 g_return_if_fail(im != NULL);
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1528
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1529 if (im->typing_timeout > 0)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1530 gaim_conv_im_stop_typing_timeout(im);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1531
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1532 conv = gaim_conv_im_get_conversation(im);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1533 name = gaim_conversation_get_name(conv);
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1534
8273
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8271
diff changeset
1535 im->typing_timeout = gaim_timeout_add(timeout * 1000, reset_typing, conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1536 }
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1537
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1538 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1539 gaim_conv_im_stop_typing_timeout(GaimConvIm *im)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1540 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1541 g_return_if_fail(im != NULL);
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1542
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1543 if (im->typing_timeout == 0)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1544 return;
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1545
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
1546 gaim_timeout_remove(im->typing_timeout);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1547 im->typing_timeout = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1548 }
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1549
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1550 guint
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1551 gaim_conv_im_get_typing_timeout(const GaimConvIm *im)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1552 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1553 g_return_val_if_fail(im != NULL, 0);
3699
f84be29b4ce8 [gaim-migrate @ 3830]
Rob Flynn <gaim@robflynn.com>
parents: 3696
diff changeset
1554
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1555 return im->typing_timeout;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1556 }
3699
f84be29b4ce8 [gaim-migrate @ 3830]
Rob Flynn <gaim@robflynn.com>
parents: 3696
diff changeset
1557
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1558 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1559 gaim_conv_im_set_type_again(GaimConvIm *im, time_t val)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1560 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1561 g_return_if_fail(im != NULL);
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1562
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1563 im->type_again = val;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1564 }
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1565
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1566 time_t
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1567 gaim_conv_im_get_type_again(const GaimConvIm *im)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1568 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1569 g_return_val_if_fail(im != NULL, 0);
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1570
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1571 return im->type_again;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1572 }
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1573
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1574 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1575 gaim_conv_im_start_type_again_timeout(GaimConvIm *im)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1576 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1577 g_return_if_fail(im != NULL);
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1578
8273
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8271
diff changeset
1579 im->type_again_timeout = gaim_timeout_add(SEND_TYPED_TIMEOUT, send_typed,
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8271
diff changeset
1580 gaim_conv_im_get_conversation(im));
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1581 }
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1582
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1583 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1584 gaim_conv_im_stop_type_again_timeout(GaimConvIm *im)
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1585 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1586 g_return_if_fail(im != NULL);
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1587
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1588 if (im->type_again_timeout == 0)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1589 return;
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1590
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
1591 gaim_timeout_remove(im->type_again_timeout);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1592 im->type_again_timeout = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1593 }
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1594
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1595 guint
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1596 gaim_conv_im_get_type_again_timeout(const GaimConvIm *im)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1597 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1598 g_return_val_if_fail(im != NULL, 0);
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1599
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1600 return im->type_again_timeout;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1601 }
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1602
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1603 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1604 gaim_conv_im_update_typing(GaimConvIm *im)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1605 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1606 g_return_if_fail(im != NULL);
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1607
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1608 gaim_conversation_update(gaim_conv_im_get_conversation(im),
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1609 GAIM_CONV_UPDATE_TYPING);
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1610 }
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1611
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1612 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1613 gaim_conv_im_write(GaimConvIm *im, const char *who, const char *message,
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6846
diff changeset
1614 GaimMessageFlags flags, time_t mtime)
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
1615 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1616 GaimConversation *c;
1898
695a31e4452b [gaim-migrate @ 1908]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1889
diff changeset
1617
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1618 g_return_if_fail(im != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1619 g_return_if_fail(message != NULL);
1898
695a31e4452b [gaim-migrate @ 1908]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1889
diff changeset
1620
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1621 c = gaim_conv_im_get_conversation(im);
2787
050506d3945f [gaim-migrate @ 2800]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2773
diff changeset
1622
4382
fd60cabf2bae [gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents: 4378
diff changeset
1623 /* Raise the window, if specified in prefs. */
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
1624 if (c->ui_ops != NULL && c->ui_ops->write_im != NULL)
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6846
diff changeset
1625 c->ui_ops->write_im(c, who, message, flags, mtime);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1626 else
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6846
diff changeset
1627 gaim_conversation_write(c, who, message, flags, mtime);
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
1628 }
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
1629
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1630 gboolean gaim_conv_present_error(const char *who, GaimAccount *account, const char *what)
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1631 {
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1632 GaimConversation *conv;
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1633 GaimConvWindow *window;
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1634
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1635 g_return_val_if_fail(who != NULL, FALSE);
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1636 g_return_val_if_fail(account !=NULL, FALSE);
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1637 g_return_val_if_fail(what != NULL, FALSE);
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1638
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
1639 conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_ANY, who, account);
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1640 if (conv != NULL)
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1641 gaim_conversation_write(conv, NULL, what, GAIM_MESSAGE_ERROR, time(NULL));
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1642 else
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1643 return FALSE;
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1644 window = gaim_conversation_get_window(conv);
10246
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1645
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1646 /*
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1647 * Change the active conversation to this conversation unless the
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1648 * user is already using this window.
10971
4c823ffab27a [gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents: 10962
diff changeset
1649 * TODO: There's a good chance this is no longer necessary
10246
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1650 */
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10132
diff changeset
1651 if (!gaim_conv_window_has_focus(window))
10827
e87fea8e6914 [gaim-migrate @ 12492]
Tim Ringenbach <marv@pidgin.im>
parents: 10824
diff changeset
1652 gaim_conv_window_switch_conversation(window, conv);
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1653
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1654 gaim_conv_window_raise(window);
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1655
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1656 return TRUE;
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1657 }
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
1658
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1659 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1660 gaim_conv_im_send(GaimConvIm *im, const char *message)
2379
cffc8ebf1bd4 [gaim-migrate @ 2392]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2375
diff changeset
1661 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1662 g_return_if_fail(im != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1663 g_return_if_fail(message != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1664
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1665 common_send(gaim_conv_im_get_conversation(im), message);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1666 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1667
10526
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1668 gboolean
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1669 gaim_conv_custom_smiley_add(GaimConversation *conv, const char *smile,
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1670 const char *cksum_type, const char *chksum)
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1671 {
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1672 if (conv == NULL || smile == NULL || !*smile) {
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1673 return FALSE;
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1674 }
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1675
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1676 /* TODO: check if the icon is in the cache and return false if so */
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1677 /* TODO: add an icon cache (that doesn't suck) */
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1678 if (conv->ui_ops != NULL && conv->ui_ops->custom_smiley_add !=NULL) {
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1679 return conv->ui_ops->custom_smiley_add(conv, smile);
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1680 } else {
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1681 gaim_debug_info("conversation", "Could not find add custom smiley function");
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1682 return FALSE;
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1683 }
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1684
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1685 }
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1686
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1687 void
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1688 gaim_conv_custom_smiley_write(GaimConversation *conv, const char *smile,
11137
cf40226ddff7 [gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents: 11064
diff changeset
1689 const guchar *data, gsize size)
10526
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1690 {
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1691 g_return_if_fail(conv != NULL);
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1692 g_return_if_fail(smile != NULL && *smile);
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1693
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1694 if (conv->ui_ops != NULL && conv->ui_ops->custom_smiley_write != NULL)
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1695 conv->ui_ops->custom_smiley_write(conv, smile, data, size);
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1696 else
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1697 gaim_debug_info("conversation", "Could not find the smiley write function");
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1698 }
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1699
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1700 void
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1701 gaim_conv_custom_smiley_close(GaimConversation *conv, const char *smile)
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1702 {
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1703 g_return_if_fail(conv != NULL);
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1704 g_return_if_fail(smile != NULL && *smile);
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1705
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1706 if (conv->ui_ops != NULL && conv->ui_ops->custom_smiley_close != NULL)
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1707 conv->ui_ops->custom_smiley_close(conv, smile);
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1708 else
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1709 gaim_debug_info("conversation", "Could not find custom smiley close function");
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1710 }
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1711
05b5c6d4090d [gaim-migrate @ 11843]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
1712
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1713 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1714 * Chat Conversation API
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1715 **************************************************************************/
2379
cffc8ebf1bd4 [gaim-migrate @ 2392]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2375
diff changeset
1716
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1717 GaimConversation *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1718 gaim_conv_chat_get_conversation(const GaimConvChat *chat)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1719 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1720 g_return_val_if_fail(chat != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1721
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1722 return chat->conv;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1723 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1724
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1725 GList *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1726 gaim_conv_chat_set_users(GaimConvChat *chat, GList *users)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1727 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1728 g_return_val_if_fail(chat != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1729
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1730 chat->in_room = users;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1731
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1732 return users;
2379
cffc8ebf1bd4 [gaim-migrate @ 2392]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2375
diff changeset
1733 }
cffc8ebf1bd4 [gaim-migrate @ 2392]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2375
diff changeset
1734
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1735 GList *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1736 gaim_conv_chat_get_users(const GaimConvChat *chat)
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1002
diff changeset
1737 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1738 g_return_val_if_fail(chat != NULL, NULL);
1253
f02697a6aada [gaim-migrate @ 1263]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
1739
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1740 return chat->in_room;
1030
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1002
diff changeset
1741 }
b9fa9eadc0a4 [gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1002
diff changeset
1742
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1743 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1744 gaim_conv_chat_ignore(GaimConvChat *chat, const char *name)
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
1745 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1746 g_return_if_fail(chat != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1747 g_return_if_fail(name != NULL);
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
1748
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1749 /* Make sure the user isn't already ignored. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1750 if (gaim_conv_chat_is_user_ignored(chat, name))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1751 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1752
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1753 gaim_conv_chat_set_ignored(chat,
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1754 g_list_append(gaim_conv_chat_get_ignored(chat), g_strdup(name)));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1755 }
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
1756
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1757 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1758 gaim_conv_chat_unignore(GaimConvChat *chat, const char *name)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1759 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1760 GList *item;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1761
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1762 g_return_if_fail(chat != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1763 g_return_if_fail(name != NULL);
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
1764
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1765 /* Make sure the user is actually ignored. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1766 if (!gaim_conv_chat_is_user_ignored(chat, name))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1767 return;
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
1768
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1769 item = g_list_find(gaim_conv_chat_get_ignored(chat),
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1770 gaim_conv_chat_get_ignored_user(chat, name));
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1771
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1772 gaim_conv_chat_set_ignored(chat,
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1773 g_list_remove_link(gaim_conv_chat_get_ignored(chat), item));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1774
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1775 g_free(item->data);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1776 g_list_free_1(item);
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
1777 }
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
1778
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1779 GList *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1780 gaim_conv_chat_set_ignored(GaimConvChat *chat, GList *ignored)
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
1781 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1782 g_return_val_if_fail(chat != NULL, NULL);
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
1783
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1784 chat->ignored = ignored;
993
8798e0ac047d [gaim-migrate @ 1003]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 980
diff changeset
1785
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1786 return ignored;
2111
34615a640c59 [gaim-migrate @ 2121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2109
diff changeset
1787 }
34615a640c59 [gaim-migrate @ 2121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2109
diff changeset
1788
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1789 GList *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1790 gaim_conv_chat_get_ignored(const GaimConvChat *chat)
2111
34615a640c59 [gaim-migrate @ 2121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2109
diff changeset
1791 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1792 g_return_val_if_fail(chat != NULL, NULL);
1898
695a31e4452b [gaim-migrate @ 1908]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1889
diff changeset
1793
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1794 return chat->ignored;
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
1795 }
472
9a5b8da2d760 [gaim-migrate @ 482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 411
diff changeset
1796
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1797 const char *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1798 gaim_conv_chat_get_ignored_user(const GaimConvChat *chat, const char *user)
1340
f30961abcc50 [gaim-migrate @ 1350]
Rob Flynn <gaim@robflynn.com>
parents: 1253
diff changeset
1799 {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1800 GList *ignored;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1801
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1802 g_return_val_if_fail(chat != NULL, NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1803 g_return_val_if_fail(user != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1804
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1805 for (ignored = gaim_conv_chat_get_ignored(chat);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1806 ignored != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1807 ignored = ignored->next) {
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2363
diff changeset
1808
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1809 const char *ign = (const char *)ignored->data;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1810
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4687
diff changeset
1811 if (!gaim_utf8_strcasecmp(user, ign) ||
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4687
diff changeset
1812 ((*ign == '+' || *ign == '%') && !gaim_utf8_strcasecmp(user, ign + 1)))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1813 return ign;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1814
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1815 if (*ign == '@') {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1816 ign++;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1817
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4687
diff changeset
1818 if ((*ign == '+' && !gaim_utf8_strcasecmp(user, ign + 1)) ||
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4687
diff changeset
1819 (*ign != '+' && !gaim_utf8_strcasecmp(user, ign)))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1820 return ign;
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
1821 }
2094
5bc29f962834 [gaim-migrate @ 2104]
Chris Testa
parents: 2090
diff changeset
1822 }
1341
dcf12d2edb9a [gaim-migrate @ 1351]
Rob Flynn <gaim@robflynn.com>
parents: 1340
diff changeset
1823
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1824 return NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1825 }
1341
dcf12d2edb9a [gaim-migrate @ 1351]
Rob Flynn <gaim@robflynn.com>
parents: 1340
diff changeset
1826
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1827 gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1828 gaim_conv_chat_is_user_ignored(const GaimConvChat *chat, const char *user)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1829 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1830 g_return_val_if_fail(chat != NULL, FALSE);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1831 g_return_val_if_fail(user != NULL, FALSE);
1341
dcf12d2edb9a [gaim-migrate @ 1351]
Rob Flynn <gaim@robflynn.com>
parents: 1340
diff changeset
1832
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1833 return (gaim_conv_chat_get_ignored_user(chat, user) != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1834 }
1343
d1aedcf1f7e7 [gaim-migrate @ 1353]
Rob Flynn <gaim@robflynn.com>
parents: 1342
diff changeset
1835
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1836 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1837 gaim_conv_chat_set_topic(GaimConvChat *chat, const char *who, const char *topic)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1838 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1839 g_return_if_fail(chat != NULL);
1343
d1aedcf1f7e7 [gaim-migrate @ 1353]
Rob Flynn <gaim@robflynn.com>
parents: 1342
diff changeset
1840
7606
189d2833dc99 [gaim-migrate @ 8229]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 7602
diff changeset
1841 if (chat->who != NULL) g_free(chat->who);
189d2833dc99 [gaim-migrate @ 8229]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 7602
diff changeset
1842 if (chat->topic != NULL) g_free(chat->topic);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1843
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1844 chat->who = (who == NULL ? NULL : g_strdup(who));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1845 chat->topic = (topic == NULL ? NULL : g_strdup(topic));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1846
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1847 gaim_conversation_update(gaim_conv_chat_get_conversation(chat),
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1848 GAIM_CONV_UPDATE_TOPIC);
9517
a4b0dccad1f8 [gaim-migrate @ 10344]
Gary Kramlich <grim@pidgin.im>
parents: 9514
diff changeset
1849
a4b0dccad1f8 [gaim-migrate @ 10344]
Gary Kramlich <grim@pidgin.im>
parents: 9514
diff changeset
1850 gaim_signal_emit(gaim_conversations_get_handle(), "chat-topic-changed",
a4b0dccad1f8 [gaim-migrate @ 10344]
Gary Kramlich <grim@pidgin.im>
parents: 9514
diff changeset
1851 chat->conv, chat->who, chat->topic);
1340
f30961abcc50 [gaim-migrate @ 1350]
Rob Flynn <gaim@robflynn.com>
parents: 1253
diff changeset
1852 }
f30961abcc50 [gaim-migrate @ 1350]
Rob Flynn <gaim@robflynn.com>
parents: 1253
diff changeset
1853
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1854 const char *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1855 gaim_conv_chat_get_topic(const GaimConvChat *chat)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1856 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1857 g_return_val_if_fail(chat != NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1858
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1859 return chat->topic;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1860 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1861
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1862 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1863 gaim_conv_chat_set_id(GaimConvChat *chat, int id)
1573
878f7c59ee85 [gaim-migrate @ 1583]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1532
diff changeset
1864 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1865 g_return_if_fail(chat != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1866
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1867 chat->id = id;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1868 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1869
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1870 int
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1871 gaim_conv_chat_get_id(const GaimConvChat *chat)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1872 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1873 g_return_val_if_fail(chat != NULL, -1);
3951
3e505beb0272 [gaim-migrate @ 4132]
Nathan Walp <nwalp@pidgin.im>
parents: 3925
diff changeset
1874
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1875 return chat->id;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1876 }
3951
3e505beb0272 [gaim-migrate @ 4132]
Nathan Walp <nwalp@pidgin.im>
parents: 3925
diff changeset
1877
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1878 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1879 gaim_conv_chat_write(GaimConvChat *chat, const char *who, const char *message,
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6607
diff changeset
1880 GaimMessageFlags flags, time_t mtime)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1881 {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1882 GaimAccount *account;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1883 GaimConversation *conv;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1884 GaimConnection *gc;
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1885 GaimPluginProtocolInfo *prpl_info;
3866
862ccacd24a8 [gaim-migrate @ 4018]
Rob Flynn <gaim@robflynn.com>
parents: 3846
diff changeset
1886
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1887 g_return_if_fail(chat != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1888 g_return_if_fail(who != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1889 g_return_if_fail(message != NULL);
3866
862ccacd24a8 [gaim-migrate @ 4018]
Rob Flynn <gaim@robflynn.com>
parents: 3846
diff changeset
1890
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1891 conv = gaim_conv_chat_get_conversation(chat);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1892 gc = gaim_conversation_get_gc(conv);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1893 account = gaim_connection_get_account(gc);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1894 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1895
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1896 /* Don't display this if the person who wrote it is ignored. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1897 if (gaim_conv_chat_is_user_ignored(chat, who))
1573
878f7c59ee85 [gaim-migrate @ 1583]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1532
diff changeset
1898 return;
3677
83601c9624ee [gaim-migrate @ 3807]
Rob Flynn <gaim@robflynn.com>
parents: 3671
diff changeset
1899
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6607
diff changeset
1900 if (!(flags & GAIM_MESSAGE_WHISPER)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1901 char *str;
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
1902 const char *nick;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1903
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7257
diff changeset
1904 str = g_strdup(gaim_normalize(account, who));
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1905
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1906 if (prpl_info->options & OPT_PROTO_USE_DISPLAY_NAME_FOR_ME_IN_CHATS)
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1907 nick = account->gc->display_name;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1908 else
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1909 nick = account->username;
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
1910
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
1911 if (!g_utf8_collate(str, gaim_normalize(account, nick))) {
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6607
diff changeset
1912 flags |= GAIM_MESSAGE_SEND;
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
1913 } else {
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6607
diff changeset
1914 flags |= GAIM_MESSAGE_RECV;
3677
83601c9624ee [gaim-migrate @ 3807]
Rob Flynn <gaim@robflynn.com>
parents: 3671
diff changeset
1915
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
1916 if (find_nick(chat->nick, message))
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6607
diff changeset
1917 flags |= GAIM_MESSAGE_NICK;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1918 }
6060
d038fdf1da96 [gaim-migrate @ 6510]
Nathan Walp <nwalp@pidgin.im>
parents: 6054
diff changeset
1919
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1920 g_free(str);
3677
83601c9624ee [gaim-migrate @ 3807]
Rob Flynn <gaim@robflynn.com>
parents: 3671
diff changeset
1921 }
3705
939c96966fd7 [gaim-migrate @ 3838]
Etan Reisner <deryni@pidgin.im>
parents: 3704
diff changeset
1922
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1923 /* Pass this on to either the ops structure or the default write func. */
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
1924 if (conv->ui_ops != NULL && conv->ui_ops->write_chat != NULL)
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
1925 conv->ui_ops->write_chat(conv, who, message, flags, mtime);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1926 else
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6846
diff changeset
1927 gaim_conversation_write(conv, who, message, flags, mtime);
1573
878f7c59ee85 [gaim-migrate @ 1583]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1532
diff changeset
1928 }
878f7c59ee85 [gaim-migrate @ 1583]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1532
diff changeset
1929
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1930 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1931 gaim_conv_chat_send(GaimConvChat *chat, const char *message)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1932 {
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1933 g_return_if_fail(chat != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1934 g_return_if_fail(message != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1935
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1936 common_send(gaim_conv_chat_get_conversation(chat), message);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1937 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1938
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1939 void
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1940 gaim_conv_chat_add_user(GaimConvChat *chat, const char *user,
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1941 const char *extra_msg, GaimConvChatBuddyFlags flags,
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1942 gboolean new_arrival)
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1943 {
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1944 GList *users = g_list_append(NULL, (char *)user);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1945 GList *extra_msgs = g_list_append(NULL, (char *)extra_msg);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1946 GList *flags2 = g_list_append(NULL, GINT_TO_POINTER(flags));
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1947
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1948 gaim_conv_chat_add_users(chat, users, extra_msgs, flags2, new_arrival);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1949
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1950 g_list_free(users);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1951 g_list_free(extra_msgs);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1952 g_list_free(flags2);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1953 }
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1954
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1955 void
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1956 gaim_conv_chat_add_users(GaimConvChat *chat, GList *users, GList *extra_msgs,
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1957 GList *flags, gboolean new_arrivals)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
1958 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1959 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
1960 GaimConversationUiOps *ops;
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
1961 GaimConvChatBuddy *cb;
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1962 GaimConnection *gc;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1963 GaimPluginProtocolInfo *prpl_info;
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
1964 GList *ul, *fl;
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1965 GList *aliases = NULL;
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
1966
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
1967 g_return_if_fail(chat != NULL);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
1968 g_return_if_fail(users != NULL);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
1969
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1970 conv = gaim_conv_chat_get_conversation(chat);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
1971 ops = gaim_conversation_get_ui_ops(conv);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
1972
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1973 gc = gaim_conversation_get_gc(conv);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1974 if (!gc || !(prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)))
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1975 return;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1976
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
1977 ul = users;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
1978 fl = flags;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
1979 while ((ul != NULL) && (fl != NULL)) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
1980 const char *user = (const char *)ul->data;
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1981 const char *alias = user;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1982 gboolean quiet;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1983 GaimConvChatBuddyFlags flags = GPOINTER_TO_INT(fl->data);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1984 const char *extra_msg = (extra_msgs ? extra_msgs->data : NULL);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1985
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1986 if (!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) {
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1987 char *tmp;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1988
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1989 if (prpl_info->options & OPT_PROTO_USE_DISPLAY_NAME_FOR_ME_IN_CHATS)
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1990 tmp = g_strdup(gaim_normalize(conv->account, gc->display_name));
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1991 else
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1992 tmp = g_strdup(gaim_normalize(conv->account, conv->account->username));
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1993
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
1994 if (!strcmp(tmp, gaim_normalize(conv->account, user))) {
11478
d238846d738e [gaim-migrate @ 13720]
Richard Laager <rlaager@pidgin.im>
parents: 11468
diff changeset
1995 const char *alias2 = gaim_account_get_alias(conv->account);
d238846d738e [gaim-migrate @ 13720]
Richard Laager <rlaager@pidgin.im>
parents: 11468
diff changeset
1996 if (alias2 != NULL)
d238846d738e [gaim-migrate @ 13720]
Richard Laager <rlaager@pidgin.im>
parents: 11468
diff changeset
1997 alias = alias2;
d238846d738e [gaim-migrate @ 13720]
Richard Laager <rlaager@pidgin.im>
parents: 11468
diff changeset
1998 else
d238846d738e [gaim-migrate @ 13720]
Richard Laager <rlaager@pidgin.im>
parents: 11468
diff changeset
1999 {
d238846d738e [gaim-migrate @ 13720]
Richard Laager <rlaager@pidgin.im>
parents: 11468
diff changeset
2000 const char *display_name = gaim_connection_get_display_name(gc);
d238846d738e [gaim-migrate @ 13720]
Richard Laager <rlaager@pidgin.im>
parents: 11468
diff changeset
2001 if (display_name != NULL)
d238846d738e [gaim-migrate @ 13720]
Richard Laager <rlaager@pidgin.im>
parents: 11468
diff changeset
2002 alias = display_name;
d238846d738e [gaim-migrate @ 13720]
Richard Laager <rlaager@pidgin.im>
parents: 11468
diff changeset
2003 }
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2004 } else {
11478
d238846d738e [gaim-migrate @ 13720]
Richard Laager <rlaager@pidgin.im>
parents: 11468
diff changeset
2005 GaimBuddy *buddy;
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2006 if ((buddy = gaim_find_buddy(gc->account, user)) != NULL)
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2007 alias = gaim_buddy_get_contact_alias(buddy);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2008 }
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2009 g_free(tmp);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2010 }
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2011
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2012 quiet = GPOINTER_TO_INT(gaim_signal_emit_return_1(gaim_conversations_get_handle(),
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2013 "chat-buddy-joining", conv, user, flags)) |
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2014 gaim_conv_chat_is_user_ignored(chat, user);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2015
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2016 cb = gaim_conv_chat_cb_new(user, flags);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2017 gaim_conv_chat_set_users(chat,
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2018 g_list_prepend(gaim_conv_chat_get_users(chat), cb));
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2019 aliases = g_list_append(aliases, (char *)alias);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2020
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2021 if (!quiet && new_arrivals) {
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2022 char *tmp;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2023
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2024 if (extra_msg == NULL)
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2025 tmp = g_strdup_printf(_("%s entered the room."), alias);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2026 else
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2027 tmp = g_strdup_printf(_("%s [<I>%s</I>] entered the room."),
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2028 alias, extra_msg);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2029
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2030 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL));
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2031 g_free(tmp);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2032 }
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2033
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2034 gaim_signal_emit(gaim_conversations_get_handle(),
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2035 "chat-buddy-joined", conv, user, flags);
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2036 ul = ul->next;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2037 fl = fl->next;
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2038 if (extra_msgs != NULL)
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2039 extra_msgs = extra_msgs->next;
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2040 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2041
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2042 if (ops != NULL && ops->chat_add_users != NULL)
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2043 ops->chat_add_users(conv, users, aliases);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2044
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2045 g_list_free(aliases);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2046 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2047
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2048 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2049 gaim_conv_chat_rename_user(GaimConvChat *chat, const char *old_user,
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2050 const char *new_user)
472
9a5b8da2d760 [gaim-migrate @ 482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 411
diff changeset
2051 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2052 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2053 GaimConversationUiOps *ops;
11485
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2054 GaimConnection *gc;
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2055 GaimPluginProtocolInfo *prpl_info;
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2056 GaimConvChatBuddy *cb;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2057 GaimConvChatBuddyFlags flags;
11485
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2058 const char *new_alias = new_user;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2059 char tmp[BUF_LONG];
11485
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2060 gboolean is_me = FALSE;
3866
862ccacd24a8 [gaim-migrate @ 4018]
Rob Flynn <gaim@robflynn.com>
parents: 3846
diff changeset
2061
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2062 g_return_if_fail(chat != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2063 g_return_if_fail(old_user != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2064 g_return_if_fail(new_user != NULL);
960
c4012584334f [gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 936
diff changeset
2065
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2066 conv = gaim_conv_chat_get_conversation(chat);
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
2067 ops = gaim_conversation_get_ui_ops(conv);
3304
85392ac1cdd2 [gaim-migrate @ 3322]
Sean Egan <seanegan@pidgin.im>
parents: 3300
diff changeset
2068
11485
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2069 gc = gaim_conversation_get_gc(conv);
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2070 g_return_if_fail(gc != NULL);
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2071 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2072 g_return_if_fail(prpl_info != NULL);
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2073
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2074 flags = gaim_conv_chat_user_get_flags(chat, old_user);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2075 cb = gaim_conv_chat_cb_new(new_user, flags);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2076 gaim_conv_chat_set_users(chat,
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2077 g_list_prepend(gaim_conv_chat_get_users(chat), cb));
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
2078
11485
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2079 if (!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) {
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2080 GaimBuddy *buddy;
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2081
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2082 if ((buddy = gaim_find_buddy(gc->account, new_user)) != NULL)
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2083 new_alias = gaim_buddy_get_contact_alias(buddy);
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2084 }
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2085
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2086 if (ops != NULL && ops->chat_rename_user != NULL)
11485
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2087 ops->chat_rename_user(conv, old_user, new_user, new_alias);
3671
b954d3ac08c5 [gaim-migrate @ 3801]
Rob Flynn <gaim@robflynn.com>
parents: 3641
diff changeset
2088
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2089 cb = gaim_conv_chat_cb_find(chat, old_user);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2090
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2091 if (cb) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2092 gaim_conv_chat_set_users(chat,
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2093 g_list_remove(gaim_conv_chat_get_users(chat), cb));
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2094 gaim_conv_chat_cb_destroy(cb);
4506
e4ef1834b415 [gaim-migrate @ 4781]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2095 }
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1414
diff changeset
2096
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2097 if (gaim_conv_chat_is_user_ignored(chat, old_user)) {
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2098 gaim_conv_chat_unignore(chat, old_user);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2099 gaim_conv_chat_ignore(chat, new_user);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1414
diff changeset
2100 }
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2101 else if (gaim_conv_chat_is_user_ignored(chat, new_user))
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2102 gaim_conv_chat_unignore(chat, new_user);
1573
878f7c59ee85 [gaim-migrate @ 1583]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1532
diff changeset
2103
11485
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2104 /* This should use gaim_normalize on the two values and strcmp them. */
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2105 if(!g_utf8_collate(old_user, chat->nick)) {
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2106 gaim_conv_chat_set_nick(chat, new_user);
11485
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2107 is_me = TRUE;
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2108 }
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2109
11481
498f90760488 [gaim-migrate @ 13723]
Richard Laager <rlaager@pidgin.im>
parents: 11478
diff changeset
2110 if (gaim_prefs_get_bool("/core/conversations/chat/show_nick_change") &&
498f90760488 [gaim-migrate @ 13723]
Richard Laager <rlaager@pidgin.im>
parents: 11478
diff changeset
2111 !gaim_conv_chat_is_user_ignored(chat, new_user)) {
498f90760488 [gaim-migrate @ 13723]
Richard Laager <rlaager@pidgin.im>
parents: 11478
diff changeset
2112
11485
fe334b13d1d0 [gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11481
diff changeset
2113 if(is_me) {
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2114 g_snprintf(tmp, sizeof(tmp),
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2115 _("You are now known as %s"), new_user);
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2116 } else {
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2117 const char *old_alias = old_user;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2118 const char *new_alias = new_user;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2119
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2120 if (!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) {
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2121 GaimBuddy *buddy;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2122
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2123 if ((buddy = gaim_find_buddy(gc->account, old_user)) != NULL)
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2124 old_alias = gaim_buddy_get_contact_alias(buddy);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2125 if ((buddy = gaim_find_buddy(gc->account, new_user)) != NULL)
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2126 new_alias = gaim_buddy_get_contact_alias(buddy);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2127 }
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2128
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2129 g_snprintf(tmp, sizeof(tmp),
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2130 _("%s is now known as %s"), old_alias, new_alias);
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2131 }
1573
878f7c59ee85 [gaim-migrate @ 1583]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1532
diff changeset
2132
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6846
diff changeset
2133 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL));
2843
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2834
diff changeset
2134 }
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2834
diff changeset
2135 }
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2834
diff changeset
2136
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2137 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2138 gaim_conv_chat_remove_user(GaimConvChat *chat, const char *user, const char *reason)
2843
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2834
diff changeset
2139 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2140 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2141 GaimConversationUiOps *ops;
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2142 GaimConvChatBuddy *cb;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2143 char tmp[BUF_LONG];
9587
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
2144 gboolean quiet;
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2145 const char *alias = user;
2843
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2834
diff changeset
2146
5677
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2147 g_return_if_fail(chat != NULL);
2cce4c8654e9 [gaim-migrate @ 6095]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2148 g_return_if_fail(user != NULL);
2843
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2834
diff changeset
2149
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2150 conv = gaim_conv_chat_get_conversation(chat);
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4425
diff changeset
2151 ops = gaim_conversation_get_ui_ops(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2152
9587
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
2153 quiet = GPOINTER_TO_INT(gaim_signal_emit_return_1(gaim_conversations_get_handle(),
10955
66420fe2475e [gaim-migrate @ 12755]
Levi Bard <levi@bard.sytes.net>
parents: 10849
diff changeset
2154 "chat-buddy-leaving", conv, user, reason)) |
66420fe2475e [gaim-migrate @ 12755]
Levi Bard <levi@bard.sytes.net>
parents: 10849
diff changeset
2155 gaim_conv_chat_is_user_ignored(chat, user);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2156
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2157 if (ops != NULL && ops->chat_remove_user != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2158 ops->chat_remove_user(conv, user);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2159
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2160 cb = gaim_conv_chat_cb_find(chat, user);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2161
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2162 if (cb) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2163 gaim_conv_chat_set_users(chat,
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2164 g_list_remove(gaim_conv_chat_get_users(chat), cb));
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2165 gaim_conv_chat_cb_destroy(cb);
2843
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2834
diff changeset
2166 }
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2834
diff changeset
2167
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2168 /* NOTE: Don't remove them from ignored in case they re-enter. */
2787
050506d3945f [gaim-migrate @ 2800]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2773
diff changeset
2169
9587
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
2170 if (!quiet) {
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2171 GaimConnection *gc = gaim_conversation_get_gc(conv);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2172 GaimPluginProtocolInfo *prpl_info;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2173
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2174 if (!gc || !(prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)))
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2175 return;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2176
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2177 if (!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) {
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2178 GaimBuddy *buddy;
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2179
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2180 if ((buddy = gaim_find_buddy(gc->account, user)) != NULL)
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2181 alias = gaim_buddy_get_contact_alias(buddy);
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2182 }
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2183
9587
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
2184 if (reason != NULL && *reason != '\0')
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
2185 g_snprintf(tmp, sizeof(tmp),
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2186 _("%s left the room (%s)."), alias, reason);
9587
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
2187 else
11454
a604c2097a6e [gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
2188 g_snprintf(tmp, sizeof(tmp), _("%s left the room."), alias);
9587
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
2189
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
2190 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL));
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
2191 }
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2192
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2193 gaim_signal_emit(gaim_conversations_get_handle(), "chat-buddy-left",
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2194 conv, user, reason);
1759
e5987be557ab [gaim-migrate @ 1769]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1757
diff changeset
2195 }
2191
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
2196
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2197 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2198 gaim_conv_chat_remove_users(GaimConvChat *chat, GList *users, const char *reason)
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2199 {
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2200 GaimConversation *conv;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2201 GaimConversationUiOps *ops;
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2202 GaimConvChatBuddy *cb;
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2203 char tmp[BUF_LONG];
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2204 GList *l;
9606
f5a6e772fc9f [gaim-migrate @ 10449]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9587
diff changeset
2205 gboolean quiet = FALSE;
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2206
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2207 g_return_if_fail(chat != NULL);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2208 g_return_if_fail(users != NULL);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2209
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2210 conv = gaim_conv_chat_get_conversation(chat);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2211 ops = gaim_conversation_get_ui_ops(conv);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2212
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2213 for (l = users; l != NULL; l = l->next) {
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2214 const char *user = (const char *)l->data;
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2215
9587
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
2216 quiet = GPOINTER_TO_INT(gaim_signal_emit_return_1(gaim_conversations_get_handle(),
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
2217 "chat-buddy-leaving", conv, user, reason));
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2218 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2219
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2220 if (ops != NULL && ops->chat_remove_users != NULL)
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2221 ops->chat_remove_users(conv, users);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2222
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2223 for (l = users; l != NULL; l = l->next) {
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2224 const char *user = (const char *)l->data;
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2225
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2226 cb = gaim_conv_chat_cb_find(chat, user);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2227
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2228 if (cb) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2229 gaim_conv_chat_set_users(chat,
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2230 g_list_remove(gaim_conv_chat_get_users(chat), cb));
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2231 gaim_conv_chat_cb_destroy(cb);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2232 }
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2233
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2234 gaim_signal_emit(gaim_conversations_get_handle(), "chat-buddy-left",
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2235 conv, user, reason);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2236 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2237
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2238 /* NOTE: Don't remove them from ignored in case they re-enter. */
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2239
9587
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
2240 if (!quiet && reason != NULL && *reason != '\0') {
8998
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2241 int i;
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2242 int size = g_list_length(users);
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2243 int max = MIN(10, size);
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2244 GList *l;
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2245
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2246 *tmp = '\0';
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2247
10958
08909921daa1 [gaim-migrate @ 12759]
Mark Doliner <markdoliner@pidgin.im>
parents: 10955
diff changeset
2248 for (l = users, i = 0; i < max; i++, l = l->next)
08909921daa1 [gaim-migrate @ 12759]
Mark Doliner <markdoliner@pidgin.im>
parents: 10955
diff changeset
2249 {
08909921daa1 [gaim-migrate @ 12759]
Mark Doliner <markdoliner@pidgin.im>
parents: 10955
diff changeset
2250 if (!gaim_conv_chat_is_user_ignored(chat, (char *)l->data))
08909921daa1 [gaim-migrate @ 12759]
Mark Doliner <markdoliner@pidgin.im>
parents: 10955
diff changeset
2251 {
08909921daa1 [gaim-migrate @ 12759]
Mark Doliner <markdoliner@pidgin.im>
parents: 10955
diff changeset
2252 g_strlcat(tmp, (char *)l->data, sizeof(tmp));
08909921daa1 [gaim-migrate @ 12759]
Mark Doliner <markdoliner@pidgin.im>
parents: 10955
diff changeset
2253
08909921daa1 [gaim-migrate @ 12759]
Mark Doliner <markdoliner@pidgin.im>
parents: 10955
diff changeset
2254 if (i < max - 1)
08909921daa1 [gaim-migrate @ 12759]
Mark Doliner <markdoliner@pidgin.im>
parents: 10955
diff changeset
2255 g_strlcat(tmp, ", ", sizeof(tmp));
08909921daa1 [gaim-migrate @ 12759]
Mark Doliner <markdoliner@pidgin.im>
parents: 10955
diff changeset
2256 }
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2257 }
8998
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2258
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2259 if (size > 10)
10324
3278c5d77bd8 [gaim-migrate @ 11531]
Mark Doliner <markdoliner@pidgin.im>
parents: 10247
diff changeset
2260 /*
3278c5d77bd8 [gaim-migrate @ 11531]
Mark Doliner <markdoliner@pidgin.im>
parents: 10247
diff changeset
2261 * This should probably use ngettext(), but this function
3278c5d77bd8 [gaim-migrate @ 11531]
Mark Doliner <markdoliner@pidgin.im>
parents: 10247
diff changeset
2262 * isn't called from anywhere, so I'm going to leave it.
3278c5d77bd8 [gaim-migrate @ 11531]
Mark Doliner <markdoliner@pidgin.im>
parents: 10247
diff changeset
2263 */
8998
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2264 g_snprintf(tmp, sizeof(tmp),
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2265 _("(+%d more)"), size - 10);
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2266
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2267 g_snprintf(tmp, sizeof(tmp), _(" left the room (%s)."), reason);
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2268
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2269 gaim_conversation_write(conv, NULL, tmp,
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8979
diff changeset
2270 GAIM_MESSAGE_SYSTEM, time(NULL));
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2271 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2272 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
2273
6414
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2274 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2275 gaim_conv_chat_clear_users(GaimConvChat *chat)
6414
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2276 {
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2277 GaimConversation *conv;
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2278 GaimConversationUiOps *ops;
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2279 GList *users, *names = NULL;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2280 GList *l;
6414
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2281
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2282 g_return_if_fail(chat != NULL);
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2283
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2284 conv = gaim_conv_chat_get_conversation(chat);
6414
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2285 ops = gaim_conversation_get_ui_ops(conv);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2286 users = gaim_conv_chat_get_users(chat);
6414
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2287
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2288 if (ops != NULL && ops->chat_remove_users != NULL) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2289 for (l = users; l; l = l->next) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2290 GaimConvChatBuddy *cb = l->data;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2291 names = g_list_append(names, cb->name);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2292 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2293 ops->chat_remove_users(conv, names);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2294 g_list_free(names);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2295 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2296
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2297 for (l = users; l; l = l->next)
6414
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2298 {
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2299 GaimConvChatBuddy *cb = l->data;
6414
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2300
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2301 gaim_signal_emit(gaim_conversations_get_handle(),
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2302 "chat-buddy-leaving", conv, cb->name, NULL);
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2303 gaim_signal_emit(gaim_conversations_get_handle(),
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2304 "chat-buddy-left", conv, cb->name, NULL);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2305
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2306 gaim_conv_chat_cb_destroy(cb);
6414
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2307 }
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2308
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2309 g_list_free(users);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2310 gaim_conv_chat_set_users(chat, NULL);
6414
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2311 }
f78eb072fcc0 [gaim-migrate @ 6921]
Christian Hammond <chipx86@chipx86.com>
parents: 6407
diff changeset
2312
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2313
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2314 gboolean
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2315 gaim_conv_chat_find_user(GaimConvChat *chat, const char *user)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2316 {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2317 g_return_val_if_fail(chat != NULL, FALSE);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2318 g_return_val_if_fail(user != NULL, FALSE);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2319
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2320 return (gaim_conv_chat_cb_find(chat, user) != NULL);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2321 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2322
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2323 void
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2324 gaim_conv_chat_user_set_flags(GaimConvChat *chat, const char *user,
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2325 GaimConvChatBuddyFlags flags)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2326 {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2327 GaimConversation *conv;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2328 GaimConversationUiOps *ops;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2329 GaimConvChatBuddy *cb;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2330 GaimConvChatBuddyFlags oldflags;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2331
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2332 g_return_if_fail(chat != NULL);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2333 g_return_if_fail(user != NULL);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2334
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2335 cb = gaim_conv_chat_cb_find(chat, user);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2336
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2337 if (!cb)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2338 return;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2339
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2340 if (flags == cb->flags)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2341 return;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2342
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2343 oldflags = cb->flags;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2344 cb->flags = flags;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2345
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2346 conv = gaim_conv_chat_get_conversation(chat);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2347 ops = gaim_conversation_get_ui_ops(conv);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2348
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2349 if (ops != NULL && ops->chat_update_user != NULL)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2350 ops->chat_update_user(conv, user);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2351
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2352 gaim_signal_emit(gaim_conversations_get_handle(),
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2353 "chat-buddy-flags", conv, user, oldflags, flags);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2354 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2355
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2356 GaimConvChatBuddyFlags
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2357 gaim_conv_chat_user_get_flags(GaimConvChat *chat, const char *user)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2358 {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2359 GaimConvChatBuddy *cb;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2360
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2361 g_return_val_if_fail(chat != NULL, 0);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2362 g_return_val_if_fail(user != NULL, 0);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2363
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2364 cb = gaim_conv_chat_cb_find(chat, user);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2365
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2366 if (!cb)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2367 return GAIM_CBFLAGS_NONE;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2368
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2369 return cb->flags;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2370 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2371
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2372 void gaim_conv_chat_set_nick(GaimConvChat *chat, const char *nick) {
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2373 g_return_if_fail(chat != NULL);
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2374
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2375 if(chat->nick)
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2376 g_free(chat->nick);
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2377 chat->nick = g_strdup(nick);
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2378 }
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2379
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2380 const char *gaim_conv_chat_get_nick(GaimConvChat *chat) {
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2381 g_return_val_if_fail(chat != NULL, NULL);
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2382
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2383 return chat->nick;
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2384 }
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2385
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2386 GaimConversation *
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2387 gaim_find_chat(const GaimConnection *gc, int id)
2191
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
2388 {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2389 GList *l;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2390 GaimConversation *conv;
2499
0e48d0a33bf7 [gaim-migrate @ 2512]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2487
diff changeset
2391
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2392 for (l = gaim_get_chats(); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2393 conv = (GaimConversation *)l->data;
2499
0e48d0a33bf7 [gaim-migrate @ 2512]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2487
diff changeset
2394
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2395 if (gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)) == id &&
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2396 gaim_conversation_get_gc(conv) == gc)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2397 return conv;
2499
0e48d0a33bf7 [gaim-migrate @ 2512]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2487
diff changeset
2398 }
0e48d0a33bf7 [gaim-migrate @ 2512]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2487
diff changeset
2399
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
2400 return NULL;
2191
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
2401 }
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2402
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2403 void
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2404 gaim_conv_chat_left(GaimConvChat *chat)
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2405 {
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2406 g_return_if_fail(chat != NULL);
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2407
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2408 chat->left = TRUE;
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2409 gaim_conversation_update(chat->conv, GAIM_CONV_UPDATE_CHATLEFT);
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2410 }
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2411
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2412 gboolean
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2413 gaim_conv_chat_has_left(GaimConvChat *chat)
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2414 {
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2415 g_return_val_if_fail(chat != NULL, TRUE);
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2416
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2417 return chat->left;
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2418 }
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8158
diff changeset
2419
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2420 GaimConvChatBuddy *
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2421 gaim_conv_chat_cb_new(const char *name, GaimConvChatBuddyFlags flags)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2422 {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2423 GaimConvChatBuddy *cb;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2424
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2425 g_return_val_if_fail(name != NULL, NULL);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2426
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2427 cb = g_new0(GaimConvChatBuddy, 1);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2428 cb->name = g_strdup(name);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2429 cb->flags = flags;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2430
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11137
diff changeset
2431 GAIM_DBUS_REGISTER_POINTER(cb, GaimConvChatBuddy);
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2432 return cb;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2433 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2434
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2435 GaimConvChatBuddy *
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2436 gaim_conv_chat_cb_find(GaimConvChat *chat, const char *name)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2437 {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2438 GList *l;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2439 GaimConvChatBuddy *cb = NULL;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2440
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2441 g_return_val_if_fail(chat != NULL, NULL);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2442 g_return_val_if_fail(name != NULL, NULL);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2443
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2444 for (l = gaim_conv_chat_get_users(chat); l; l = l->next) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2445 cb = l->data;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2446 if (!gaim_utf8_strcasecmp(cb->name, name))
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2447 return cb;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2448 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2449
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2450 return NULL;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2451 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2452
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2453 void
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2454 gaim_conv_chat_cb_destroy(GaimConvChatBuddy *cb)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2455 {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2456 g_return_if_fail(cb != NULL);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2457
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2458 if (cb->name)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2459 g_free(cb->name);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2460 cb->name = NULL;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2461 cb->flags = 0;
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11137
diff changeset
2462
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11137
diff changeset
2463 GAIM_DBUS_UNREGISTER_POINTER(cb);
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2464 g_free(cb);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2465 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2466
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2467 const char *
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2468 gaim_conv_chat_cb_get_name(GaimConvChatBuddy *cb)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2469 {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2470 g_return_val_if_fail(cb != NULL, NULL);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2471
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2472 return cb->name;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2473 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
2474
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2475 /**************************************************************************
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2476 * Conversation placement functions
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2477 **************************************************************************/
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2478 /* This one places conversations in the last made window. */
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2479 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2480 conv_placement_last_created_win(GaimConversation *conv)
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2481 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2482 GaimConvWindow *win;
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2483
9251
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2484 win = g_list_last(gaim_get_windows())->data;
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2485
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2486 if (win == NULL) {
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2487 win = gaim_conv_window_new();
9614
4da9c73665c3 [gaim-migrate @ 10458]
Luke Schierer <lschiere@pidgin.im>
parents: 9613
diff changeset
2488
4da9c73665c3 [gaim-migrate @ 10458]
Luke Schierer <lschiere@pidgin.im>
parents: 9613
diff changeset
2489 gaim_conv_window_add_conversation(win, conv);
9606
f5a6e772fc9f [gaim-migrate @ 10449]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9587
diff changeset
2490 gaim_conv_window_show(win);
9251
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2491 }
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2492 else
9251
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2493 gaim_conv_window_add_conversation(win, conv);
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2494 }
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2495
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2496 /* This one places conversations in the last made window of the same type. */
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2497 static void
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2498 conv_placement_last_created_win_type(GaimConversation *conv)
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2499 {
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2500 GaimConvWindow *win;
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2501
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2502 win = gaim_get_last_window_with_type(gaim_conversation_get_type(conv));
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2503
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2504 if (win == NULL) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2505 win = gaim_conv_window_new();
9614
4da9c73665c3 [gaim-migrate @ 10458]
Luke Schierer <lschiere@pidgin.im>
parents: 9613
diff changeset
2506
4da9c73665c3 [gaim-migrate @ 10458]
Luke Schierer <lschiere@pidgin.im>
parents: 9613
diff changeset
2507 gaim_conv_window_add_conversation(win, conv);
9606
f5a6e772fc9f [gaim-migrate @ 10449]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9587
diff changeset
2508 gaim_conv_window_show(win);
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2509 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2510 else
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2511 gaim_conv_window_add_conversation(win, conv);
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2512 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2513
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2514 /* This one places each conversation in its own window. */
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2515 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2516 conv_placement_new_window(GaimConversation *conv)
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2517 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2518 GaimConvWindow *win;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2519
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2520 win = gaim_conv_window_new();
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2521
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2522 gaim_conv_window_add_conversation(win, conv);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2523
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2524 gaim_conv_window_show(win);
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2525 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2526
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2527 static GaimGroup *
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2528 conv_get_group(GaimConversation *conv)
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2529 {
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2530 GaimGroup *group = NULL;
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2531
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
2532 if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM)
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2533 {
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2534 GaimBuddy *buddy;
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2535
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2536 buddy = gaim_find_buddy(gaim_conversation_get_account(conv),
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2537 gaim_conversation_get_name(conv));
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2538
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2539 if (buddy != NULL)
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2540 group = gaim_find_buddys_group(buddy);
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2541
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2542 }
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11292
diff changeset
2543 else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT)
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2544 {
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2545 GaimChat *chat;
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2546
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2547 chat = gaim_blist_find_chat(gaim_conversation_get_account(conv),
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2548 gaim_conversation_get_name(conv));
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2549
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2550 if (chat != NULL)
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2551 group = gaim_chat_get_group(chat);
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2552 }
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2553
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2554 return group;
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2555 }
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2556
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2557 /*
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2558 * This groups things by, well, group. Buddies from groups will always be
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2559 * grouped together, and a buddy from a group not belonging to any currently
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2560 * open windows will get a new window.
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2561 */
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2562 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2563 conv_placement_by_group(GaimConversation *conv)
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2564 {
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2565 GaimConversationType type;
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2566 GaimGroup *group = NULL;
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2567 GList *wl, *cl;
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2568
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2569 type = gaim_conversation_get_type(conv);
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2570
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2571 group = conv_get_group(conv);
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2572
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2573 /* Go through the list of IMs and find one with this group. */
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2574 for (wl = gaim_get_windows(); wl != NULL; wl = wl->next)
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2575 {
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2576 GaimConvWindow *win2;
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2577 GaimConversation *conv2;
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2578 GaimGroup *group2 = NULL;
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2579
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2580 win2 = (GaimConvWindow *)wl->data;
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2581
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2582 for (cl = gaim_conv_window_get_conversations(win2);
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2583 cl != NULL;
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2584 cl = cl->next)
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2585 {
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2586 conv2 = (GaimConversation *)cl->data;
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2587
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2588 group2 = conv_get_group(conv2);
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2589
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9123
diff changeset
2590 if (group == group2)
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2591 {
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2592 gaim_conv_window_add_conversation(win2, conv);
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2593
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2594 return;
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2595 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2596 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2597 }
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2598
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2599 /* Make a new window. */
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2600 conv_placement_new_window(conv);
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2601 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2602
4522
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2603 /* This groups things by account. Otherwise, the same semantics as above */
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2604 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2605 conv_placement_by_account(GaimConversation *conv)
4522
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2606 {
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2607 GaimConversationType type;
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2608 GList *wins, *convs;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
2609 GaimAccount *account;
4522
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2610
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2611 account = gaim_conversation_get_account(conv);
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2612 type = gaim_conversation_get_type(conv);
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2613
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2614 /* Go through the list of IMs and find one with this group. */
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2615 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next)
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2616 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2617 GaimConvWindow *win2;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2618 GaimConversation *conv2;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2619
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2620 win2 = (GaimConvWindow *)wins->data;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2621
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2622 for (convs = gaim_conv_window_get_conversations(win2);
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2623 convs != NULL;
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2624 convs = convs->next)
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2625 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2626 conv2 = (GaimConversation *)convs->data;
4522
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2627
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9123
diff changeset
2628 if (account == gaim_conversation_get_account(conv2))
8271
a79531291e7f [gaim-migrate @ 8995]
Christian Hammond <chipx86@chipx86.com>
parents: 8256
diff changeset
2629 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2630 gaim_conv_window_add_conversation(win2, conv);
4522
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2631 return;
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2632 }
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2633 }
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2634 }
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5539
diff changeset
2635
4522
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2636 /* Make a new window. */
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2637 conv_placement_new_window(conv);
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2638 }
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2639
7602
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
2640 static ConvPlacementData *
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
2641 get_conv_placement_data(const char *id)
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2642 {
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2643 ConvPlacementData *data = NULL;
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2644 GList *n;
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2645
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2646 for(n = conv_placement_fncs; n; n = n->next) {
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2647 data = n->data;
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2648 if(!strcmp(data->id, id))
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2649 return data;
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2650 }
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2651
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2652 return NULL;
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2653 }
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2654
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2655 static void
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2656 add_conv_placement_fnc(const char *id, const char *name,
7602
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
2657 GaimConvPlacementFunc fnc)
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2658 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2659 ConvPlacementData *data;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2660
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2661 data = g_new(ConvPlacementData, 1);
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2662
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2663 data->id = g_strdup(id);
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2664 data->name = g_strdup(name);
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2665 data->fnc = fnc;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2666
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2667 conv_placement_fncs = g_list_append(conv_placement_fncs, data);
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2668 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2669
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2670 static void
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2671 ensure_default_funcs(void)
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2672 {
7602
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
2673 if (conv_placement_fncs == NULL)
1b9f55e57af3 [gaim-migrate @ 8225]
Christian Hammond <chipx86@chipx86.com>
parents: 7562
diff changeset
2674 {
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2675 add_conv_placement_fnc("last", _("Last created window"),
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2676 conv_placement_last_created_win);
9251
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2677 add_conv_placement_fnc("im_chat", _("Separate IM and Chat windows"),
60b4994e93b8 [gaim-migrate @ 10050]
Ethan Blanton <elb@pidgin.im>
parents: 9166
diff changeset
2678 conv_placement_last_created_win_type);
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2679 add_conv_placement_fnc("new", _("New window"),
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2680 conv_placement_new_window);
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2681 add_conv_placement_fnc("group", _("By group"),
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2682 conv_placement_by_group);
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2683 add_conv_placement_fnc("account", _("By account"),
4522
1b173c107941 [gaim-migrate @ 4800]
Nathan Walp <nwalp@pidgin.im>
parents: 4506
diff changeset
2684 conv_placement_by_account);
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2685 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2686 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2687
6312
f67c379d942c [gaim-migrate @ 6811]
Christian Hammond <chipx86@chipx86.com>
parents: 6060
diff changeset
2688 GList *
f67c379d942c [gaim-migrate @ 6811]
Christian Hammond <chipx86@chipx86.com>
parents: 6060
diff changeset
2689 gaim_conv_placement_get_options(void)
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2690 {
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2691 GList *n, *list = NULL;
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2692 ConvPlacementData *data;
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2693
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2694 ensure_default_funcs();
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2695
6312
f67c379d942c [gaim-migrate @ 6811]
Christian Hammond <chipx86@chipx86.com>
parents: 6060
diff changeset
2696 for (n = conv_placement_fncs; n; n = n->next) {
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2697 data = n->data;
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2698 list = g_list_append(list, data->name);
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2699 list = g_list_append(list, data->id);
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2700 }
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2701
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2702 return list;
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2703 }
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2704
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2705
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2706 void
6312
f67c379d942c [gaim-migrate @ 6811]
Christian Hammond <chipx86@chipx86.com>
parents: 6060
diff changeset
2707 gaim_conv_placement_add_fnc(const char *id, const char *name,
f67c379d942c [gaim-migrate @ 6811]
Christian Hammond <chipx86@chipx86.com>
parents: 6060
diff changeset
2708 GaimConvPlacementFunc fnc)
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2709 {
6312
f67c379d942c [gaim-migrate @ 6811]
Christian Hammond <chipx86@chipx86.com>
parents: 6060
diff changeset
2710 g_return_if_fail(id != NULL);
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2711 g_return_if_fail(name != NULL);
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2712 g_return_if_fail(fnc != NULL);
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2713
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2714 ensure_default_funcs();
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2715
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2716 add_conv_placement_fnc(id, name, fnc);
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2717 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2718
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2719 void
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2720 gaim_conv_placement_remove_fnc(const char *id)
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2721 {
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2722 ConvPlacementData *data = get_conv_placement_data(id);
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2723
6312
f67c379d942c [gaim-migrate @ 6811]
Christian Hammond <chipx86@chipx86.com>
parents: 6060
diff changeset
2724 if (data == NULL)
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2725 return;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2726
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2727 conv_placement_fncs = g_list_remove(conv_placement_fncs, data);
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2728
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2729 g_free(data->id);
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2730 g_free(data->name);
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2731 g_free(data);
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2732 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2733
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2734 const char *
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2735 gaim_conv_placement_get_name(const char *id)
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2736 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2737 ConvPlacementData *data;
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2738
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2739 ensure_default_funcs();
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2740
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2741 data = get_conv_placement_data(id);
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2742
6312
f67c379d942c [gaim-migrate @ 6811]
Christian Hammond <chipx86@chipx86.com>
parents: 6060
diff changeset
2743 if (data == NULL)
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2744 return NULL;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2745
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2746 return data->name;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2747 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2748
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2749 GaimConvPlacementFunc
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2750 gaim_conv_placement_get_fnc(const char *id)
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2751 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5621
diff changeset
2752 ConvPlacementData *data;
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2753
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2754 ensure_default_funcs();
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2755
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2756 data = get_conv_placement_data(id);
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2757
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2758 if (data == NULL)
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2759 return NULL;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2760
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2761 return data->fnc;
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2762 }
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2763
7561
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7553
diff changeset
2764 void
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7553
diff changeset
2765 gaim_conv_placement_set_current_func(GaimConvPlacementFunc func)
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2766 {
7561
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7553
diff changeset
2767 g_return_if_fail(func != NULL);
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7553
diff changeset
2768
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7553
diff changeset
2769 place_conv = func;
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7553
diff changeset
2770 }
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7553
diff changeset
2771
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7553
diff changeset
2772 GaimConvPlacementFunc
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7553
diff changeset
2773 gaim_conv_placement_get_current_func(void)
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7553
diff changeset
2774 {
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7553
diff changeset
2775 return place_conv;
4469
ef60c820b884 [gaim-migrate @ 4744]
Christian Hammond <chipx86@chipx86.com>
parents: 4467
diff changeset
2776 }
4481
1a02f276e41e [gaim-migrate @ 4756]
Christian Hammond <chipx86@chipx86.com>
parents: 4478
diff changeset
2777
1a02f276e41e [gaim-migrate @ 4756]
Christian Hammond <chipx86@chipx86.com>
parents: 4478
diff changeset
2778 void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2779 gaim_conversations_set_win_ui_ops(GaimConvWindowUiOps *ops)
4481
1a02f276e41e [gaim-migrate @ 4756]
Christian Hammond <chipx86@chipx86.com>
parents: 4478
diff changeset
2780 {
1a02f276e41e [gaim-migrate @ 4756]
Christian Hammond <chipx86@chipx86.com>
parents: 4478
diff changeset
2781 win_ui_ops = ops;
1a02f276e41e [gaim-migrate @ 4756]
Christian Hammond <chipx86@chipx86.com>
parents: 4478
diff changeset
2782 }
1a02f276e41e [gaim-migrate @ 4756]
Christian Hammond <chipx86@chipx86.com>
parents: 4478
diff changeset
2783
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
2784 GaimConvWindowUiOps *
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 6982
diff changeset
2785 gaim_conversations_get_win_ui_ops(void)
4481
1a02f276e41e [gaim-migrate @ 4756]
Christian Hammond <chipx86@chipx86.com>
parents: 4478
diff changeset
2786 {
1a02f276e41e [gaim-migrate @ 4756]
Christian Hammond <chipx86@chipx86.com>
parents: 4478
diff changeset
2787 return win_ui_ops;
1a02f276e41e [gaim-migrate @ 4756]
Christian Hammond <chipx86@chipx86.com>
parents: 4478
diff changeset
2788 }
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2789
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2790 void *
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2791 gaim_conversations_get_handle(void)
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2792 {
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2793 static int handle;
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2794
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2795 return &handle;
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2796 }
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2797
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2798 void
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2799 gaim_conversations_init(void)
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2800 {
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2801 void *handle = gaim_conversations_get_handle();
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2802
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
2803 /**********************************************************************
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
2804 * Register preferences
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
2805 **********************************************************************/
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2806
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2807 /* Conversations */
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2808 gaim_prefs_add_none("/core/conversations");
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2809
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2810 /* Conversations -> Chat */
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2811 gaim_prefs_add_none("/core/conversations/chat");
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2812 gaim_prefs_add_bool("/core/conversations/chat/show_nick_change", TRUE);
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2813
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2814 /* Conversations -> IM */
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2815 gaim_prefs_add_none("/core/conversations/im");
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2816 gaim_prefs_add_bool("/core/conversations/im/send_typing", TRUE);
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
2817
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2818
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
2819 /**********************************************************************
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
2820 * Register signals
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6837
diff changeset
2821 **********************************************************************/
8078
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2822 gaim_signal_register(handle, "writing-im-msg",
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2823 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2824 gaim_value_new(GAIM_TYPE_BOOLEAN), 3,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2825 gaim_value_new(GAIM_TYPE_SUBTYPE,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2826 GAIM_SUBTYPE_ACCOUNT),
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2827 gaim_value_new(GAIM_TYPE_SUBTYPE,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2828 GAIM_SUBTYPE_CONVERSATION),
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2829 gaim_value_new_outgoing(GAIM_TYPE_STRING));
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2830
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2831 gaim_signal_register(handle, "wrote-im-msg",
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2832 gaim_marshal_VOID__POINTER_POINTER_POINTER,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2833 NULL, 3,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2834 gaim_value_new(GAIM_TYPE_SUBTYPE,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2835 GAIM_SUBTYPE_ACCOUNT),
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2836 gaim_value_new(GAIM_TYPE_SUBTYPE,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2837 GAIM_SUBTYPE_CONVERSATION),
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2838 gaim_value_new(GAIM_TYPE_STRING));
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2839
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2840 gaim_signal_register(handle, "displaying-im-msg",
6780
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2841 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER,
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2842 gaim_value_new(GAIM_TYPE_BOOLEAN), 3,
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2843 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2844 GAIM_SUBTYPE_ACCOUNT),
6780
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2845 gaim_value_new(GAIM_TYPE_SUBTYPE,
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2846 GAIM_SUBTYPE_CONVERSATION),
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2847 gaim_value_new_outgoing(GAIM_TYPE_STRING));
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2848
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2849 gaim_signal_register(handle, "displayed-im-msg",
6780
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2850 gaim_marshal_VOID__POINTER_POINTER_POINTER,
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2851 NULL, 3,
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2852 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2853 GAIM_SUBTYPE_ACCOUNT),
6780
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2854 gaim_value_new(GAIM_TYPE_SUBTYPE,
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2855 GAIM_SUBTYPE_CONVERSATION),
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2856 gaim_value_new(GAIM_TYPE_STRING));
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2857
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2858 gaim_signal_register(handle, "sending-im-msg",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2859 gaim_marshal_VOID__POINTER_POINTER_POINTER,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2860 NULL, 3,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2861 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2862 GAIM_SUBTYPE_ACCOUNT),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2863 gaim_value_new(GAIM_TYPE_STRING),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2864 gaim_value_new_outgoing(GAIM_TYPE_STRING));
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2865
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2866 gaim_signal_register(handle, "sent-im-msg",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2867 gaim_marshal_VOID__POINTER_POINTER_POINTER,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2868 NULL, 3,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2869 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2870 GAIM_SUBTYPE_ACCOUNT),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2871 gaim_value_new(GAIM_TYPE_STRING),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2872 gaim_value_new(GAIM_TYPE_STRING));
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2873
8999
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2874 gaim_signal_register(handle, "receiving-im-msg",
10104
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2875 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER,
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2876 gaim_value_new(GAIM_TYPE_BOOLEAN), 5,
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2877 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2878 GAIM_SUBTYPE_ACCOUNT),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2879 gaim_value_new_outgoing(GAIM_TYPE_STRING),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2880 gaim_value_new_outgoing(GAIM_TYPE_STRING),
10104
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2881 gaim_value_new(GAIM_TYPE_SUBTYPE,
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2882 GAIM_SUBTYPE_CONVERSATION),
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2883 gaim_value_new_outgoing(GAIM_TYPE_UINT));
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2884
8999
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2885 gaim_signal_register(handle, "received-im-msg",
10104
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2886 gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT,
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2887 NULL, 5,
8999
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2888 gaim_value_new(GAIM_TYPE_SUBTYPE,
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2889 GAIM_SUBTYPE_ACCOUNT),
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2890 gaim_value_new(GAIM_TYPE_STRING),
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2891 gaim_value_new(GAIM_TYPE_STRING),
10104
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2892 gaim_value_new(GAIM_TYPE_SUBTYPE,
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2893 GAIM_SUBTYPE_CONVERSATION),
8999
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2894 gaim_value_new(GAIM_TYPE_UINT));
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2895
8078
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2896 gaim_signal_register(handle, "writing-chat-msg",
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2897 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2898 gaim_value_new(GAIM_TYPE_BOOLEAN), 3,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2899 gaim_value_new(GAIM_TYPE_SUBTYPE,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2900 GAIM_SUBTYPE_ACCOUNT),
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2901 gaim_value_new(GAIM_TYPE_SUBTYPE,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2902 GAIM_SUBTYPE_CONVERSATION),
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2903 gaim_value_new_outgoing(GAIM_TYPE_STRING));
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2904
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2905 gaim_signal_register(handle, "wrote-chat-msg",
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2906 gaim_marshal_VOID__POINTER_POINTER_POINTER,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2907 NULL, 3,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2908 gaim_value_new(GAIM_TYPE_SUBTYPE,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2909 GAIM_SUBTYPE_ACCOUNT),
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2910 gaim_value_new(GAIM_TYPE_SUBTYPE,
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2911 GAIM_SUBTYPE_CONVERSATION),
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2912 gaim_value_new(GAIM_TYPE_STRING));
e8e087085339 [gaim-migrate @ 8777]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2913
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2914 gaim_signal_register(handle, "displaying-chat-msg",
6780
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2915 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER,
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2916 gaim_value_new(GAIM_TYPE_BOOLEAN), 3,
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2917 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2918 GAIM_SUBTYPE_ACCOUNT),
6780
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2919 gaim_value_new(GAIM_TYPE_SUBTYPE,
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2920 GAIM_SUBTYPE_CONVERSATION),
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2921 gaim_value_new_outgoing(GAIM_TYPE_STRING));
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2922
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2923 gaim_signal_register(handle, "displayed-chat-msg",
6780
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2924 gaim_marshal_VOID__POINTER_POINTER_POINTER,
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2925 NULL, 3,
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2926 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2927 GAIM_SUBTYPE_ACCOUNT),
6780
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2928 gaim_value_new(GAIM_TYPE_SUBTYPE,
66775151d7a7 [gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2929 GAIM_SUBTYPE_CONVERSATION),
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2930 gaim_value_new(GAIM_TYPE_STRING));
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2931
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2932 gaim_signal_register(handle, "sending-chat-msg",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2933 gaim_marshal_VOID__POINTER_POINTER_UINT, NULL, 3,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2934 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2935 GAIM_SUBTYPE_ACCOUNT),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2936 gaim_value_new_outgoing(GAIM_TYPE_STRING),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2937 gaim_value_new(GAIM_TYPE_UINT));
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2938
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2939 gaim_signal_register(handle, "sent-chat-msg",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2940 gaim_marshal_VOID__POINTER_POINTER_UINT, NULL, 3,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2941 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2942 GAIM_SUBTYPE_ACCOUNT),
6607
32fd26037a59 [gaim-migrate @ 7131]
Christian Hammond <chipx86@chipx86.com>
parents: 6605
diff changeset
2943 gaim_value_new(GAIM_TYPE_STRING),
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2944 gaim_value_new(GAIM_TYPE_UINT));
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2945
8999
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2946 gaim_signal_register(handle, "receiving-chat-msg",
10104
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2947 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER,
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2948 gaim_value_new(GAIM_TYPE_BOOLEAN), 5,
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2949 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2950 GAIM_SUBTYPE_ACCOUNT),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2951 gaim_value_new_outgoing(GAIM_TYPE_STRING),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2952 gaim_value_new_outgoing(GAIM_TYPE_STRING),
7511
0d98123a9378 [gaim-migrate @ 8124]
Christian Hammond <chipx86@chipx86.com>
parents: 7431
diff changeset
2953 gaim_value_new(GAIM_TYPE_SUBTYPE,
10104
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2954 GAIM_SUBTYPE_CONVERSATION),
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2955 gaim_value_new_outgoing(GAIM_TYPE_UINT));
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2956
8999
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2957 gaim_signal_register(handle, "received-chat-msg",
10104
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2958 gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT,
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2959 NULL, 5,
8999
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2960 gaim_value_new(GAIM_TYPE_SUBTYPE,
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2961 GAIM_SUBTYPE_ACCOUNT),
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2962 gaim_value_new(GAIM_TYPE_STRING),
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2963 gaim_value_new(GAIM_TYPE_STRING),
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2964 gaim_value_new(GAIM_TYPE_SUBTYPE,
10104
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2965 GAIM_SUBTYPE_CONVERSATION),
081392879815 [gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10087
diff changeset
2966 gaim_value_new(GAIM_TYPE_UINT));
8999
dd434cfec86a [gaim-migrate @ 9774]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8998
diff changeset
2967
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2968 gaim_signal_register(handle, "conversation-switching",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2969 gaim_marshal_VOID__POINTER_POINTER, NULL, 2,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2970 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2971 GAIM_SUBTYPE_CONVERSATION),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2972 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2973 GAIM_SUBTYPE_CONVERSATION));
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2974
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2975 gaim_signal_register(handle, "conversation-switched",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2976 gaim_marshal_VOID__POINTER_POINTER, NULL, 2,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2977 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2978 GAIM_SUBTYPE_CONVERSATION),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2979 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2980 GAIM_SUBTYPE_CONVERSATION));
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2981
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2982 gaim_signal_register(handle, "conversation-created",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2983 gaim_marshal_VOID__POINTER, NULL, 1,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2984 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2985 GAIM_SUBTYPE_CONVERSATION));
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2986
9734
58a18645cbd5 [gaim-migrate @ 10595]
Kevin Stange <kstange@pidgin.im>
parents: 9633
diff changeset
2987 gaim_signal_register(handle, "conversation-updated",
9909
b13c36f7d52b [gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9846
diff changeset
2988 gaim_marshal_VOID__POINTER_UINT, NULL, 2,
9734
58a18645cbd5 [gaim-migrate @ 10595]
Kevin Stange <kstange@pidgin.im>
parents: 9633
diff changeset
2989 gaim_value_new(GAIM_TYPE_SUBTYPE,
58a18645cbd5 [gaim-migrate @ 10595]
Kevin Stange <kstange@pidgin.im>
parents: 9633
diff changeset
2990 GAIM_SUBTYPE_CONVERSATION),
58a18645cbd5 [gaim-migrate @ 10595]
Kevin Stange <kstange@pidgin.im>
parents: 9633
diff changeset
2991 gaim_value_new(GAIM_TYPE_UINT));
58a18645cbd5 [gaim-migrate @ 10595]
Kevin Stange <kstange@pidgin.im>
parents: 9633
diff changeset
2992
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2993 gaim_signal_register(handle, "deleting-conversation",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2994 gaim_marshal_VOID__POINTER, NULL, 1,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2995 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2996 GAIM_SUBTYPE_CONVERSATION));
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2997
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
2998 gaim_signal_register(handle, "buddy-typing",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
2999 gaim_marshal_VOID__POINTER, NULL, 1,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3000 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3001 GAIM_SUBTYPE_CONVERSATION));
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3002
6837
7c0a9bac0f3f [gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
3003 gaim_signal_register(handle, "buddy-typing-stopped",
7c0a9bac0f3f [gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
3004 gaim_marshal_VOID__POINTER, NULL, 1,
7c0a9bac0f3f [gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
3005 gaim_value_new(GAIM_TYPE_SUBTYPE,
7c0a9bac0f3f [gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
3006 GAIM_SUBTYPE_CONVERSATION));
7c0a9bac0f3f [gaim-migrate @ 7382]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
3007
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3008 gaim_signal_register(handle, "chat-buddy-joining",
9587
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
3009 gaim_marshal_BOOLEAN__POINTER_POINTER_UINT,
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
3010 gaim_value_new(GAIM_TYPE_BOOLEAN), 3,
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3011 gaim_value_new(GAIM_TYPE_SUBTYPE,
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3012 GAIM_SUBTYPE_CONVERSATION),
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3013 gaim_value_new(GAIM_TYPE_STRING),
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3014 gaim_value_new(GAIM_TYPE_UINT));
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3015
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3016 gaim_signal_register(handle, "chat-buddy-joined",
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3017 gaim_marshal_VOID__POINTER_POINTER_UINT, NULL, 3,
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3018 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3019 GAIM_SUBTYPE_CONVERSATION),
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3020 gaim_value_new(GAIM_TYPE_STRING),
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3021 gaim_value_new(GAIM_TYPE_UINT));
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3022
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3023 gaim_signal_register(handle, "chat-buddy-flags",
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3024 gaim_marshal_VOID__POINTER_POINTER_UINT_UINT, NULL, 4,
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3025 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3026 GAIM_SUBTYPE_CONVERSATION),
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3027 gaim_value_new(GAIM_TYPE_STRING),
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3028 gaim_value_new(GAIM_TYPE_UINT),
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9528
diff changeset
3029 gaim_value_new(GAIM_TYPE_UINT));
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3030
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3031 gaim_signal_register(handle, "chat-buddy-leaving",
9587
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
3032 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER,
e015e91f6a3e [gaim-migrate @ 10430]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
3033 gaim_value_new(GAIM_TYPE_BOOLEAN), 3,
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3034 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3035 GAIM_SUBTYPE_CONVERSATION),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3036 gaim_value_new(GAIM_TYPE_STRING),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3037 gaim_value_new(GAIM_TYPE_STRING));
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3038
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3039 gaim_signal_register(handle, "chat-buddy-left",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3040 gaim_marshal_VOID__POINTER_POINTER_POINTER, NULL, 3,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3041 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3042 GAIM_SUBTYPE_CONVERSATION),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3043 gaim_value_new(GAIM_TYPE_STRING),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3044 gaim_value_new(GAIM_TYPE_STRING));
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3045
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3046 gaim_signal_register(handle, "chat-inviting-user",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3047 gaim_marshal_VOID__POINTER_POINTER_POINTER, NULL, 3,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3048 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3049 GAIM_SUBTYPE_CONVERSATION),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3050 gaim_value_new(GAIM_TYPE_STRING),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3051 gaim_value_new_outgoing(GAIM_TYPE_STRING));
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3052
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3053 gaim_signal_register(handle, "chat-invited-user",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3054 gaim_marshal_VOID__POINTER_POINTER_POINTER, NULL, 3,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3055 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3056 GAIM_SUBTYPE_CONVERSATION),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3057 gaim_value_new(GAIM_TYPE_STRING),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3058 gaim_value_new(GAIM_TYPE_STRING));
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3059
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3060 gaim_signal_register(handle, "chat-invited",
11064
8183c72bef80 [gaim-migrate @ 13035]
Levi Bard <levi@bard.sytes.net>
parents: 11048
diff changeset
3061 gaim_marshal_INT__POINTER_POINTER_POINTER_POINTER_POINTER,
9514
05247f11e65c [gaim-migrate @ 10341]
Gary Kramlich <grim@pidgin.im>
parents: 9375
diff changeset
3062 NULL, 5,
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3063 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3064 GAIM_SUBTYPE_ACCOUNT),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3065 gaim_value_new(GAIM_TYPE_STRING),
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3066 gaim_value_new(GAIM_TYPE_STRING),
9514
05247f11e65c [gaim-migrate @ 10341]
Gary Kramlich <grim@pidgin.im>
parents: 9375
diff changeset
3067 gaim_value_new(GAIM_TYPE_STRING),
05247f11e65c [gaim-migrate @ 10341]
Gary Kramlich <grim@pidgin.im>
parents: 9375
diff changeset
3068 gaim_value_new(GAIM_TYPE_POINTER));
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3069
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3070 gaim_signal_register(handle, "chat-joined",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3071 gaim_marshal_VOID__POINTER, NULL, 1,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3072 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3073 GAIM_SUBTYPE_CONVERSATION));
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3074
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3075 gaim_signal_register(handle, "chat-left",
6564
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3076 gaim_marshal_VOID__POINTER, NULL, 1,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3077 gaim_value_new(GAIM_TYPE_SUBTYPE,
a7a2c1927544 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
3078 GAIM_SUBTYPE_CONVERSATION));
9517
a4b0dccad1f8 [gaim-migrate @ 10344]
Gary Kramlich <grim@pidgin.im>
parents: 9514
diff changeset
3079
a4b0dccad1f8 [gaim-migrate @ 10344]
Gary Kramlich <grim@pidgin.im>
parents: 9514
diff changeset
3080 gaim_signal_register(handle, "chat-topic-changed",
9528
fda6e5341bf2 [gaim-migrate @ 10355]
Luke Schierer <lschiere@pidgin.im>
parents: 9517
diff changeset
3081 gaim_marshal_VOID__POINTER_POINTER_POINTER, NULL, 3,
9517
a4b0dccad1f8 [gaim-migrate @ 10344]
Gary Kramlich <grim@pidgin.im>
parents: 9514
diff changeset
3082 gaim_value_new(GAIM_TYPE_SUBTYPE,
a4b0dccad1f8 [gaim-migrate @ 10344]
Gary Kramlich <grim@pidgin.im>
parents: 9514
diff changeset
3083 GAIM_SUBTYPE_CONVERSATION),
a4b0dccad1f8 [gaim-migrate @ 10344]
Gary Kramlich <grim@pidgin.im>
parents: 9514
diff changeset
3084 gaim_value_new(GAIM_TYPE_STRING),
a4b0dccad1f8 [gaim-migrate @ 10344]
Gary Kramlich <grim@pidgin.im>
parents: 9514
diff changeset
3085 gaim_value_new(GAIM_TYPE_STRING));
5858
1bc64d957067 [gaim-migrate @ 6289]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
3086 }
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3087
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3088 void
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3089 gaim_conversations_uninit(void)
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3090 {
9909
b13c36f7d52b [gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9846
diff changeset
3091 while (conversations)
b13c36f7d52b [gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9846
diff changeset
3092 gaim_conversation_destroy((GaimConversation*)conversations->data);
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3093 gaim_signals_unregister_by_instance(gaim_conversations_get_handle());
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6478
diff changeset
3094 }

mercurial