finch/gntblist.c

Wed, 20 May 2020 14:56:03 +0100

author
David Woodhouse <dwmw2@infradead.org>
date
Wed, 20 May 2020 14:56:03 +0100
branch
release-2.x.y
changeset 40428
2097f91763f1
parent 39644
54ed9db5e2ff
permissions
-rw-r--r--

Let purple_xfer_conversation_write() handle chats too

14620
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
1 /**
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
2 * @file gntblist.c GNT BuddyList API
16255
fa61ee19f526 Rename the Doxygen group from gntui to finch and define the finch group
Richard Laager <rlaager@pidgin.im>
parents: 16166
diff changeset
3 * @ingroup finch
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
6 /* finch
14620
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
7 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15908
diff changeset
8 * Finch is the legal property of its developers, whose names are too numerous
14620
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
10 * source distribution.
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
11 *
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
12 * This program is free software; you can redistribute it and/or modify
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
13 * it under the terms of the GNU General Public License as published by
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
15 * (at your option) any later version.
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
16 *
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
17 * This program is distributed in the hope that it will be useful,
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
20 * GNU General Public License for more details.
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
21 *
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
22 * You should have received a copy of the GNU General Public License
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19555
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
14620
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14555
diff changeset
25 */
29106
51c7b2177e42 Fix all the remaining files for which internal.h doesn't end up being the first include.
Paul Aurich <darkrain42@pidgin.im>
parents: 28939
diff changeset
26 #include <internal.h>
18273
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18134
diff changeset
27 #include "finch.h"
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18134
diff changeset
28
13939
76fa1e736c99 [gaim-migrate @ 16354]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13931
diff changeset
29 #include <account.h>
76fa1e736c99 [gaim-migrate @ 16354]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13931
diff changeset
30 #include <blist.h>
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
31 #include <log.h>
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
32 #include <notify.h>
22378
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
33 #include <privacy.h>
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
34 #include <request.h>
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
35 #include <savedstatuses.h>
13939
76fa1e736c99 [gaim-migrate @ 16354]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13931
diff changeset
36 #include <server.h>
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
37 #include <signal.h>
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
38 #include <status.h>
13939
76fa1e736c99 [gaim-migrate @ 16354]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13931
diff changeset
39 #include <util.h>
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
40 #include "debug.h"
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
41
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
42 #include "gntbox.h"
21804
931ef2cc7cfb Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21630
diff changeset
43 #include "gntcolors.h"
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
44 #include "gntcombobox.h"
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
45 #include "gntentry.h"
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
46 #include "gntft.h"
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
47 #include "gntlabel.h"
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
48 #include "gntline.h"
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
49 #include "gntlog.h"
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
50 #include "gntmenu.h"
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
51 #include "gntmenuitem.h"
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
52 #include "gntmenuitemcheck.h"
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
53 #include "gntpounce.h"
21804
931ef2cc7cfb Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21630
diff changeset
54 #include "gntstyle.h"
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
55 #include "gnttree.h"
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
56 #include "gntutils.h"
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
57 #include "gntwindow.h"
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
58
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
59 #include "gntblist.h"
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14447
diff changeset
60 #include "gntconv.h"
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
61 #include "gntstatus.h"
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
62 #include <string.h>
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
63
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16344
diff changeset
64 #define PREF_ROOT "/finch/blist"
25732
bdd010ff69fa *** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25708
diff changeset
65 #define TYPING_TIMEOUT_S 4
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
66
24450
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
67 #define SHOW_EMPTY_GROUP_TIMEOUT 60
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
68
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
69 typedef struct
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
70 {
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
71 GntWidget *window;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
72 GntWidget *tree;
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
73
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
74 GntWidget *tooltip;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
75 PurpleBlistNode *tnode; /* Who is the tooltip being displayed for? */
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
76 GList *tagged; /* A list of tagged blistnodes */
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
77
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
78 GntWidget *context;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
79 PurpleBlistNode *cnode;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
80
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
81 /* XXX: I am KISSing */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
82 GntWidget *status; /* Dropdown with the statuses */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
83 GntWidget *statustext; /* Status message */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
84 int typing;
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
85
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
86 GntWidget *menu;
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
87 /* These are the menuitems that get regenerated */
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
88 GntMenuItem *accounts;
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
89 GntMenuItem *plugins;
22299
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
90 GntMenuItem *grouping;
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
91
24450
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
92 /* When a new group is manually added, it is empty, but we still want to show it
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
93 * for a while (SHOW_EMPTY_GROUP_TIMEOUT seconds) even if 'show empty groups' is
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
94 * not selected.
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
95 */
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
96 GList *new_group;
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
97 guint new_group_timeout;
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
98
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
99 FinchBlistManager *manager;
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
100 } FinchBlist;
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
101
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
102 typedef struct
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
103 {
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
104 gpointer row; /* the row in the GntTree */
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
105 guint signed_timer; /* used when 'recently' signed on/off */
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
106 } FinchBlistNode;
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
107
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
108 typedef enum
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
109 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
110 STATUS_PRIMITIVE = 0,
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
111 STATUS_SAVED_POPULAR,
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
112 STATUS_SAVED_ALL,
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
113 STATUS_SAVED_NEW
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
114 } StatusType;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
115
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
116 typedef struct
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
117 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
118 StatusType type;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
119 union
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
120 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
121 PurpleStatusPrimitive prim;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
122 PurpleSavedStatus *saved;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
123 } u;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
124 } StatusBoxItem;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
125
18850
8242ced9d971 We don't need dynamic things here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18831
diff changeset
126 static FinchBlist *ggblist;
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
127
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
128 static void add_buddy(PurpleBuddy *buddy, FinchBlist *ggblist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
129 static void add_contact(PurpleContact *contact, FinchBlist *ggblist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
130 static void add_group(PurpleGroup *group, FinchBlist *ggblist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
131 static void add_chat(PurpleChat *chat, FinchBlist *ggblist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
132 static void add_node(PurpleBlistNode *node, FinchBlist *ggblist);
17876
e22e8884af80 Fix for the bug Alver reported:
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17862
diff changeset
133 static void node_update(PurpleBuddyList *list, PurpleBlistNode *node);
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
134 #if 0
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
135 static gboolean is_contact_online(PurpleContact *contact);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
136 static gboolean is_group_online(PurpleGroup *group);
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
137 #endif
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
138 static void draw_tooltip(FinchBlist *ggblist);
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
139 static void tooltip_for_buddy(PurpleBuddy *buddy, GString *str, gboolean full);
14109
1af2b9d5ef3f [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14104
diff changeset
140 static gboolean remove_typing_cb(gpointer null);
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
141 static void remove_peripherals(FinchBlist *ggblist);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
142 static const char * get_display_name(PurpleBlistNode *node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
143 static void savedstatus_changed(PurpleSavedStatus *now, PurpleSavedStatus *old);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
144 static void blist_show(PurpleBuddyList *list);
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
145 static void update_node_display(PurpleBlistNode *buddy, FinchBlist *ggblist);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
146 static void update_buddy_display(PurpleBuddy *buddy, FinchBlist *ggblist);
30039
9cd7672bae4f Add an autojoin connection signal
Richard Laager <rlaager@pidgin.im>
parents: 29106
diff changeset
147 static gboolean account_autojoin_cb(PurpleConnection *pc, gpointer null);
17295
9bb95ea7e95f Re-show the add buddy request dialog if something went wrong. It's easy to lose the buddy who just added you otherwise.
Richard Nelson <wabz@pidgin.im>
parents: 17164
diff changeset
148 static void finch_request_add_buddy(PurpleAccount *account, const char *username, const char *grp, const char *alias);
22299
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
149 static void menu_group_set_cb(GntMenuItem *item, gpointer null);
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
150
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
151 /* Sort functions */
16555
9f8c3a97fb35 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16490
diff changeset
152 static int blist_node_compare_position(PurpleBlistNode *n1, PurpleBlistNode *n2);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
153 static int blist_node_compare_text(PurpleBlistNode *n1, PurpleBlistNode *n2);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
154 static int blist_node_compare_status(PurpleBlistNode *n1, PurpleBlistNode *n2);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
155 static int blist_node_compare_log(PurpleBlistNode *n1, PurpleBlistNode *n2);
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
156
21804
931ef2cc7cfb Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21630
diff changeset
157 static int color_available;
931ef2cc7cfb Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21630
diff changeset
158 static int color_away;
931ef2cc7cfb Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21630
diff changeset
159 static int color_offline;
931ef2cc7cfb Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21630
diff changeset
160 static int color_idle;
931ef2cc7cfb Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21630
diff changeset
161
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
162 /**
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
163 * Buddy List Manager functions.
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
164 */
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
165
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
166 static gboolean default_can_add_node(PurpleBlistNode *node)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
167 {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
168 gboolean offline = purple_prefs_get_bool(PREF_ROOT "/showoffline");
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
169
38969
faeb2ab83927 Finch: Don't show INVISIBLE buddies or groups
David Woodhouse <dwmw2@infradead.org>
parents: 38259
diff changeset
170 if (!PURPLE_BLIST_NODE_IS_VISIBLE(node))
faeb2ab83927 Finch: Don't show INVISIBLE buddies or groups
David Woodhouse <dwmw2@infradead.org>
parents: 38259
diff changeset
171 return FALSE;
faeb2ab83927 Finch: Don't show INVISIBLE buddies or groups
David Woodhouse <dwmw2@infradead.org>
parents: 38259
diff changeset
172
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
173 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
174 PurpleBuddy *buddy = (PurpleBuddy*)node;
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
175 FinchBlistNode *fnode = FINCH_GET_DATA(node);
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
176 if (!purple_buddy_get_contact(buddy))
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
177 return FALSE; /* When a new buddy is added and show-offline is set */
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
178 if (PURPLE_BUDDY_IS_ONLINE(buddy))
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
179 return TRUE; /* The buddy is online */
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
180 if (!purple_account_is_connected(purple_buddy_get_account(buddy)))
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
181 return FALSE; /* The account is disconnected. Do not show */
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
182 if (offline)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
183 return TRUE; /* We want to see offline buddies too */
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
184 if (fnode && fnode->signed_timer)
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
185 return TRUE; /* Show if the buddy just signed off */
22314
850c1c5e24b9 Pay attention to the 'show_offline' setting for the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
186 if (purple_blist_node_get_bool(node, "show_offline"))
850c1c5e24b9 Pay attention to the 'show_offline' setting for the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
187 return TRUE;
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
188 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
189 PurpleBlistNode *nd;
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
190 for (nd = purple_blist_node_get_first_child(node);
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
191 nd; nd = purple_blist_node_get_sibling_next(nd)) {
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
192 if (default_can_add_node(nd))
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
193 return TRUE;
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
194 }
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
195 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
196 PurpleChat *chat = (PurpleChat*)node;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
197 if (purple_account_is_connected(purple_chat_get_account(chat)))
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
198 return TRUE; /* Show whenever the account is online */
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
199 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
200 PurpleBlistNode *nd;
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
201 gboolean empty = purple_prefs_get_bool(PREF_ROOT "/emptygroups");
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
202 if (empty)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
203 return TRUE; /* If we want to see empty groups, we can show any group */
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
204
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
205 for (nd = purple_blist_node_get_first_child(node);
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
206 nd; nd = purple_blist_node_get_sibling_next(nd)) {
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
207 if (default_can_add_node(nd))
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
208 return TRUE;
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
209 }
24450
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
210
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
211 if (ggblist && ggblist->new_group && g_list_find(ggblist->new_group, node))
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
212 return TRUE;
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
213 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
214
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
215 return FALSE;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
216 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
217
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
218 static gpointer default_find_parent(PurpleBlistNode *node)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
219 {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
220 gpointer ret = NULL;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
221 switch (purple_blist_node_get_type(node)) {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
222 case PURPLE_BLIST_BUDDY_NODE:
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
223 case PURPLE_BLIST_CONTACT_NODE:
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
224 case PURPLE_BLIST_CHAT_NODE:
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
225 ret = purple_blist_node_get_parent(node);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
226 break;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
227 default:
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
228 break;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
229 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
230 if (ret)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
231 add_node(ret, ggblist);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
232 return ret;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
233 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
234
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
235 static gboolean default_create_tooltip(gpointer selected_row, GString **body, char **tool_title)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
236 {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
237 GString *str;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
238 PurpleBlistNode *node = selected_row;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
239 int lastseen = 0;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
240 char *title;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
241
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
242 if (!node ||
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
243 purple_blist_node_get_type(node) == PURPLE_BLIST_OTHER_NODE)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
244 return FALSE;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
245
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
246 str = g_string_new("");
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
247
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
248 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
249 PurpleBuddy *pr = purple_contact_get_priority_buddy((PurpleContact*)node);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
250 gboolean offline = !PURPLE_BUDDY_IS_ONLINE(pr);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
251 gboolean showoffline = purple_prefs_get_bool(PREF_ROOT "/showoffline");
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
252 const char *name = purple_buddy_get_name(pr);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
253
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
254 title = g_strdup(name);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
255 tooltip_for_buddy(pr, str, TRUE);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
256 for (node = purple_blist_node_get_first_child(node); node; node = purple_blist_node_get_sibling_next(node)) {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
257 PurpleBuddy *buddy = (PurpleBuddy*)node;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
258 if (offline) {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
259 int value = purple_blist_node_get_int(node, "last_seen");
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
260 if (value > lastseen)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
261 lastseen = value;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
262 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
263 if (node == (PurpleBlistNode*)pr)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
264 continue;
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
265 if (!purple_account_is_connected(purple_buddy_get_account(buddy)))
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
266 continue;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
267 if (!showoffline && !PURPLE_BUDDY_IS_ONLINE(buddy))
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
268 continue;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
269 str = g_string_append(str, "\n----------\n");
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
270 tooltip_for_buddy(buddy, str, FALSE);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
271 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
272 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
273 PurpleBuddy *buddy = (PurpleBuddy *)node;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
274 tooltip_for_buddy(buddy, str, TRUE);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
275 title = g_strdup(purple_buddy_get_name(buddy));
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
276 if (!PURPLE_BUDDY_IS_ONLINE((PurpleBuddy*)node))
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
277 lastseen = purple_blist_node_get_int(node, "last_seen");
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
278 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
279 PurpleGroup *group = (PurpleGroup *)node;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
280
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
281 g_string_append_printf(str, _("Online: %d\nTotal: %d"),
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
282 purple_blist_get_group_online_count(group),
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
283 purple_blist_get_group_size(group, FALSE));
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
284
22342
916c989bd2c0 Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22341
diff changeset
285 title = g_strdup(purple_group_get_name(group));
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
286 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
287 PurpleChat *chat = (PurpleChat *)node;
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
288 PurpleAccount *account = purple_chat_get_account(chat);
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
289
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
290 g_string_append_printf(str, _("Account: %s (%s)"),
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
291 purple_account_get_username(account),
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
292 purple_account_get_protocol_name(account));
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
293
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
294 title = g_strdup(purple_chat_get_name(chat));
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
295 } else {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
296 g_string_free(str, TRUE);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
297 return FALSE;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
298 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
299
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
300 if (lastseen > 0) {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
301 char *tmp = purple_str_seconds_to_string(time(NULL) - lastseen);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
302 g_string_append_printf(str, _("\nLast Seen: %s ago"), tmp);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
303 g_free(tmp);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
304 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
305
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
306 if (tool_title)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
307 *tool_title = title;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
308 else
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
309 g_free(title);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
310
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
311 if (body)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
312 *body = str;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
313 else
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
314 g_string_free(str, TRUE);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
315
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
316 return TRUE;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
317 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
318
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
319 static FinchBlistManager default_manager =
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
320 {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
321 "default",
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
322 N_("Default"),
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22303
diff changeset
323 NULL,
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22303
diff changeset
324 NULL,
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
325 default_can_add_node,
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
326 default_find_parent,
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
327 default_create_tooltip,
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
328 {NULL, NULL, NULL, NULL}
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
329 };
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
330 static GList *managers;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
331
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
332 static FinchBlistNode *
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
333 create_finch_blist_node(PurpleBlistNode *node, gpointer row)
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
334 {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
335 FinchBlistNode *fnode = FINCH_GET_DATA(node);
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
336 if (!fnode) {
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
337 fnode = g_new0(FinchBlistNode, 1);
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
338 fnode->signed_timer = 0;
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
339 FINCH_SET_DATA(node, fnode);
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
340 }
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
341 fnode->row = row;
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
342 return fnode;
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
343 }
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
344
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
345 static void
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
346 reset_blist_node_ui_data(PurpleBlistNode *node)
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
347 {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
348 FinchBlistNode *fnode = FINCH_GET_DATA(node);
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
349 if (fnode == NULL)
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
350 return;
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
351 if (fnode->signed_timer)
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
352 purple_timeout_remove(fnode->signed_timer);
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
353 g_free(fnode);
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
354 FINCH_SET_DATA(node, NULL);
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
355 }
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
356
21808
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
357 static int
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
358 get_display_color(PurpleBlistNode *node)
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
359 {
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
360 PurpleBuddy *buddy;
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
361 int color = 0;
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
362
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
363 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24951
diff changeset
364 node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
21808
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
365 if (!PURPLE_BLIST_NODE_IS_BUDDY(node))
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
366 return 0;
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
367
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
368 buddy = (PurpleBuddy*)node;
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
369 if (purple_presence_is_idle(purple_buddy_get_presence(buddy))) {
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
370 color = color_idle;
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
371 } else if (purple_presence_is_available(purple_buddy_get_presence(buddy))) {
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
372 color = color_available;
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
373 } else if (purple_presence_is_online(purple_buddy_get_presence(buddy)) &&
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
374 !purple_presence_is_available(purple_buddy_get_presence(buddy))) {
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
375 color = color_away;
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
376 } else if (!purple_presence_is_online(purple_buddy_get_presence(buddy))) {
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
377 color = color_offline;
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
378 }
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
379
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
380 return color;
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
381 }
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
382
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
383 static GntTextFormatFlags
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
384 get_blist_node_flag(PurpleBlistNode *node)
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
385 {
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
386 GntTextFormatFlags flag = 0;
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
387 FinchBlistNode *fnode = FINCH_GET_DATA(node);
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
388
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
389 if (ggblist->tagged && g_list_find(ggblist->tagged, node))
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
390 flag |= GNT_TEXT_FLAG_BOLD;
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
391
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
392 if (fnode && fnode->signed_timer)
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
393 flag |= GNT_TEXT_FLAG_BLINK;
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
394 else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24951
diff changeset
395 node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
396 fnode = FINCH_GET_DATA(node);
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
397 if (fnode && fnode->signed_timer)
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
398 flag |= GNT_TEXT_FLAG_BLINK;
22935
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
399 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
400 /* If the node is collapsed, then check to see if any of the priority buddies of
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
401 * any of the contacts within this group recently signed on/off, and set the blink
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
402 * flag appropriately. */
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
403 /* XXX: Refs #5444 */
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
404 /* XXX: there's no way I can ask if the node is expanded or not? *sigh*
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
405 * API addition would be necessary */
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
406 #if 0
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
407 if (!gnt_tree_get_expanded(GNT_TREE(ggblist->tree), node)) {
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
408 for (node = purple_blist_node_get_first_child(node); node;
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
409 node = purple_blist_node_get_sibling_next(node)) {
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
410 PurpleBlistNode *pnode;
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
411 pnode = purple_contact_get_priority_buddy((PurpleContact*)node);
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
412 fnode = FINCH_GET_DATA(node);
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
413 if (fnode && fnode->signed_timer) {
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
414 flag |= GNT_TEXT_FLAG_BLINK;
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
415 break;
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
416 }
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
417 }
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
418 }
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
419 #endif
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
420 }
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
421
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
422 return flag;
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
423 }
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
424
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
425 static void
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
426 blist_update_row_flags(PurpleBlistNode *node)
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
427 {
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
428 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), node, get_blist_node_flag(node));
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
429 gnt_tree_set_row_color(GNT_TREE(ggblist->tree), node, get_display_color(node));
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
430 }
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
431
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
432 #if 0
14469
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
433 static gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
434 is_contact_online(PurpleContact *contact)
14469
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
435 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
436 PurpleBlistNode *node;
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
437 for (node = purple_blist_node_get_first_child(((PurpleBlistNode*)contact)); node;
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
438 node = purple_blist_node_get_sibling_next(node)) {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
439 FinchBlistNode *fnode = FINCH_GET_DATA(node);
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
440 if (PURPLE_BUDDY_IS_ONLINE((PurpleBuddy*)node) ||
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
441 (fnode && fnode->signed_timer))
14469
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
442 return TRUE;
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
443 }
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
444 return FALSE;
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
445 }
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
446
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
447 static gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
448 is_group_online(PurpleGroup *group)
14469
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
449 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
450 PurpleBlistNode *node;
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
451 for (node = purple_blist_node_get_first_child(((PurpleBlistNode*)group)); node;
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
452 node = purple_blist_node_get_sibling_next(node)) {
18738
730acacb64e1 Chats aren't shown if their account is offline, so a group of offline chats shouldn't be either
Richard Nelson <wabz@pidgin.im>
parents: 18626
diff changeset
453 if (PURPLE_BLIST_NODE_IS_CHAT(node) &&
730acacb64e1 Chats aren't shown if their account is offline, so a group of offline chats shouldn't be either
Richard Nelson <wabz@pidgin.im>
parents: 18626
diff changeset
454 purple_account_is_connected(((PurpleChat *)node)->account))
14469
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
455 return TRUE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
456 else if (is_contact_online((PurpleContact*)node))
14469
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
457 return TRUE;
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
458 }
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
459 return FALSE;
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
460 }
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
461 #endif
14469
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
462
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
463 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
464 new_node(PurpleBlistNode *node)
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
465 {
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
466 }
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
467
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
468 static void
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
469 add_node(PurpleBlistNode *node, FinchBlist *ggblist)
13927
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
470 {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
471 if (FINCH_GET_DATA(node))
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
472 return;
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
473
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
474 if (!ggblist->manager->can_add_node(node))
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
475 return;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
476
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
477 if (PURPLE_BLIST_NODE_IS_BUDDY(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
478 add_buddy((PurpleBuddy*)node, ggblist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
479 else if (PURPLE_BLIST_NODE_IS_CONTACT(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
480 add_contact((PurpleContact*)node, ggblist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
481 else if (PURPLE_BLIST_NODE_IS_GROUP(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
482 add_group((PurpleGroup*)node, ggblist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
483 else if (PURPLE_BLIST_NODE_IS_CHAT(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
484 add_chat((PurpleChat *)node, ggblist);
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
485
13927
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
486 draw_tooltip(ggblist);
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
487 }
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
488
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
489 void finch_blist_manager_add_node(PurpleBlistNode *node)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
490 {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
491 add_node(node, ggblist);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
492 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
493
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
494 static void
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
495 remove_tooltip(FinchBlist *ggblist)
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
496 {
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
497 gnt_widget_destroy(ggblist->tooltip);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
498 ggblist->tooltip = NULL;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
499 ggblist->tnode = NULL;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
500 }
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
501
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
502 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
503 node_remove(PurpleBuddyList *list, PurpleBlistNode *node)
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
504 {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
505 FinchBlist *ggblist = FINCH_GET_DATA(list);
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
506 PurpleBlistNode *parent;
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
507
24450
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
508 if (ggblist == NULL || FINCH_GET_DATA(node) == NULL)
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
509 return;
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
510
24450
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
511 if (PURPLE_BLIST_NODE_IS_GROUP(node) && ggblist->new_group) {
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
512 ggblist->new_group = g_list_remove(ggblist->new_group, node);
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
513 }
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
514
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
515 gnt_tree_remove(GNT_TREE(ggblist->tree), node);
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
516 reset_blist_node_ui_data(node);
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
517 if (ggblist->tagged)
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
518 ggblist->tagged = g_list_remove(ggblist->tagged, node);
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
519
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
520 parent = purple_blist_node_get_parent(node);
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
521 for (node = purple_blist_node_get_first_child(node); node;
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
522 node = purple_blist_node_get_sibling_next(node))
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
523 node_remove(list, node);
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
524
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
525 if (parent) {
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
526 if (!ggblist->manager->can_add_node(parent))
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
527 node_remove(list, parent);
17876
e22e8884af80 Fix for the bug Alver reported:
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17862
diff changeset
528 else
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
529 node_update(list, parent);
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
530 }
14910
a51aca2259d0 [gaim-migrate @ 17617]
Richard Nelson <wabz@pidgin.im>
parents: 14909
diff changeset
531
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
532 draw_tooltip(ggblist);
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
533 }
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
534
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
535 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
536 node_update(PurpleBuddyList *list, PurpleBlistNode *node)
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
537 {
14455
dec960030def [gaim-migrate @ 17101]
Ethan Blanton <elb@pidgin.im>
parents: 14450
diff changeset
538 /* It really looks like this should never happen ... but it does.
dec960030def [gaim-migrate @ 17101]
Ethan Blanton <elb@pidgin.im>
parents: 14450
diff changeset
539 This will at least emit a warning to the log when it
dec960030def [gaim-migrate @ 17101]
Ethan Blanton <elb@pidgin.im>
parents: 14450
diff changeset
540 happens, so maybe someone will figure it out. */
dec960030def [gaim-migrate @ 17101]
Ethan Blanton <elb@pidgin.im>
parents: 14450
diff changeset
541 g_return_if_fail(node != NULL);
dec960030def [gaim-migrate @ 17101]
Ethan Blanton <elb@pidgin.im>
parents: 14450
diff changeset
542
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
543 if (FINCH_GET_DATA(list)== NULL)
14458
b49cf8395bfa [gaim-migrate @ 17104]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14455
diff changeset
544 return; /* XXX: this is probably the place to auto-join chats */
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
545
17862
32f49f3a139a Fix a crash exposed by nullprpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17845
diff changeset
546 if (ggblist->window == NULL)
32f49f3a139a Fix a crash exposed by nullprpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17845
diff changeset
547 return;
32f49f3a139a Fix a crash exposed by nullprpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17845
diff changeset
548
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
549 if (FINCH_GET_DATA(node)!= NULL) {
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
550 gnt_tree_change_text(GNT_TREE(ggblist->tree), node,
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
551 0, get_display_name(node));
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
552 gnt_tree_sort_row(GNT_TREE(ggblist->tree), node);
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
553 blist_update_row_flags(node);
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
554 if (gnt_tree_get_parent_key(GNT_TREE(ggblist->tree), node) !=
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
555 ggblist->manager->find_parent(node))
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
556 node_remove(list, node);
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
557 }
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
558
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
559 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
560 PurpleBuddy *buddy = (PurpleBuddy*)node;
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
561 add_node((PurpleBlistNode*)buddy, FINCH_GET_DATA(list));
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
562 node_update(list, purple_blist_node_get_parent(node));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
563 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
564 add_node(node, FINCH_GET_DATA(list));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
565 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
566 if (FINCH_GET_DATA(node)== NULL) {
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
567 /* The core seems to expect the UI to add the buddies. */
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
568 for (node = purple_blist_node_get_first_child(node); node; node = purple_blist_node_get_sibling_next(node))
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
569 add_node(node, FINCH_GET_DATA(list));
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
570 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
571 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
572 if (!ggblist->manager->can_add_node(node))
14469
3b398f75a695 [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14467
diff changeset
573 node_remove(list, node);
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
574 else
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
575 add_node(node, FINCH_GET_DATA(list));
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
576 }
24198
a8cf4ef3982a Update the tooltip if the status of the selected node changes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23485
diff changeset
577 if (ggblist->tnode == node) {
a8cf4ef3982a Update the tooltip if the status of the selected node changes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23485
diff changeset
578 draw_tooltip(ggblist);
a8cf4ef3982a Update the tooltip if the status of the selected node changes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23485
diff changeset
579 }
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
580 }
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
581
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
582 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
583 new_list(PurpleBuddyList *list)
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
584 {
14909
d72792eb7575 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14908
diff changeset
585 if (ggblist)
d72792eb7575 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14908
diff changeset
586 return;
d72792eb7575 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14908
diff changeset
587
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
588 ggblist = g_new0(FinchBlist, 1);
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
589 FINCH_SET_DATA(list, ggblist);
22300
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
590 ggblist->manager = finch_blist_manager_find(purple_prefs_get_string(PREF_ROOT "/grouping"));
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
591 if (!ggblist->manager)
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
592 ggblist->manager = &default_manager;
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
593 }
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
594
28088
158b4891a151 Fix a crash at shutdown in Finch.
Paul Aurich <darkrain42@pidgin.im>
parents: 27829
diff changeset
595 static void destroy_list(PurpleBuddyList *list)
158b4891a151 Fix a crash at shutdown in Finch.
Paul Aurich <darkrain42@pidgin.im>
parents: 27829
diff changeset
596 {
158b4891a151 Fix a crash at shutdown in Finch.
Paul Aurich <darkrain42@pidgin.im>
parents: 27829
diff changeset
597 if (ggblist == NULL)
158b4891a151 Fix a crash at shutdown in Finch.
Paul Aurich <darkrain42@pidgin.im>
parents: 27829
diff changeset
598 return;
158b4891a151 Fix a crash at shutdown in Finch.
Paul Aurich <darkrain42@pidgin.im>
parents: 27829
diff changeset
599
158b4891a151 Fix a crash at shutdown in Finch.
Paul Aurich <darkrain42@pidgin.im>
parents: 27829
diff changeset
600 gnt_widget_destroy(ggblist->window);
158b4891a151 Fix a crash at shutdown in Finch.
Paul Aurich <darkrain42@pidgin.im>
parents: 27829
diff changeset
601 g_free(ggblist);
158b4891a151 Fix a crash at shutdown in Finch.
Paul Aurich <darkrain42@pidgin.im>
parents: 27829
diff changeset
602 ggblist = NULL;
158b4891a151 Fix a crash at shutdown in Finch.
Paul Aurich <darkrain42@pidgin.im>
parents: 27829
diff changeset
603 }
158b4891a151 Fix a crash at shutdown in Finch.
Paul Aurich <darkrain42@pidgin.im>
parents: 27829
diff changeset
604
24450
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
605 static gboolean
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
606 remove_new_empty_group(gpointer data)
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
607 {
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
608 PurpleBuddyList *list;
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
609
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
610 if (!ggblist)
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
611 return FALSE;
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
612
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
613 list = purple_get_blist();
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
614 g_return_val_if_fail(list, FALSE);
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
615
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
616 ggblist->new_group_timeout = 0;
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
617 while (ggblist->new_group) {
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
618 PurpleBlistNode *group = ggblist->new_group->data;
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
619 ggblist->new_group = g_list_delete_link(ggblist->new_group, ggblist->new_group);
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
620 node_update(list, group);
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
621 }
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
622
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
623 return FALSE;
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
624 }
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
625
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
626 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
627 add_buddy_cb(void *data, PurpleRequestFields *allfields)
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
628 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
629 const char *username = purple_request_fields_get_string(allfields, "screenname");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
630 const char *alias = purple_request_fields_get_string(allfields, "alias");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
631 const char *group = purple_request_fields_get_string(allfields, "group");
31601
8aa82480b972 Show invite message entry in Finch's Add Buddy dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31294
diff changeset
632 const char *invite = purple_request_fields_get_string(allfields, "invite");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
633 PurpleAccount *account = purple_request_fields_get_account(allfields, "account");
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
634 const char *error = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
635 PurpleGroup *grp;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
636 PurpleBuddy *buddy;
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
637
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
638 if (!username)
22942
2bf494f8e2a4 Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <markdoliner@pidgin.im>
parents: 22935
diff changeset
639 error = _("You must provide a username for the buddy.");
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
640 else if (!group)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
641 error = _("You must provide a group.");
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
642 else if (!account)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
643 error = _("You must select an account.");
16982
febd8a44dce7 Show an error message when trying to add a buddy from an offline account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16981
diff changeset
644 else if (!purple_account_is_connected(account))
febd8a44dce7 Show an error message when trying to add a buddy from an offline account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16981
diff changeset
645 error = _("The selected account is not online.");
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
646
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
647 if (error)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
648 {
17295
9bb95ea7e95f Re-show the add buddy request dialog if something went wrong. It's easy to lose the buddy who just added you otherwise.
Richard Nelson <wabz@pidgin.im>
parents: 17164
diff changeset
649 finch_request_add_buddy(account, username, group, alias);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
650 purple_notify_error(NULL, _("Error"), _("Error adding buddy"), error);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
651 return;
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
652 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
653
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
654 grp = purple_find_group(group);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
655 if (!grp)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
656 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
657 grp = purple_group_new(group);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
658 purple_blist_add_group(grp, NULL);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
659 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
660
24867
69105eeaf010 The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <darkrain42@pidgin.im>
parents: 24799
diff changeset
661 /* XXX: Ask to merge if there's already a buddy with the same alias in the same group (#4553) */
69105eeaf010 The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <darkrain42@pidgin.im>
parents: 24799
diff changeset
662
69105eeaf010 The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <darkrain42@pidgin.im>
parents: 24799
diff changeset
663 if ((buddy = purple_find_buddy_in_group(account, username, grp)) == NULL)
69105eeaf010 The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <darkrain42@pidgin.im>
parents: 24799
diff changeset
664 {
69105eeaf010 The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <darkrain42@pidgin.im>
parents: 24799
diff changeset
665 buddy = purple_buddy_new(account, username, alias);
69105eeaf010 The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <darkrain42@pidgin.im>
parents: 24799
diff changeset
666 purple_blist_add_buddy(buddy, NULL, grp, NULL);
69105eeaf010 The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <darkrain42@pidgin.im>
parents: 24799
diff changeset
667 }
69105eeaf010 The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <darkrain42@pidgin.im>
parents: 24799
diff changeset
668
31601
8aa82480b972 Show invite message entry in Finch's Add Buddy dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31294
diff changeset
669 purple_account_add_buddy_with_invite(account, buddy, invite);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
670 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
671
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
672 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
673 finch_request_add_buddy(PurpleAccount *account, const char *username, const char *grp, const char *alias)
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
674 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
675 PurpleRequestFields *fields = purple_request_fields_new();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
676 PurpleRequestFieldGroup *group = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
677 PurpleRequestField *field;
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
678
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
679 purple_request_fields_add_group(fields, group);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
680
22942
2bf494f8e2a4 Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <markdoliner@pidgin.im>
parents: 22935
diff changeset
681 field = purple_request_field_string_new("screenname", _("Username"), username, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
682 purple_request_field_group_add_field(group, field);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
683
22431
06ae5eb33844 Right-clicking on a widget should trigger the context-menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22379
diff changeset
684 field = purple_request_field_string_new("alias", _("Alias (optional)"), alias, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
685 purple_request_field_group_add_field(group, field);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
686
31601
8aa82480b972 Show invite message entry in Finch's Add Buddy dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31294
diff changeset
687 field = purple_request_field_string_new("invite", _("Invite message (optional)"), NULL, FALSE);
8aa82480b972 Show invite message entry in Finch's Add Buddy dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31294
diff changeset
688 purple_request_field_group_add_field(group, field);
8aa82480b972 Show invite message entry in Finch's Add Buddy dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31294
diff changeset
689
22431
06ae5eb33844 Right-clicking on a widget should trigger the context-menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22379
diff changeset
690 field = purple_request_field_string_new("group", _("Add in group"), grp, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
691 purple_request_field_group_add_field(group, field);
15908
d5b3f76ff418 Group autocomplete for buddy adding
Richard Nelson <wabz@pidgin.im>
parents: 15906
diff changeset
692 purple_request_field_set_type_hint(field, "group");
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
693
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
694 field = purple_request_field_account_new("account", _("Account"), NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
695 purple_request_field_account_set_show_all(field, FALSE);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
696 if (account)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
697 purple_request_field_account_set_value(field, account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
698 purple_request_field_group_add_field(group, field);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
699
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
700 purple_request_fields(NULL, _("Add Buddy"), NULL, _("Please enter buddy information."),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
701 fields,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
702 _("Add"), G_CALLBACK(add_buddy_cb),
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
703 _("Cancel"), NULL,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
704 account, NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
705 NULL);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
706 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
707
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
708 static void
22986
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
709 join_chat(PurpleChat *chat)
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
710 {
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
711 PurpleAccount *account = purple_chat_get_account(chat);
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
712 const char *name;
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
713 PurpleConversation *conv;
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
714 const char *alias;
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
715
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
716 /* This hack here is to work around the fact that there's no good way of
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
717 * getting the actual name of a chat. I don't understand why we return
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
718 * the alias for a chat when all we want is the name. */
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
719 alias = chat->alias;
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
720 chat->alias = NULL;
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
721 name = purple_chat_get_name(chat);
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
722 conv = purple_find_conversation_with_account(
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
723 PURPLE_CONV_TYPE_CHAT, name, account);
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
724 chat->alias = (char *)alias;
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
725
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
726 if (!conv || purple_conv_chat_has_left(PURPLE_CONV_CHAT(conv))) {
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
727 serv_join_chat(purple_account_get_connection(account),
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
728 purple_chat_get_components(chat));
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
729 } else if (conv) {
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
730 purple_conversation_present(conv);
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
731 }
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
732 }
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
733
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
734 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
735 add_chat_cb(void *data, PurpleRequestFields *allfields)
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
736 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
737 PurpleAccount *account;
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
738 const char *alias, *name, *group;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
739 PurpleChat *chat;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
740 PurpleGroup *grp;
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
741 GHashTable *hash = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
742 PurpleConnection *gc;
18852
cc1891434459 Add an 'auto-join' checkbox in the 'Add Chat' dialog, thanks to fmoo's
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18851
diff changeset
743 gboolean autojoin;
22336
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
744 PurplePluginProtocolInfo *info;
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
745
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
746 account = purple_request_fields_get_account(allfields, "account");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
747 name = purple_request_fields_get_string(allfields, "name");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
748 alias = purple_request_fields_get_string(allfields, "alias");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
749 group = purple_request_fields_get_string(allfields, "group");
18852
cc1891434459 Add an 'auto-join' checkbox in the 'Add Chat' dialog, thanks to fmoo's
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18851
diff changeset
750 autojoin = purple_request_fields_get_bool(allfields, "autojoin");
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
751
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
752 if (!purple_account_is_connected(account) || !name || !*name)
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
753 return;
22336
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
754
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
755 if (!group || !*group)
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
756 group = _("Chats");
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
757
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
758 gc = purple_account_get_connection(account);
22336
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
759 info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
760 if (info->chat_info_defaults != NULL)
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
761 hash = info->chat_info_defaults(gc, name);
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
762
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
763 chat = purple_chat_new(account, name, hash);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
764
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
765 if (chat != NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
766 if ((grp = purple_find_group(group)) == NULL) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
767 grp = purple_group_new(group);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
768 purple_blist_add_group(grp, NULL);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
769 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
770 purple_blist_add_chat(chat, grp, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
771 purple_blist_alias_chat(chat, alias);
18852
cc1891434459 Add an 'auto-join' checkbox in the 'Add Chat' dialog, thanks to fmoo's
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18851
diff changeset
772 purple_blist_node_set_bool((PurpleBlistNode*)chat, "gnt-autojoin", autojoin);
22986
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
773 if (autojoin) {
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
774 join_chat(chat);
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
775 }
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
776 }
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
777 }
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
778
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
779 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
780 finch_request_add_chat(PurpleAccount *account, PurpleGroup *grp, const char *alias, const char *name)
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
781 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
782 PurpleRequestFields *fields = purple_request_fields_new();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
783 PurpleRequestFieldGroup *group = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
784 PurpleRequestField *field;
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
785
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
786 purple_request_fields_add_group(fields, group);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
787
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
788 field = purple_request_field_account_new("account", _("Account"), NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
789 purple_request_field_account_set_show_all(field, FALSE);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
790 if (account)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
791 purple_request_field_account_set_value(field, account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
792 purple_request_field_group_add_field(group, field);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
793
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
794 field = purple_request_field_string_new("name", _("Name"), name, FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
795 purple_request_field_group_add_field(group, field);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
796
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
797 field = purple_request_field_string_new("alias", _("Alias"), alias, FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
798 purple_request_field_group_add_field(group, field);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
799
22342
916c989bd2c0 Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22341
diff changeset
800 field = purple_request_field_string_new("group", _("Group"), grp ? purple_group_get_name(grp) : NULL, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
801 purple_request_field_group_add_field(group, field);
22976
df744a1b1bbe Setup tab-completion for groups in the 'Add Chat' dialog.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
802 purple_request_field_set_type_hint(field, "group");
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
803
18852
cc1891434459 Add an 'auto-join' checkbox in the 'Add Chat' dialog, thanks to fmoo's
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18851
diff changeset
804 field = purple_request_field_bool_new("autojoin", _("Auto-join"), FALSE);
cc1891434459 Add an 'auto-join' checkbox in the 'Add Chat' dialog, thanks to fmoo's
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18851
diff changeset
805 purple_request_field_group_add_field(group, field);
cc1891434459 Add an 'auto-join' checkbox in the 'Add Chat' dialog, thanks to fmoo's
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18851
diff changeset
806
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
807 purple_request_fields(NULL, _("Add Chat"), NULL,
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
808 _("You can edit more information from the context menu later."),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
809 fields, _("Add"), G_CALLBACK(add_chat_cb), _("Cancel"), NULL,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
810 NULL, NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
811 NULL);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
812 }
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
813
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
814 static void
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
815 add_group_cb(gpointer null, const char *group)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
816 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
817 PurpleGroup *grp;
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
818
24458
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
819 if (!group || !*group) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
820 purple_notify_error(NULL, _("Error"), _("Error adding group"),
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
821 _("You must give a name for the group to add."));
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
822 return;
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
823 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
824
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
825 grp = purple_find_group(group);
24458
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
826 if (!grp) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
827 grp = purple_group_new(group);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
828 purple_blist_add_group(grp, NULL);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
829 }
24458
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
830
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
831 if (!ggblist)
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
832 return;
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
833
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
834 /* Treat the group as a new group even if it had existed before. This should
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
835 * make things easier to add buddies to empty groups (new or old) without having
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
836 * to turn on 'show empty groups' setting */
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
837 ggblist->new_group = g_list_prepend(ggblist->new_group, grp);
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
838 if (ggblist->new_group_timeout)
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
839 purple_timeout_remove(ggblist->new_group_timeout);
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
840 ggblist->new_group_timeout = purple_timeout_add_seconds(SHOW_EMPTY_GROUP_TIMEOUT,
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
841 remove_new_empty_group, NULL);
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
842
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
843 /* Select the group */
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
844 if (ggblist->tree) {
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
845 FinchBlistNode *fnode = FINCH_GET_DATA((PurpleBlistNode*)grp);
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
846 if (!fnode)
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
847 add_node((PurpleBlistNode*)grp, ggblist);
7706c9b08d5e Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24450
diff changeset
848 gnt_tree_set_selected(GNT_TREE(ggblist->tree), grp);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
849 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
850 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
851
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
852 static void
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21855
diff changeset
853 finch_request_add_group(void)
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
854 {
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
855 purple_request_input(NULL, _("Add Group"), NULL, _("Enter the name of the group"),
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
856 NULL, FALSE, FALSE, NULL,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
857 _("Add"), G_CALLBACK(add_group_cb), _("Cancel"), NULL,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
858 NULL, NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
859 NULL);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
860 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
861
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
862 static PurpleBlistUiOps blist_ui_ops =
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
863 {
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
864 new_list,
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
865 new_node,
14909
d72792eb7575 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14908
diff changeset
866 blist_show,
14447
32f854416012 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14446
diff changeset
867 node_update,
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
868 node_remove,
28088
158b4891a151 Fix a crash at shutdown in Finch.
Paul Aurich <darkrain42@pidgin.im>
parents: 27829
diff changeset
869 destroy_list,
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
870 NULL,
17164
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17018
diff changeset
871 finch_request_add_buddy,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17018
diff changeset
872 finch_request_add_chat,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17018
diff changeset
873 finch_request_add_group,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17018
diff changeset
874 NULL,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17018
diff changeset
875 NULL,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17018
diff changeset
876 NULL,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17018
diff changeset
877 NULL
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
878 };
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
879
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
880 static gpointer
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21855
diff changeset
881 finch_blist_get_handle(void)
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
882 {
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
883 static int handle;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
884
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
885 return &handle;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
886 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
887
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
888 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
889 add_group(PurpleGroup *group, FinchBlist *ggblist)
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
890 {
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
891 gpointer parent;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
892 PurpleBlistNode *node = (PurpleBlistNode *)group;
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
893 if (FINCH_GET_DATA(node))
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
894 return;
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
895 parent = ggblist->manager->find_parent((PurpleBlistNode*)group);
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
896 create_finch_blist_node(node, gnt_tree_add_row_after(GNT_TREE(ggblist->tree), group,
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
897 gnt_tree_create_row(GNT_TREE(ggblist->tree), get_display_name(node)),
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
898 parent, NULL));
16165
24ec117bc52c Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15991
diff changeset
899 gnt_tree_set_expanded(GNT_TREE(ggblist->tree), node,
24ec117bc52c Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15991
diff changeset
900 !purple_blist_node_get_bool(node, "collapsed"));
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
901 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
902
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
903 static const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
904 get_display_name(PurpleBlistNode *node)
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
905 {
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
906 static char text[2096];
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
907 char status[8] = " ";
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
908 const char *name = NULL;
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
909
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
910 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24951
diff changeset
911 node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); /* XXX: this can return NULL?! */
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
912
14446
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
913 if (node == NULL)
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
914 return NULL;
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
915
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
916 if (PURPLE_BLIST_NODE_IS_BUDDY(node))
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
917 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
918 PurpleBuddy *buddy = (PurpleBuddy *)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
919 PurpleStatusPrimitive prim;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
920 PurplePresence *presence;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
921 PurpleStatus *now;
13989
9a647311c9ac [gaim-migrate @ 16447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13978
diff changeset
922 gboolean ascii = gnt_ascii_only();
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
923
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
924 presence = purple_buddy_get_presence(buddy);
18614
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
925 if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_MOBILE))
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
926 strncpy(status, ascii ? ":" : "☎", sizeof(status) - 1);
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
927 else {
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
928 now = purple_presence_get_active_status(presence);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
929
18614
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
930 prim = purple_status_type_get_primitive(purple_status_get_type(now));
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
931
18614
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
932 switch(prim) {
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
933 case PURPLE_STATUS_OFFLINE:
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
934 strncpy(status, ascii ? "x" : "⊗", sizeof(status) - 1);
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
935 break;
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
936 case PURPLE_STATUS_AVAILABLE:
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
937 strncpy(status, ascii ? "o" : "â—¯", sizeof(status) - 1);
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
938 break;
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
939 default:
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
940 strncpy(status, ascii ? "." : "⊖", sizeof(status) - 1);
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
941 break;
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
942 }
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
943 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
944 name = purple_buddy_get_alias(buddy);
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
945 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
946 else if (PURPLE_BLIST_NODE_IS_CHAT(node))
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
947 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
948 PurpleChat *chat = (PurpleChat*)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
949 name = purple_chat_get_name(chat);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13946
diff changeset
950
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13946
diff changeset
951 strncpy(status, "~", sizeof(status) - 1);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
952 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
953 else if (PURPLE_BLIST_NODE_IS_GROUP(node))
22342
916c989bd2c0 Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22341
diff changeset
954 return purple_group_get_name((PurpleGroup*)node);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
955
25708
7e97dbce8223 applied changes from aa7ce93329f5ccbe74640a92b6656ae402d8eea8
Ethan Blanton <elb@pidgin.im>
parents: 24799
diff changeset
956 g_snprintf(text, sizeof(text) - 1, "%s %s", status, name);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
957
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
958 return text;
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
959 }
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
960
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
961 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
962 add_chat(PurpleChat *chat, FinchBlist *ggblist)
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
963 {
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
964 gpointer parent;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
965 PurpleBlistNode *node = (PurpleBlistNode *)chat;
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
966 if (FINCH_GET_DATA(node))
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
967 return;
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
968 if (!purple_account_is_connected(purple_chat_get_account(chat)))
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
969 return;
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
970
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
971 parent = ggblist->manager->find_parent((PurpleBlistNode*)chat);
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
972
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
973 create_finch_blist_node(node, gnt_tree_add_row_after(GNT_TREE(ggblist->tree), chat,
14026
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14021
diff changeset
974 gnt_tree_create_row(GNT_TREE(ggblist->tree), get_display_name(node)),
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
975 parent, NULL));
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
976 }
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
977
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
978 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
979 add_contact(PurpleContact *contact, FinchBlist *ggblist)
14446
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
980 {
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
981 gpointer parent;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
982 PurpleBlistNode *node = (PurpleBlistNode*)contact;
14461
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
983 const char *name;
14446
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
984
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
985 if (FINCH_GET_DATA(node))
14446
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
986 return;
21808
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
987
14461
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
988 name = get_display_name(node);
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
989 if (name == NULL)
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
990 return;
21808
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
991
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
992 parent = ggblist->manager->find_parent((PurpleBlistNode*)contact);
14446
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
993
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
994 create_finch_blist_node(node, gnt_tree_add_row_after(GNT_TREE(ggblist->tree), contact,
14461
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
995 gnt_tree_create_row(GNT_TREE(ggblist->tree), name),
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
996 parent, NULL));
14446
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
997
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
998 gnt_tree_set_expanded(GNT_TREE(ggblist->tree), contact, FALSE);
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
999 }
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1000
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1001 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1002 add_buddy(PurpleBuddy *buddy, FinchBlist *ggblist)
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1003 {
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
1004 gpointer parent;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
1005 PurpleBlistNode *node = (PurpleBlistNode *)buddy;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1006 PurpleContact *contact;
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
1007
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
1008 if (FINCH_GET_DATA(node))
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
1009 return;
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1010
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
1011 contact = purple_buddy_get_contact(buddy);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
1012 parent = ggblist->manager->find_parent((PurpleBlistNode*)buddy);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1013
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
1014 create_finch_blist_node(node, gnt_tree_add_row_after(GNT_TREE(ggblist->tree), buddy,
14026
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14021
diff changeset
1015 gnt_tree_create_row(GNT_TREE(ggblist->tree), get_display_name(node)),
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
1016 parent, NULL));
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
1017
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
1018 blist_update_row_flags((PurpleBlistNode*)buddy);
21808
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
1019 if (buddy == purple_contact_get_priority_buddy(contact))
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
1020 blist_update_row_flags((PurpleBlistNode*)contact);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1021 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1022
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
1023 #if 0
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1024 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1025 buddy_signed_on(PurpleBuddy *buddy, FinchBlist *ggblist)
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
1026 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1027 add_node((PurpleBlistNode*)buddy, ggblist);
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
1028 }
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
1029
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
1030 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1031 buddy_signed_off(PurpleBuddy *buddy, FinchBlist *ggblist)
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1032 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1033 node_remove(purple_get_blist(), (PurpleBlistNode*)buddy);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1034 }
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
1035 #endif
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1036
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1037 PurpleBlistUiOps *finch_blist_get_ui_ops()
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1038 {
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1039 return &blist_ui_ops;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1040 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1041
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1042 static void
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
1043 selection_activate(GntWidget *widget, FinchBlist *ggblist)
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1044 {
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
1045 GntTree *tree = GNT_TREE(ggblist->tree);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1046 PurpleBlistNode *node = gnt_tree_get_selection_data(tree);
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
1047
14005
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13993
diff changeset
1048 if (!node)
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13993
diff changeset
1049 return;
22986
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
1050
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1051 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24951
diff changeset
1052 node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
14005
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13993
diff changeset
1053
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1054 if (PURPLE_BLIST_NODE_IS_BUDDY(node))
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
1055 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1056 PurpleBuddy *buddy = (PurpleBuddy *)node;
18134
47b947e1c8f1 present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18132
diff changeset
1057 PurpleConversation *conv;
47b947e1c8f1 present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18132
diff changeset
1058 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
47b947e1c8f1 present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18132
diff changeset
1059 purple_buddy_get_name(buddy),
47b947e1c8f1 present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18132
diff changeset
1060 purple_buddy_get_account(buddy));
47b947e1c8f1 present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18132
diff changeset
1061 if (!conv) {
47b947e1c8f1 present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18132
diff changeset
1062 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM,
47b947e1c8f1 present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18132
diff changeset
1063 purple_buddy_get_account(buddy),
47b947e1c8f1 present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18132
diff changeset
1064 purple_buddy_get_name(buddy));
47b947e1c8f1 present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18132
diff changeset
1065 } else {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
1066 FinchConv *ggconv = FINCH_GET_DATA(conv);
18134
47b947e1c8f1 present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18132
diff changeset
1067 gnt_window_present(ggconv->window);
47b947e1c8f1 present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18132
diff changeset
1068 }
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
1069 finch_conversation_set_active(conv);
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
1070 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1071 else if (PURPLE_BLIST_NODE_IS_CHAT(node))
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
1072 {
22986
a02bb7b14dca Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22976
diff changeset
1073 join_chat((PurpleChat*)node);
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
1074 }
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1075 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1076
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1077 static void
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1078 context_menu_callback(GntMenuItem *item, gpointer data)
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1079 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1080 PurpleMenuAction *action = data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1081 PurpleBlistNode *node = ggblist->cnode;
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1082 if (action) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1083 void (*callback)(PurpleBlistNode *, gpointer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1084 callback = (void (*)(PurpleBlistNode *, gpointer))action->callback;
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1085 if (callback)
18765
84e78da62173 I can pretty much swear this worked at some point. I am not sure when this
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18738
diff changeset
1086 callback(node, action->data);
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1087 else
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1088 return;
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1089 }
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1090 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1091
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1092 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1093 gnt_append_menu_action(GntMenu *menu, PurpleMenuAction *action, gpointer parent)
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1094 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1095 GList *list;
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1096 GntMenuItem *item;
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1097
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1098 if (action == NULL)
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1099 return;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1100
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1101 item = gnt_menuitem_new(action->label);
14912
176bce6dc803 [gaim-migrate @ 17619]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14910
diff changeset
1102 if (action->callback)
15991
1efb6bd8ba3f Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15931
diff changeset
1103 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), context_menu_callback, action);
1efb6bd8ba3f Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15931
diff changeset
1104 gnt_menu_add_item(menu, GNT_MENU_ITEM(item));
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1105
14912
176bce6dc803 [gaim-migrate @ 17619]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14910
diff changeset
1106 if (action->children) {
176bce6dc803 [gaim-migrate @ 17619]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14910
diff changeset
1107 GntWidget *sub = gnt_menu_new(GNT_MENU_POPUP);
176bce6dc803 [gaim-migrate @ 17619]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14910
diff changeset
1108 gnt_menuitem_set_submenu(item, GNT_MENU(sub));
176bce6dc803 [gaim-migrate @ 17619]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14910
diff changeset
1109 for (list = action->children; list; list = list->next)
176bce6dc803 [gaim-migrate @ 17619]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14910
diff changeset
1110 gnt_append_menu_action(GNT_MENU(sub), list->data, action);
176bce6dc803 [gaim-migrate @ 17619]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14910
diff changeset
1111 }
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1112 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1113
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1114 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1115 append_proto_menu(GntMenu *menu, PurpleConnection *gc, PurpleBlistNode *node)
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1116 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1117 GList *list;
22336
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
1118 PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1119
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1120 if(!prpl_info || !prpl_info->blist_node_menu)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1121 return;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1122
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1123 for(list = prpl_info->blist_node_menu(node); list;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1124 list = g_list_delete_link(list, list))
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1125 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1126 PurpleMenuAction *act = (PurpleMenuAction *) list->data;
30060
461d1acb4a54 Fix a crash caused by context menus for sametime buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 30039
diff changeset
1127 if (!act)
461d1acb4a54 Fix a crash caused by context menus for sametime buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 30039
diff changeset
1128 continue;
14532
c80424b94347 [gaim-migrate @ 17186]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14531
diff changeset
1129 act->data = node;
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1130 gnt_append_menu_action(menu, act, NULL);
28939
3433e5b58c2e Destroy the menu-actions created by plugins for the context menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28631
diff changeset
1131 g_signal_connect_swapped(G_OBJECT(menu), "destroy",
3433e5b58c2e Destroy the menu-actions created by plugins for the context menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28631
diff changeset
1132 G_CALLBACK(purple_menu_action_free), act);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1133 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1134 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1135
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1136 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1137 add_custom_action(GntMenu *menu, const char *label, PurpleCallback callback,
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1138 gpointer data)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1139 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1140 PurpleMenuAction *action = purple_menu_action_new(label, callback, data, NULL);
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1141 gnt_append_menu_action(menu, action, NULL);
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1142 g_signal_connect_swapped(G_OBJECT(menu), "destroy",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1143 G_CALLBACK(purple_menu_action_free), action);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1144 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1145
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1146 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1147 chat_components_edit_ok(PurpleChat *chat, PurpleRequestFields *allfields)
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1148 {
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1149 GList *groups, *fields;
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1150
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1151 for (groups = purple_request_fields_get_groups(allfields); groups; groups = groups->next) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1152 fields = purple_request_field_group_get_fields(groups->data);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1153 for (; fields; fields = fields->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1154 PurpleRequestField *field = fields->data;
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1155 const char *id;
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1156 char *val;
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1157
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1158 id = purple_request_field_get_id(field);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1159 if (purple_request_field_get_type(field) == PURPLE_REQUEST_FIELD_INTEGER)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1160 val = g_strdup_printf("%d", purple_request_field_int_get_value(field));
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1161 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1162 val = g_strdup(purple_request_field_string_get_value(field));
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1163
22935
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
1164 if (!val) {
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
1165 g_hash_table_remove(purple_chat_get_components(chat), id);
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
1166 } else {
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
1167 g_hash_table_replace(purple_chat_get_components(chat), g_strdup(id), val); /* val should not be free'd */
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
1168 }
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1169 }
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1170 }
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1171 }
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1172
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1173 static void
18831
ed4592c036ec Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18787
diff changeset
1174 chat_components_edit(PurpleBlistNode *selected, PurpleChat *chat)
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1175 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1176 PurpleRequestFields *fields = purple_request_fields_new();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1177 PurpleRequestFieldGroup *group = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1178 PurpleRequestField *field;
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1179 GList *parts, *iter;
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1180 struct proto_chat_entry *pce;
22335
f6715418a9a8 Update finch to not touch the internals of PurpleAccount. This also includes a change I made to reduce the Cyclomatic Complexity of one of the functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22334
diff changeset
1181 PurpleConnection *gc;
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1182
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1183 purple_request_fields_add_group(fields, group);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1184
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1185 gc = purple_account_get_connection(purple_chat_get_account(chat));
22336
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
1186 parts = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc))->chat_info(gc);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1187
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1188 for (iter = parts; iter; iter = iter->next) {
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1189 pce = iter->data;
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1190 if (pce->is_int) {
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1191 int val;
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1192 const char *str = g_hash_table_lookup(purple_chat_get_components(chat), pce->identifier);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1193 if (!str || sscanf(str, "%d", &val) != 1)
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1194 val = pce->min;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1195 field = purple_request_field_int_new(pce->identifier, pce->label, val);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1196 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1197 field = purple_request_field_string_new(pce->identifier, pce->label,
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1198 g_hash_table_lookup(purple_chat_get_components(chat), pce->identifier), FALSE);
22935
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
1199 if (pce->secret)
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
1200 purple_request_field_string_set_masked(field, TRUE);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1201 }
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1202
22935
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
1203 if (pce->required)
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
1204 purple_request_field_set_required(field, TRUE);
80562b52fb71 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22579
diff changeset
1205
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1206 purple_request_field_group_add_field(group, field);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1207 g_free(pce);
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1208 }
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1209
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1210 g_list_free(parts);
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1211
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1212 purple_request_fields(NULL, _("Edit Chat"), NULL, _("Please Update the necessary fields."),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
1213 fields, _("Edit"), G_CALLBACK(chat_components_edit_ok), _("Cancel"), NULL,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
1214 NULL, NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1215 chat);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1216 }
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1217
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1218 static void
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1219 autojoin_toggled(GntMenuItem *item, gpointer data)
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1220 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1221 PurpleMenuAction *action = data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1222 purple_blist_node_set_bool(action->data, "gnt-autojoin",
15991
1efb6bd8ba3f Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15931
diff changeset
1223 gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item)));
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1224 }
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1225
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1226 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1227 create_chat_menu(GntMenu *menu, PurpleChat *chat)
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1228 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1229 PurpleMenuAction *action = purple_menu_action_new(_("Auto-join"), NULL, chat, NULL);
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1230 GntMenuItem *check = gnt_menuitem_check_new(action->label);
15991
1efb6bd8ba3f Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15931
diff changeset
1231 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(check),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1232 purple_blist_node_get_bool((PurpleBlistNode*)chat, "gnt-autojoin"));
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1233 gnt_menu_add_item(menu, check);
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1234 gnt_menuitem_set_callback(check, autojoin_toggled, action);
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1235 g_signal_connect_swapped(G_OBJECT(menu), "destroy",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1236 G_CALLBACK(purple_menu_action_free), action);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1237
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1238 add_custom_action(menu, _("Edit Settings"), (PurpleCallback)chat_components_edit, chat);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1239 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1240
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1241 static void
18831
ed4592c036ec Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18787
diff changeset
1242 finch_add_buddy(PurpleBlistNode *selected, PurpleGroup *grp)
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
1243 {
22342
916c989bd2c0 Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22341
diff changeset
1244 purple_blist_request_add_buddy(NULL, NULL, grp ? purple_group_get_name(grp) : NULL, NULL);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
1245 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
1246
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
1247 static void
18831
ed4592c036ec Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18787
diff changeset
1248 finch_add_group(PurpleBlistNode *selected, PurpleGroup *grp)
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
1249 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1250 purple_blist_request_add_group();
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
1251 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
1252
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
1253 static void
18831
ed4592c036ec Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18787
diff changeset
1254 finch_add_chat(PurpleBlistNode *selected, PurpleGroup *grp)
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1255 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1256 purple_blist_request_add_chat(NULL, grp, NULL, NULL);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1257 }
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1258
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
1259 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1260 create_group_menu(GntMenu *menu, PurpleGroup *group)
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1261 {
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1262 add_custom_action(menu, _("Add Buddy"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1263 PURPLE_CALLBACK(finch_add_buddy), group);
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1264 add_custom_action(menu, _("Add Chat"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1265 PURPLE_CALLBACK(finch_add_chat), group);
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1266 add_custom_action(menu, _("Add Group"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1267 PURPLE_CALLBACK(finch_add_group), group);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1268 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1269
17845
8ac5337e8f6d Show information about the user requesting authorization.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17366
diff changeset
1270 gpointer finch_retrieve_user_info(PurpleConnection *conn, const char *name)
17360
4b04b2ee459a Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17295
diff changeset
1271 {
4b04b2ee459a Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17295
diff changeset
1272 PurpleNotifyUserInfo *info = purple_notify_user_info_new();
17845
8ac5337e8f6d Show information about the user requesting authorization.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17366
diff changeset
1273 gpointer uihandle;
17360
4b04b2ee459a Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17295
diff changeset
1274 purple_notify_user_info_add_pair(info, _("Information"), _("Retrieving..."));
17845
8ac5337e8f6d Show information about the user requesting authorization.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17366
diff changeset
1275 uihandle = purple_notify_userinfo(conn, name, info, NULL, NULL);
17360
4b04b2ee459a Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17295
diff changeset
1276 purple_notify_user_info_destroy(info);
4b04b2ee459a Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17295
diff changeset
1277
4b04b2ee459a Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17295
diff changeset
1278 serv_get_info(conn, name);
17845
8ac5337e8f6d Show information about the user requesting authorization.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17366
diff changeset
1279 return uihandle;
17360
4b04b2ee459a Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17295
diff changeset
1280 }
4b04b2ee459a Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17295
diff changeset
1281
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1282 static void
18831
ed4592c036ec Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18787
diff changeset
1283 finch_blist_get_buddy_info_cb(PurpleBlistNode *selected, PurpleBuddy *buddy)
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1284 {
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1285 finch_retrieve_user_info(purple_account_get_connection(purple_buddy_get_account(buddy)), purple_buddy_get_name(buddy));
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1286 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1287
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1288 static void
18831
ed4592c036ec Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18787
diff changeset
1289 finch_blist_menu_send_file_cb(PurpleBlistNode *selected, PurpleBuddy *buddy)
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
1290 {
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1291 serv_send_file(purple_account_get_connection(purple_buddy_get_account(buddy)), purple_buddy_get_name(buddy), NULL);
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
1292 }
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
1293
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
1294 static void
18831
ed4592c036ec Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18787
diff changeset
1295 finch_blist_pounce_node_cb(PurpleBlistNode *selected, PurpleBlistNode *node)
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
1296 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1297 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1298 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1299 b = purple_contact_get_priority_buddy((PurpleContact *)node);
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
1300 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1301 b = (PurpleBuddy *)node;
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1302 finch_pounce_editor_show(purple_buddy_get_account(b), purple_buddy_get_name(b), NULL);
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
1303 }
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
1304
22378
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1305 static void
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1306 toggle_block_buddy(GntMenuItem *item, gpointer buddy)
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1307 {
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1308 gboolean block = gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item));
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1309 PurpleAccount *account = purple_buddy_get_account(buddy);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1310 const char *name = purple_buddy_get_name(buddy);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1311
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1312 block ? purple_privacy_deny(account, name, FALSE, FALSE) :
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1313 purple_privacy_allow(account, name, FALSE, FALSE);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1314 }
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
1315
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
1316 static void
24504
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1317 toggle_show_offline(GntMenuItem *item, gpointer buddy)
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1318 {
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1319 purple_blist_node_set_bool(buddy, "show_offline",
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1320 !purple_blist_node_get_bool(buddy, "show_offline"));
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1321 if (!ggblist->manager->can_add_node(buddy))
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1322 node_remove(purple_get_blist(), buddy);
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1323 else
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1324 node_update(purple_get_blist(), buddy);
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1325 }
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1326
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1327 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1328 create_buddy_menu(GntMenu *menu, PurpleBuddy *buddy)
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1329 {
22378
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1330 PurpleAccount *account;
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1331 gboolean permitted;
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1332 GntMenuItem *item;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1333 PurplePluginProtocolInfo *prpl_info;
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1334 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
22335
f6715418a9a8 Update finch to not touch the internals of PurpleAccount. This also includes a change I made to reduce the Cyclomatic Complexity of one of the functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22334
diff changeset
1335
22336
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
1336 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1337 if (prpl_info && prpl_info->get_info)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1338 {
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1339 add_custom_action(menu, _("Get Info"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1340 PURPLE_CALLBACK(finch_blist_get_buddy_info_cb), buddy);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1341 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1342
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
1343 add_custom_action(menu, _("Add Buddy Pounce"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1344 PURPLE_CALLBACK(finch_blist_pounce_node_cb), buddy);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1345
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1346 if (prpl_info && prpl_info->send_file)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1347 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1348 if (!prpl_info->can_receive_file ||
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1349 prpl_info->can_receive_file(gc, purple_buddy_get_name(buddy)))
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15564
diff changeset
1350 add_custom_action(menu, _("Send File"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1351 PURPLE_CALLBACK(finch_blist_menu_send_file_cb), buddy);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1352 }
22378
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1353
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1354 account = purple_buddy_get_account(buddy);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1355 permitted = purple_privacy_check(account, purple_buddy_get_name(buddy));
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1356
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1357 item = gnt_menuitem_check_new(_("Blocked"));
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1358 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), !permitted);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1359 gnt_menuitem_set_callback(item, toggle_block_buddy, buddy);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1360 gnt_menu_add_item(menu, item);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
1361
24504
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1362 item = gnt_menuitem_check_new(_("Show when offline"));
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1363 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), purple_blist_node_get_bool((PurpleBlistNode*)buddy, "show_offline"));
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1364 gnt_menuitem_set_callback(item, toggle_show_offline, buddy);
7cc4ea958ea8 Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24458
diff changeset
1365 gnt_menu_add_item(menu, item);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1366
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1367 /* Protocol actions */
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1368 append_proto_menu(menu,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1369 purple_account_get_connection(purple_buddy_get_account(buddy)),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1370 (PurpleBlistNode*)buddy);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1371 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1372
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1373 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1374 append_extended_menu(GntMenu *menu, PurpleBlistNode *node)
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1375 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1376 GList *iter;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1377
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1378 for (iter = purple_blist_node_get_extended_menu(node);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1379 iter; iter = g_list_delete_link(iter, iter))
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1380 {
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1381 gnt_append_menu_action(menu, iter->data, NULL);
28939
3433e5b58c2e Destroy the menu-actions created by plugins for the context menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28631
diff changeset
1382 g_signal_connect_swapped(G_OBJECT(menu), "destroy",
3433e5b58c2e Destroy the menu-actions created by plugins for the context menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28631
diff changeset
1383 G_CALLBACK(purple_menu_action_free), iter->data);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1384 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1385 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1386
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1387 /* Xerox'd from gtkdialogs.c:purple_gtkdialogs_remove_contact_cb */
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1388 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1389 remove_contact(PurpleContact *contact)
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1390 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1391 PurpleBlistNode *bnode, *cnode;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1392 PurpleGroup *group;
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1393
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1394 cnode = (PurpleBlistNode *)contact;
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
1395 group = (PurpleGroup*)purple_blist_node_get_parent(cnode);
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
1396 for (bnode = purple_blist_node_get_first_child(cnode); bnode; bnode = purple_blist_node_get_sibling_next(bnode)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1397 PurpleBuddy *buddy = (PurpleBuddy*)bnode;
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1398 PurpleAccount *account = purple_buddy_get_account(buddy);
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1399 if (purple_account_is_connected(account))
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1400 purple_account_remove_buddy(account, buddy, group);
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1401 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1402 purple_blist_remove_contact(contact);
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1403 }
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1404
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1405 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1406 rename_blist_node(PurpleBlistNode *node, const char *newname)
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1407 {
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1408 const char *name = newname;
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1409 if (name && !*name)
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1410 name = NULL;
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1411
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1412 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1413 PurpleContact *contact = (PurpleContact*)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1414 PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1415 purple_blist_alias_contact(contact, name);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1416 purple_blist_alias_buddy(buddy, name);
14537
90c314c22c8e [gaim-migrate @ 17191]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14532
diff changeset
1417 serv_alias_buddy(buddy);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1418 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1419 purple_blist_alias_buddy((PurpleBuddy*)node, name);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1420 serv_alias_buddy((PurpleBuddy*)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1421 } else if (PURPLE_BLIST_NODE_IS_CHAT(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1422 purple_blist_alias_chat((PurpleChat*)node, name);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1423 else if (PURPLE_BLIST_NODE_IS_GROUP(node) && (name != NULL))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1424 purple_blist_rename_group((PurpleGroup*)node, name);
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1425 else
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1426 g_return_if_reached();
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1427 }
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1428
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1429 static void
18831
ed4592c036ec Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18787
diff changeset
1430 finch_blist_rename_node_cb(PurpleBlistNode *selected, PurpleBlistNode *node)
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1431 {
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1432 const char *name = NULL;
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1433 char *prompt;
16344
4f2b448b7559 Use 'alias' instead of 'rename' for non-group nodes. Thankfully, this does not introduce new strings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16255
diff changeset
1434 const char *text;
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1435
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1436 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1437 name = purple_contact_get_alias((PurpleContact*)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1438 else if (PURPLE_BLIST_NODE_IS_BUDDY(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1439 name = purple_buddy_get_contact_alias((PurpleBuddy*)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1440 else if (PURPLE_BLIST_NODE_IS_CHAT(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1441 name = purple_chat_get_name((PurpleChat*)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1442 else if (PURPLE_BLIST_NODE_IS_GROUP(node))
22342
916c989bd2c0 Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22341
diff changeset
1443 name = purple_group_get_name((PurpleGroup*)node);
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1444 else
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1445 g_return_if_reached();
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1446
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1447 prompt = g_strdup_printf(_("Please enter the new name for %s"), name);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1448
17018
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16982
diff changeset
1449 text = PURPLE_BLIST_NODE_IS_GROUP(node) ? _("Rename") : _("Set Alias");
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1450 purple_request_input(node, text, prompt, _("Enter empty string to reset the name."),
16344
4f2b448b7559 Use 'alias' instead of 'rename' for non-group nodes. Thankfully, this does not introduce new strings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16255
diff changeset
1451 name, FALSE, FALSE, NULL, text, G_CALLBACK(rename_blist_node),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
1452 _("Cancel"), NULL,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
1453 NULL, NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1454 node);
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1455
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
1456 g_free(prompt);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1457 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1458
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1459
22491
06d2ee82aa58 Fix showing a contact's log, and don't access struct internals
Richard Nelson <wabz@pidgin.im>
parents: 22431
diff changeset
1460 static void showlog_cb(PurpleBlistNode *sel, PurpleBlistNode *node)
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1461 {
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1462 PurpleLogType type;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1463 PurpleAccount *account;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1464 char *name = NULL;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1465
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1466 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1467 PurpleBuddy *b = (PurpleBuddy*) node;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1468 type = PURPLE_LOG_IM;
24951
d0837696fd3a Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24504
diff changeset
1469 name = g_strdup(purple_buddy_get_name(b));
d0837696fd3a Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24504
diff changeset
1470 account = purple_buddy_get_account(b);
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1471 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1472 PurpleChat *c = (PurpleChat*) node;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1473 PurplePluginProtocolInfo *prpl_info = NULL;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1474 type = PURPLE_LOG_CHAT;
24951
d0837696fd3a Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24504
diff changeset
1475 account = purple_chat_get_account(c);
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1476 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(account)));
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1477 if (prpl_info && prpl_info->get_chat_name) {
24951
d0837696fd3a Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24504
diff changeset
1478 name = prpl_info->get_chat_name(purple_chat_get_components(c));
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1479 }
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1480 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1481 finch_log_show_contact((PurpleContact *)node);
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1482 return;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1483 } else {
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1484 /* This callback should not have been registered for a node
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1485 * that doesn't match the type of one of the blocks above. */
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1486 g_return_if_reached();
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1487 }
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1488
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1489 if (name && account) {
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1490 finch_log_show(type, name, account);
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1491 g_free(name);
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1492 }
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1493 }
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1494
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1495
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1496 /* Xeroxed from gtkdialogs.c:purple_gtkdialogs_remove_group_cb*/
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1497 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1498 remove_group(PurpleGroup *group)
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1499 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1500 PurpleBlistNode *cnode, *bnode;
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1501
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
1502 cnode = purple_blist_node_get_first_child(((PurpleBlistNode*)group));
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1503
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1504 while (cnode) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1505 if (PURPLE_BLIST_NODE_IS_CONTACT(cnode)) {
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
1506 bnode = purple_blist_node_get_first_child(cnode);
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
1507 cnode = purple_blist_node_get_sibling_next(cnode);
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1508 while (bnode) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1509 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1510 if (PURPLE_BLIST_NODE_IS_BUDDY(bnode)) {
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1511 PurpleAccount *account;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1512 buddy = (PurpleBuddy*)bnode;
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
1513 bnode = purple_blist_node_get_sibling_next(bnode);
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1514 account = purple_buddy_get_account(buddy);
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1515 if (purple_account_is_connected(account)) {
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1516 purple_account_remove_buddy(account, buddy, group);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1517 purple_blist_remove_buddy(buddy);
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1518 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1519 } else {
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
1520 bnode = purple_blist_node_get_sibling_next(bnode);
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1521 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1522 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1523 } else if (PURPLE_BLIST_NODE_IS_CHAT(cnode)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1524 PurpleChat *chat = (PurpleChat *)cnode;
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
1525 cnode = purple_blist_node_get_sibling_next(cnode);
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
1526 if (purple_account_is_connected(purple_chat_get_account(chat)))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1527 purple_blist_remove_chat(chat);
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1528 } else {
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
1529 cnode = purple_blist_node_get_sibling_next(cnode);
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1530 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1531 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1532
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1533 purple_blist_remove_group(group);
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1534 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1535
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1536 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1537 finch_blist_remove_node(PurpleBlistNode *node)
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1538 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1539 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1540 remove_contact((PurpleContact*)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1541 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1542 PurpleBuddy *buddy = (PurpleBuddy*)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1543 PurpleGroup *group = purple_buddy_get_group(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1544 purple_account_remove_buddy(purple_buddy_get_account(buddy), buddy, group);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1545 purple_blist_remove_buddy(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1546 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1547 purple_blist_remove_chat((PurpleChat*)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1548 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1549 remove_group((PurpleGroup*)node);
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1550 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1551 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
1552
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1553 static void
18831
ed4592c036ec Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18787
diff changeset
1554 finch_blist_remove_node_cb(PurpleBlistNode *selected, PurpleBlistNode *node)
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1555 {
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
1556 PurpleAccount *account = NULL;
14260
a21577fbb4d2 [gaim-migrate @ 16870]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
1557 char *primary;
a21577fbb4d2 [gaim-migrate @ 16870]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
1558 const char *name, *sec = NULL;
14126
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
1559
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1560 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1561 PurpleContact *c = (PurpleContact*)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1562 name = purple_contact_get_alias(c);
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1563 if (c->totalsize > 1)
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1564 sec = _("Removing this contact will also remove all the buddies in the contact");
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
1565 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1566 name = purple_buddy_get_name((PurpleBuddy*)node);
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
1567 account = purple_buddy_get_account((PurpleBuddy*)node);
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
1568 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1569 name = purple_chat_get_name((PurpleChat*)node);
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
1570 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
22342
916c989bd2c0 Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22341
diff changeset
1571 name = purple_group_get_name((PurpleGroup*)node);
14126
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
1572 sec = _("Removing this group will also remove all the buddies in the group");
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
1573 }
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
1574 else
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
1575 return;
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
1576
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
1577 primary = g_strdup_printf(_("Are you sure you want to remove %s?"), name);
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
1578
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1579 /* XXX: anything to do with the returned ui-handle? */
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1580 purple_request_action(node, _("Confirm Remove"),
14126
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
1581 primary, sec,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
1582 1,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
1583 account, name, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1584 node, 2,
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
1585 _("Remove"), finch_blist_remove_node,
14126
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
1586 _("Cancel"), NULL);
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
1587 g_free(primary);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1588 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1589
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1590 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1591 finch_blist_toggle_tag_buddy(PurpleBlistNode *node)
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1592 {
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1593 GList *iter;
15377
f45f57e922a7 [gaim-migrate @ 18106]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15244
diff changeset
1594 if (node == NULL)
f45f57e922a7 [gaim-migrate @ 18106]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15244
diff changeset
1595 return;
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1596 if (ggblist->tagged && (iter = g_list_find(ggblist->tagged, node)) != NULL) {
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1597 ggblist->tagged = g_list_delete_link(ggblist->tagged, iter);
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1598 } else {
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1599 ggblist->tagged = g_list_prepend(ggblist->tagged, node);
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1600 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1601 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24951
diff changeset
1602 update_buddy_display(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)), ggblist);
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24951
diff changeset
1603 else if (PURPLE_BLIST_NODE_IS_BUDDY(node))
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1604 update_buddy_display((PurpleBuddy*)node, ggblist);
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1605 else
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1606 update_node_display(node, ggblist);
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1607 }
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1608
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1609 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1610 finch_blist_place_tagged(PurpleBlistNode *target)
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1611 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1612 PurpleGroup *tg = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1613 PurpleContact *tc = NULL;
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1614
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
1615 if (target == NULL ||
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
1616 purple_blist_node_get_type(target) == PURPLE_BLIST_OTHER_NODE)
15377
f45f57e922a7 [gaim-migrate @ 18106]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15244
diff changeset
1617 return;
f45f57e922a7 [gaim-migrate @ 18106]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15244
diff changeset
1618
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1619 if (PURPLE_BLIST_NODE_IS_GROUP(target))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1620 tg = (PurpleGroup*)target;
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1621 else if (PURPLE_BLIST_NODE_IS_BUDDY(target)) {
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
1622 tc = (PurpleContact*)purple_blist_node_get_parent(target);
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
1623 tg = (PurpleGroup*)purple_blist_node_get_parent((PurpleBlistNode*)tc);
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1624 } else {
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1625 if (PURPLE_BLIST_NODE_IS_CONTACT(target))
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1626 tc = (PurpleContact*)target;
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
1627 tg = (PurpleGroup*)purple_blist_node_get_parent(target);
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1628 }
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1629
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1630 if (ggblist->tagged) {
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1631 GList *list = ggblist->tagged;
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1632 ggblist->tagged = NULL;
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1633 while (list) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1634 PurpleBlistNode *node = list->data;
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1635 list = g_list_delete_link(list, list);
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1637 if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1638 update_node_display(node, ggblist);
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1639 /* Add the group after the current group */
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1640 purple_blist_add_group((PurpleGroup*)node, (PurpleBlistNode*)tg);
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1641 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1642 update_buddy_display(purple_contact_get_priority_buddy((PurpleContact*)node), ggblist);
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24951
diff changeset
1643 if (PURPLE_BLIST_NODE(tg) == target) {
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1644 /* The target is a group, just add the contact to the group. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1645 purple_blist_add_contact((PurpleContact*)node, tg, NULL);
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1646 } else if (tc) {
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1647 /* The target is either a buddy, or a contact. Merge with that contact. */
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1648 purple_blist_merge_contact((PurpleContact*)node, (PurpleBlistNode*)tc);
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1649 } else {
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1650 /* The target is a chat. Add the contact to the group after this chat. */
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1651 purple_blist_add_contact((PurpleContact*)node, NULL, target);
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1652 }
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1653 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1654 update_buddy_display((PurpleBuddy*)node, ggblist);
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24951
diff changeset
1655 if (PURPLE_BLIST_NODE(tg) == target) {
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1656 /* The target is a group. Add this buddy in a new contact under this group. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1657 purple_blist_add_buddy((PurpleBuddy*)node, NULL, tg, NULL);
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1658 } else if (PURPLE_BLIST_NODE_IS_CONTACT(target)) {
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1659 /* Add to the contact. */
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1660 purple_blist_add_buddy((PurpleBuddy*)node, tc, NULL, NULL);
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1661 } else if (PURPLE_BLIST_NODE_IS_BUDDY(target)) {
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1662 /* Add to the contact after the selected buddy. */
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1663 purple_blist_add_buddy((PurpleBuddy*)node, NULL, NULL, target);
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1664 } else if (PURPLE_BLIST_NODE_IS_CHAT(target)) {
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1665 /* Add to the selected chat's group. */
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1666 purple_blist_add_buddy((PurpleBuddy*)node, NULL, tg, NULL);
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1667 }
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1668 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1669 update_node_display(node, ggblist);
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24951
diff changeset
1670 if (PURPLE_BLIST_NODE(tg) == target)
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1671 purple_blist_add_chat((PurpleChat*)node, tg, NULL);
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1672 else
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1673 purple_blist_add_chat((PurpleChat*)node, NULL, target);
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1674 }
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1675 }
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1676 }
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1677 }
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1678
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1679 static void
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
1680 context_menu_destroyed(GntWidget *widget, FinchBlist *ggblist)
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1681 {
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1682 ggblist->context = NULL;
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1683 }
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1684
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1685 static void
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
1686 draw_context_menu(FinchBlist *ggblist)
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1687 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1688 PurpleBlistNode *node = NULL;
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1689 GntWidget *context = NULL;
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1690 GntTree *tree = NULL;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1691 int x, y, top, width;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1692 char *title = NULL;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1693
16869
f35dce8e5bc3 Do not build the context menu if one is already being shown.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16837
diff changeset
1694 if (ggblist->context)
f35dce8e5bc3 Do not build the context menu if one is already being shown.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16837
diff changeset
1695 return;
f35dce8e5bc3 Do not build the context menu if one is already being shown.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16837
diff changeset
1696
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1697 tree = GNT_TREE(ggblist->tree);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1698
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1699 node = gnt_tree_get_selection_data(tree);
22286
c97b158bd4f4 Do not show a context menu for an unknown node.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22285
diff changeset
1700 if (node && purple_blist_node_get_type(node) == PURPLE_BLIST_OTHER_NODE)
c97b158bd4f4 Do not show a context menu for an unknown node.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22285
diff changeset
1701 return;
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1702
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1703 if (ggblist->tooltip)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1704 remove_tooltip(ggblist);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1705
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1706 ggblist->cnode = node;
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1707
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1708 ggblist->context = context = gnt_menu_new(GNT_MENU_POPUP);
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1709 g_signal_connect(G_OBJECT(context), "destroy", G_CALLBACK(context_menu_destroyed), ggblist);
18831
ed4592c036ec Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18787
diff changeset
1710 g_signal_connect(G_OBJECT(context), "hide", G_CALLBACK(gnt_widget_destroy), NULL);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1711
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1712 if (!node) {
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1713 create_group_menu(GNT_MENU(context), NULL);
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1714 title = g_strdup(_("Buddy List"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1715 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24951
diff changeset
1716 ggblist->cnode = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
18831
ed4592c036ec Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18787
diff changeset
1717 create_buddy_menu(GNT_MENU(context), (PurpleBuddy*)ggblist->cnode);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1718 title = g_strdup(purple_contact_get_alias((PurpleContact*)node));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1719 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1720 PurpleBuddy *buddy = (PurpleBuddy *)node;
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1721 create_buddy_menu(GNT_MENU(context), buddy);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1722 title = g_strdup(purple_buddy_get_name(buddy));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1723 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1724 PurpleChat *chat = (PurpleChat*)node;
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1725 create_chat_menu(GNT_MENU(context), chat);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1726 title = g_strdup(purple_chat_get_name(chat));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1727 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1728 PurpleGroup *group = (PurpleGroup *)node;
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1729 create_group_menu(GNT_MENU(context), group);
22342
916c989bd2c0 Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22341
diff changeset
1730 title = g_strdup(purple_group_get_name(group));
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1731 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1732
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1733 append_extended_menu(GNT_MENU(context), node);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1734
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1735 /* These are common for everything */
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1736 if (node) {
16344
4f2b448b7559 Use 'alias' instead of 'rename' for non-group nodes. Thankfully, this does not introduce new strings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16255
diff changeset
1737 add_custom_action(GNT_MENU(context),
4f2b448b7559 Use 'alias' instead of 'rename' for non-group nodes. Thankfully, this does not introduce new strings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16255
diff changeset
1738 PURPLE_BLIST_NODE_IS_GROUP(node) ? _("Rename") : _("Alias"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1739 PURPLE_CALLBACK(finch_blist_rename_node_cb), node);
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1740 add_custom_action(GNT_MENU(context), _("Remove"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1741 PURPLE_CALLBACK(finch_blist_remove_node_cb), node);
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1742
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1743 if (ggblist->tagged && (PURPLE_BLIST_NODE_IS_CONTACT(node)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1744 || PURPLE_BLIST_NODE_IS_GROUP(node))) {
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1745 add_custom_action(GNT_MENU(context), _("Place tagged"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1746 PURPLE_CALLBACK(finch_blist_place_tagged), node);
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1747 }
15564
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
1748
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1749 if (PURPLE_BLIST_NODE_IS_BUDDY(node) || PURPLE_BLIST_NODE_IS_CONTACT(node)) {
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1750 add_custom_action(GNT_MENU(context), _("Toggle Tag"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1751 PURPLE_CALLBACK(finch_blist_toggle_tag_buddy), node);
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1752 }
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1753 if (!PURPLE_BLIST_NODE_IS_GROUP(node)) {
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1754 add_custom_action(GNT_MENU(context), _("View Log"),
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1755 PURPLE_CALLBACK(showlog_cb), node);
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22342
diff changeset
1756 }
14756
bd7ebc1641e1 [gaim-migrate @ 17446]
Richard Nelson <wabz@pidgin.im>
parents: 14753
diff changeset
1757 }
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1758
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1759 /* Set the position for the popup */
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1760 gnt_widget_get_position(GNT_WIDGET(tree), &x, &y);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1761 gnt_widget_get_size(GNT_WIDGET(tree), &width, NULL);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1762 top = gnt_tree_get_selection_visible_line(tree);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1763
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1764 x += width;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1765 y += top - 1;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1766
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1767 gnt_widget_set_position(context, x, y);
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
1768 gnt_screen_menu_show(GNT_MENU(context));
14021
a633de85f90e [gaim-migrate @ 16511]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14020
diff changeset
1769 g_free(title);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1770 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1771
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1772 static void
18391
a51451368934 Show better tooltips for contacts.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18369
diff changeset
1773 tooltip_for_buddy(PurpleBuddy *buddy, GString *str, gboolean full)
14446
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1774 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1775 PurplePlugin *prpl;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1776 PurplePluginProtocolInfo *prpl_info;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1777 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1778 PurpleNotifyUserInfo *user_info;
18614
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
1779 PurplePresence *presence;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1780 const char *alias = purple_buddy_get_alias(buddy);
15207
31d9665a2a7d [gaim-migrate @ 17931]
Evan Schoenberg <evands@pidgin.im>
parents: 15113
diff changeset
1781 char *tmp, *strip;
31d9665a2a7d [gaim-migrate @ 17931]
Evan Schoenberg <evands@pidgin.im>
parents: 15113
diff changeset
1782
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1783 user_info = purple_notify_user_info_new();
14446
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1784
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1785 account = purple_buddy_get_account(buddy);
18614
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
1786 presence = purple_buddy_get_presence(buddy);
15113
956d8ac87bf6 [gaim-migrate @ 17835]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15083
diff changeset
1787
19425
07be487bc354 Fix #2607. (Finch tooltip HTML display)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18909
diff changeset
1788 if (!full || g_utf8_collate(purple_buddy_get_name(buddy), alias)) {
07be487bc354 Fix #2607. (Finch tooltip HTML display)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18909
diff changeset
1789 char *esc = g_markup_escape_text(alias, -1);
07be487bc354 Fix #2607. (Finch tooltip HTML display)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18909
diff changeset
1790 purple_notify_user_info_add_pair(user_info, _("Nickname"), esc);
07be487bc354 Fix #2607. (Finch tooltip HTML display)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18909
diff changeset
1791 g_free(esc);
07be487bc354 Fix #2607. (Finch tooltip HTML display)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18909
diff changeset
1792 }
15207
31d9665a2a7d [gaim-migrate @ 17931]
Evan Schoenberg <evands@pidgin.im>
parents: 15113
diff changeset
1793
31d9665a2a7d [gaim-migrate @ 17931]
Evan Schoenberg <evands@pidgin.im>
parents: 15113
diff changeset
1794 tmp = g_strdup_printf("%s (%s)",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1795 purple_account_get_username(account),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1796 purple_account_get_protocol_name(account));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1797 purple_notify_user_info_add_pair(user_info, _("Account"), tmp);
15207
31d9665a2a7d [gaim-migrate @ 17931]
Evan Schoenberg <evands@pidgin.im>
parents: 15113
diff changeset
1798 g_free(tmp);
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
1799
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1800 prpl = purple_find_prpl(purple_account_get_protocol_id(account));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1801 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
14446
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1802 if (prpl_info && prpl_info->tooltip_text) {
18391
a51451368934 Show better tooltips for contacts.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18369
diff changeset
1803 prpl_info->tooltip_text(buddy, user_info, full);
14446
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1804 }
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1805
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16344
diff changeset
1806 if (purple_prefs_get_bool("/finch/blist/idletime")) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1807 PurplePresence *pre = purple_buddy_get_presence(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1808 if (purple_presence_is_idle(pre)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1809 time_t idle = purple_presence_get_idle_time(pre);
14446
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1810 if (idle > 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1811 char *st = purple_str_seconds_to_string(time(NULL) - idle);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1812 purple_notify_user_info_add_pair(user_info, _("Idle"), st);
14446
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1813 g_free(st);
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1814 }
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1815 }
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1816 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30060
diff changeset
1817
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1818 tmp = purple_notify_user_info_get_text_with_newline(user_info, "<BR>");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1819 purple_notify_user_info_destroy(user_info);
15207
31d9665a2a7d [gaim-migrate @ 17931]
Evan Schoenberg <evands@pidgin.im>
parents: 15113
diff changeset
1820
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1821 strip = purple_markup_strip_html(tmp);
15207
31d9665a2a7d [gaim-migrate @ 17931]
Evan Schoenberg <evands@pidgin.im>
parents: 15113
diff changeset
1822 g_string_append(str, strip);
18614
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
1823
18909
ebc3cc277277 Insert a newline in the tooltip.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18852
diff changeset
1824 if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_MOBILE)) {
ebc3cc277277 Insert a newline in the tooltip.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18852
diff changeset
1825 g_string_append(str, "\n");
18614
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
1826 g_string_append(str, _("On Mobile"));
18909
ebc3cc277277 Insert a newline in the tooltip.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18852
diff changeset
1827 }
18614
186b07bbc7a3 Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18607
diff changeset
1828
15207
31d9665a2a7d [gaim-migrate @ 17931]
Evan Schoenberg <evands@pidgin.im>
parents: 15113
diff changeset
1829 g_free(strip);
31d9665a2a7d [gaim-migrate @ 17931]
Evan Schoenberg <evands@pidgin.im>
parents: 15113
diff changeset
1830 g_free(tmp);
14446
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1831 }
5f36f08183e8 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14441
diff changeset
1832
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1833 static GString*
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1834 make_sure_text_fits(GString *string)
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1835 {
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1836 int maxw = getmaxx(stdscr) - 3;
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1837 char *str = gnt_util_onscreen_fit_string(string->str, maxw);
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1838 string = g_string_assign(string, str);
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1839 g_free(str);
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1840 return string;
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1841 }
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1842
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1843 static gboolean
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
1844 draw_tooltip_real(FinchBlist *ggblist)
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1845 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1846 PurpleBlistNode *node;
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1847 int x, y, top, width, w, h;
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
1848 GString *str = NULL;
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1849 GntTree *tree;
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1850 GntWidget *widget, *box, *tv;
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1851 char *title = NULL;
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1852
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1853 widget = ggblist->tree;
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1854 tree = GNT_TREE(widget);
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1855
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
1856 if (!gnt_widget_has_focus(ggblist->tree) ||
39644
54ed9db5e2ff Use GntWidget flag accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38969
diff changeset
1857 (ggblist->context && gnt_widget_get_visible(ggblist->context)))
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1858 return FALSE;
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
1859
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1860 if (ggblist->tooltip)
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1861 {
13931
a0a91e17f899 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13927
diff changeset
1862 /* XXX: Once we can properly redraw on expose events, this can be removed at the end
a0a91e17f899 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13927
diff changeset
1863 * to avoid the blinking*/
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1864 remove_tooltip(ggblist);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1865 }
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1866
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1867 node = gnt_tree_get_selection_data(tree);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1868 if (!node)
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1869 return FALSE;
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1870
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
1871 if (!ggblist->manager->create_tooltip(node, &str, &title))
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1872 return FALSE;
14489
99fb5724b4b1 [gaim-migrate @ 17137]
Richard Nelson <wabz@pidgin.im>
parents: 14469
diff changeset
1873
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1874 gnt_widget_get_position(widget, &x, &y);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1875 gnt_widget_get_size(widget, &width, NULL);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1876 top = gnt_tree_get_selection_visible_line(tree);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1877
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1878 x += width;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1879 y += top - 1;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1880
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1881 box = gnt_box_new(FALSE, FALSE);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1882 gnt_box_set_toplevel(GNT_BOX(box), TRUE);
39644
54ed9db5e2ff Use GntWidget flag accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38969
diff changeset
1883 gnt_widget_set_has_shadow(box, FALSE);
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1884 gnt_box_set_title(GNT_BOX(box), title);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1885
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1886 str = make_sure_text_fits(str);
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1887 gnt_util_get_text_bound(str->str, &w, &h);
18369
5a713a62b959 Use the new flags to make the tooltip look better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
1888 h = MAX(1, h);
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1889 tv = gnt_text_view_new();
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1890 gnt_widget_set_size(tv, w + 1, h);
18369
5a713a62b959 Use the new flags to make the tooltip look better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
1891 gnt_text_view_set_flag(GNT_TEXT_VIEW(tv), GNT_TEXT_VIEW_NO_SCROLL);
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1892 gnt_box_add_widget(GNT_BOX(box), tv);
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1893
22579
a84da60f3748 Move the tooltip to the left of the buddylist if there's not enough room to show it on the right.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22556
diff changeset
1894 if (x + w >= getmaxx(stdscr))
a84da60f3748 Move the tooltip to the left of the buddylist if there's not enough room to show it on the right.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22556
diff changeset
1895 x -= w + width + 2;
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1896 gnt_widget_set_position(box, x, y);
39644
54ed9db5e2ff Use GntWidget flag accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38969
diff changeset
1897 gnt_widget_set_take_focus(box, FALSE);
54ed9db5e2ff Use GntWidget flag accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38969
diff changeset
1898 gnt_widget_set_transient(box, TRUE);
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1899 gnt_widget_draw(box);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1900
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1901 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(tv), str->str, GNT_TEXT_FLAG_NORMAL);
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1902 gnt_text_view_scroll(GNT_TEXT_VIEW(tv), 0);
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1903
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1904 g_free(title);
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1905 g_string_free(str, TRUE);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1906 ggblist->tooltip = box;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1907 ggblist->tnode = node;
13931
a0a91e17f899 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13927
diff changeset
1908
a0a91e17f899 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13927
diff changeset
1909 gnt_widget_set_name(ggblist->tooltip, "tooltip");
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1910 return FALSE;
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1911 }
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1912
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1913 static void
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
1914 draw_tooltip(FinchBlist *ggblist)
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1915 {
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1916 /* When an account has signed off, it removes one buddy at a time.
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1917 * Drawing the tooltip after removing each buddy is expensive. On
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1918 * top of that, if the selected buddy belongs to the disconnected
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1919 * account, then retreiving the tooltip for that causes crash. So
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1920 * let's make sure we wait for all the buddies to be removed first.*/
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1921 int id = g_timeout_add(0, (GSourceFunc)draw_tooltip_real, ggblist);
14997
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1922 g_object_set_data_full(G_OBJECT(ggblist->window), "draw_tooltip_calback",
197138c20527 [gaim-migrate @ 17707]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14981
diff changeset
1923 GINT_TO_POINTER(id), (GDestroyNotify)g_source_remove);
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1924 }
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1925
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1926 static void
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
1927 selection_changed(GntWidget *widget, gpointer old, gpointer current, FinchBlist *ggblist)
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1928 {
16837
d3b8ba967fdc Fix context menu unusualness in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16828
diff changeset
1929 remove_peripherals(ggblist);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1930 draw_tooltip(ggblist);
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1931 }
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1932
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1933 static gboolean
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
1934 context_menu(GntWidget *widget, FinchBlist *ggblist)
14896
bcc0f594ed15 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14774
diff changeset
1935 {
bcc0f594ed15 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14774
diff changeset
1936 draw_context_menu(ggblist);
bcc0f594ed15 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14774
diff changeset
1937 return TRUE;
bcc0f594ed15 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14774
diff changeset
1938 }
bcc0f594ed15 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14774
diff changeset
1939
bcc0f594ed15 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14774
diff changeset
1940 static gboolean
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
1941 key_pressed(GntWidget *widget, const char *text, FinchBlist *ggblist)
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1942 {
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1943 if (text[0] == 27 && text[1] == 0) {
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1944 /* Escape was pressed */
21472
7c77d4a1921d Cancel the typeahead search when escape is pressed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21233
diff changeset
1945 if (gnt_tree_is_searching(GNT_TREE(ggblist->tree)))
7c77d4a1921d Cancel the typeahead search when escape is pressed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21233
diff changeset
1946 gnt_bindable_perform_action_named(GNT_BINDABLE(ggblist->tree), "end-search", NULL);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1947 remove_peripherals(ggblist);
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 31601
diff changeset
1948 } else if (purple_strequal(text, GNT_KEY_INS)) {
27174
c368e3f44e40 Remove a now-unnecessary binding for the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26871
diff changeset
1949 PurpleBlistNode *node = gnt_tree_get_selection_data(GNT_TREE(ggblist->tree));
c368e3f44e40 Remove a now-unnecessary binding for the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26871
diff changeset
1950 purple_blist_request_add_buddy(NULL, NULL,
c368e3f44e40 Remove a now-unnecessary binding for the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26871
diff changeset
1951 node && PURPLE_BLIST_NODE_IS_GROUP(node) ? purple_group_get_name(PURPLE_GROUP(node)) : NULL,
c368e3f44e40 Remove a now-unnecessary binding for the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26871
diff changeset
1952 NULL);
18787
a96af97dc501 New feature: successful compilation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18765
diff changeset
1953 } else if (!gnt_tree_is_searching(GNT_TREE(ggblist->tree))) {
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 31601
diff changeset
1954 if (purple_strequal(text, "t")) {
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
1955 finch_blist_toggle_tag_buddy(gnt_tree_get_selection_data(GNT_TREE(ggblist->tree)));
28631
d0b410479721 Add missing null sentinels, and help the compiler catch such errors.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28088
diff changeset
1956 gnt_bindable_perform_action_named(GNT_BINDABLE(ggblist->tree), "move-down", NULL);
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 31601
diff changeset
1957 } else if (purple_strequal(text, "a")) {
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
1958 finch_blist_place_tagged(gnt_tree_get_selection_data(GNT_TREE(ggblist->tree)));
15228
b3a992ff3e5f [gaim-migrate @ 17952]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15222
diff changeset
1959 } else
b3a992ff3e5f [gaim-migrate @ 17952]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15222
diff changeset
1960 return FALSE;
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1961 } else
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1962 return FALSE;
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13946
diff changeset
1963
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1964 return TRUE;
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1965 }
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1966
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1967 static void
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1968 update_node_display(PurpleBlistNode *node, FinchBlist *ggblist)
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1969 {
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
1970 GntTextFormatFlags flag = get_blist_node_flag(node);
16636
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1971 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), node, flag);
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1972 }
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1973
7f37767fa737 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16555
diff changeset
1974 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1975 update_buddy_display(PurpleBuddy *buddy, FinchBlist *ggblist)
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1976 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1977 PurpleContact *contact;
21808
2684d3deb32e Refactor the code a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21807
diff changeset
1978
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1979 contact = purple_buddy_get_contact(buddy);
14447
32f854416012 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14446
diff changeset
1980
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1981 gnt_tree_change_text(GNT_TREE(ggblist->tree), buddy, 0, get_display_name((PurpleBlistNode*)buddy));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1982 gnt_tree_change_text(GNT_TREE(ggblist->tree), contact, 0, get_display_name((PurpleBlistNode*)contact));
14447
32f854416012 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14446
diff changeset
1983
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
1984 blist_update_row_flags((PurpleBlistNode *)buddy);
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
1985 if (buddy == purple_contact_get_priority_buddy(contact))
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
1986 blist_update_row_flags((PurpleBlistNode *)contact);
15039
20a0d0117a47 [gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14997
diff changeset
1987
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1988 if (ggblist->tnode == (PurpleBlistNode*)buddy)
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1989 draw_tooltip(ggblist);
13993
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
1990 }
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
1991
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
1992 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1993 buddy_status_changed(PurpleBuddy *buddy, PurpleStatus *old, PurpleStatus *now, FinchBlist *ggblist)
13993
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
1994 {
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
1995 update_buddy_display(buddy, ggblist);
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
1996 }
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
1997
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
1998 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1999 buddy_idle_changed(PurpleBuddy *buddy, int old, int new, FinchBlist *ggblist)
13993
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
2000 {
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
2001 update_buddy_display(buddy, ggblist);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
2002 }
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
2003
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
2004 static void
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
2005 remove_peripherals(FinchBlist *ggblist)
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
2006 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
2007 if (ggblist->tooltip)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
2008 remove_tooltip(ggblist);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
2009 else if (ggblist->context)
14905
23f31a7acc73 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14896
diff changeset
2010 gnt_widget_destroy(ggblist->context);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
2011 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
2012
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
2013 static void
14908
0ccb73d4e584 [gaim-migrate @ 17615]
Richard Nelson <wabz@pidgin.im>
parents: 14905
diff changeset
2014 size_changed_cb(GntWidget *w, int wi, int h)
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
2015 {
14908
0ccb73d4e584 [gaim-migrate @ 17615]
Richard Nelson <wabz@pidgin.im>
parents: 14905
diff changeset
2016 int width, height;
0ccb73d4e584 [gaim-migrate @ 17615]
Richard Nelson <wabz@pidgin.im>
parents: 14905
diff changeset
2017 gnt_widget_get_size(w, &width, &height);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2018 purple_prefs_set_int(PREF_ROOT "/size/width", width);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2019 purple_prefs_set_int(PREF_ROOT "/size/height", height);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
2020 }
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
2021
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
2022 static void
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
2023 save_position_cb(GntWidget *w, int x, int y)
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
2024 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2025 purple_prefs_set_int(PREF_ROOT "/position/x", x);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2026 purple_prefs_set_int(PREF_ROOT "/position/y", y);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
2027 }
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
2028
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2029 static void
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2030 reset_blist_window(GntWidget *window, gpointer null)
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2031 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2032 PurpleBlistNode *node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2033 purple_signals_disconnect_by_handle(finch_blist_get_handle());
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
2034 FINCH_SET_DATA(purple_get_blist(), NULL);
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2035
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2036 node = purple_blist_get_root();
14461
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
2037 while (node) {
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2038 reset_blist_node_ui_data(node);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2039 node = purple_blist_node_next(node, TRUE);
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2040 }
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2041
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
2042 if (ggblist->typing)
25732
bdd010ff69fa *** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25708
diff changeset
2043 purple_timeout_remove(ggblist->typing);
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2044 remove_peripherals(ggblist);
15046
e17788e5403a [gaim-migrate @ 17763]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15039
diff changeset
2045 if (ggblist->tagged)
e17788e5403a [gaim-migrate @ 17763]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15039
diff changeset
2046 g_list_free(ggblist->tagged);
24450
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
2047
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
2048 if (ggblist->new_group_timeout)
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
2049 purple_timeout_remove(ggblist->new_group_timeout);
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
2050 if (ggblist->new_group)
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
2051 g_list_free(ggblist->new_group);
b41b4278c53a Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24198
diff changeset
2052
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2053 g_free(ggblist);
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2054 ggblist = NULL;
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2055 }
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2056
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2057 static void
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21855
diff changeset
2058 populate_buddylist(void)
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2059 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2060 PurpleBlistNode *node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2061 PurpleBuddyList *list;
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2062
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22303
diff changeset
2063 if (ggblist->manager->init)
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22303
diff changeset
2064 ggblist->manager->init();
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22303
diff changeset
2065
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 31601
diff changeset
2066 if (purple_strequal(purple_prefs_get_string(PREF_ROOT "/sort_type"), "text")) {
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2067 gnt_tree_set_compare_func(GNT_TREE(ggblist->tree),
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2068 (GCompareFunc)blist_node_compare_text);
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 31601
diff changeset
2069 } else if (purple_strequal(purple_prefs_get_string(PREF_ROOT "/sort_type"), "status")) {
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2070 gnt_tree_set_compare_func(GNT_TREE(ggblist->tree),
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2071 (GCompareFunc)blist_node_compare_status);
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 31601
diff changeset
2072 } else if (purple_strequal(purple_prefs_get_string(PREF_ROOT "/sort_type"), "log")) {
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2073 gnt_tree_set_compare_func(GNT_TREE(ggblist->tree),
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2074 (GCompareFunc)blist_node_compare_log);
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2075 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30060
diff changeset
2076
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2077 list = purple_get_blist();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2078 node = purple_blist_get_root();
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2079 while (node)
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2080 {
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2081 node_update(list, node);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2082 node = purple_blist_node_next(node, FALSE);
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2083 }
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2084 }
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2085
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2086 static void
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2087 destroy_status_list(GList *list)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2088 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2089 g_list_foreach(list, (GFunc)g_free, NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2090 g_list_free(list);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2091 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2092
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2093 static void
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21855
diff changeset
2094 populate_status_dropdown(void)
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2095 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2096 int i;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2097 GList *iter;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2098 GList *items = NULL;
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2099 StatusBoxItem *item = NULL;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2100
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2101 /* First the primitives */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2102 PurpleStatusPrimitive prims[] = {PURPLE_STATUS_AVAILABLE, PURPLE_STATUS_AWAY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2103 PURPLE_STATUS_INVISIBLE, PURPLE_STATUS_OFFLINE, PURPLE_STATUS_UNSET};
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2104
14555
0d6ef581e3ac [gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14539
diff changeset
2105 gnt_combo_box_remove_all(GNT_COMBO_BOX(ggblist->status));
0d6ef581e3ac [gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14539
diff changeset
2106
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2107 for (i = 0; prims[i] != PURPLE_STATUS_UNSET; i++)
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2108 {
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2109 item = g_new0(StatusBoxItem, 1);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2110 item->type = STATUS_PRIMITIVE;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2111 item->u.prim = prims[i];
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2112 items = g_list_prepend(items, item);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2113 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2114 purple_primitive_get_name_from_type(prims[i]));
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2115 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2116
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2117 /* Now the popular statuses */
18851
87634d109f57 Memory leak fix.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18850
diff changeset
2118 for (iter = purple_savedstatuses_get_popular(6); iter; iter = g_list_delete_link(iter, iter))
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2119 {
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2120 item = g_new0(StatusBoxItem, 1);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2121 item->type = STATUS_SAVED_POPULAR;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2122 item->u.saved = iter->data;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2123 items = g_list_prepend(items, item);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2124 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2125 purple_savedstatus_get_title(iter->data));
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2126 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2127
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
2128 /* New savedstatus */
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
2129 item = g_new0(StatusBoxItem, 1);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
2130 item->type = STATUS_SAVED_NEW;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
2131 items = g_list_prepend(items, item);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
2132 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
2133 _("New..."));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
2134
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2135 /* More savedstatuses */
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2136 item = g_new0(StatusBoxItem, 1);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2137 item->type = STATUS_SAVED_ALL;
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2138 items = g_list_prepend(items, item);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2139 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2140 _("Saved..."));
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2141
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2142 /* The keys for the combobox are created here, and never used
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2143 * anywhere else. So make sure the keys are freed when the widget
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2144 * is destroyed. */
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2145 g_object_set_data_full(G_OBJECT(ggblist->status), "list of statuses",
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2146 items, (GDestroyNotify)destroy_status_list);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2147 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2148
14461
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
2149 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2150 redraw_blist(const char *name, PurplePrefType type, gconstpointer val, gpointer data)
14461
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
2151 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2152 PurpleBlistNode *node, *sel;
22300
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2153 FinchBlistManager *manager;
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2154
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2155 if (ggblist == NULL)
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2156 return;
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2157
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2158 manager = finch_blist_manager_find(purple_prefs_get_string(PREF_ROOT "/grouping"));
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2159 if (manager == NULL)
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2160 manager = &default_manager;
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2161 if (ggblist->manager != manager) {
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22303
diff changeset
2162 if (ggblist->manager->uninit)
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22303
diff changeset
2163 ggblist->manager->uninit();
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22303
diff changeset
2164
22300
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2165 ggblist->manager = manager;
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2166 if (manager->can_add_node == NULL)
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2167 manager->can_add_node = default_can_add_node;
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2168 if (manager->find_parent == NULL)
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2169 manager->find_parent = default_find_parent;
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2170 if (manager->create_tooltip == NULL)
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2171 manager->create_tooltip = default_create_tooltip;
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2172 }
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2173
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2174 if (ggblist->window == NULL)
14461
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
2175 return;
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
2176
14531
4beceb49b547 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14489
diff changeset
2177 sel = gnt_tree_get_selection_data(GNT_TREE(ggblist->tree));
14461
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
2178 gnt_tree_remove_all(GNT_TREE(ggblist->tree));
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22303
diff changeset
2179
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2180 node = purple_blist_get_root();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2181 for (; node; node = purple_blist_node_next(node, TRUE))
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2182 reset_blist_node_ui_data(node);
14461
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
2183 populate_buddylist();
14531
4beceb49b547 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14489
diff changeset
2184 gnt_tree_set_selected(GNT_TREE(ggblist->tree), sel);
4beceb49b547 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14489
diff changeset
2185 draw_tooltip(ggblist);
14461
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
2186 }
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
2187
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
2188 void finch_blist_init()
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
2189 {
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21808
diff changeset
2190 color_available = gnt_style_get_color(NULL, "color-available");
21807
3d64cf4a1601 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21804
diff changeset
2191 if (!color_available)
3d64cf4a1601 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21804
diff changeset
2192 color_available = gnt_color_add_pair(COLOR_GREEN, -1);
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21808
diff changeset
2193 color_away = gnt_style_get_color(NULL, "color-away");
21807
3d64cf4a1601 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21804
diff changeset
2194 if (!color_away)
3d64cf4a1601 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21804
diff changeset
2195 color_away = gnt_color_add_pair(COLOR_BLUE, -1);
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21808
diff changeset
2196 color_idle = gnt_style_get_color(NULL, "color-idle");
21807
3d64cf4a1601 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21804
diff changeset
2197 if (!color_idle)
3d64cf4a1601 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21804
diff changeset
2198 color_idle = gnt_color_add_pair(COLOR_CYAN, -1);
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21808
diff changeset
2199 color_offline = gnt_style_get_color(NULL, "color-offline");
21807
3d64cf4a1601 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21804
diff changeset
2200 if (!color_offline)
3d64cf4a1601 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21804
diff changeset
2201 color_offline = gnt_color_add_pair(COLOR_RED, -1);
3d64cf4a1601 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21804
diff changeset
2202
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2203 purple_prefs_add_none(PREF_ROOT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2204 purple_prefs_add_none(PREF_ROOT "/size");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2205 purple_prefs_add_int(PREF_ROOT "/size/width", 20);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2206 purple_prefs_add_int(PREF_ROOT "/size/height", 17);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2207 purple_prefs_add_none(PREF_ROOT "/position");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2208 purple_prefs_add_int(PREF_ROOT "/position/x", 0);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2209 purple_prefs_add_int(PREF_ROOT "/position/y", 0);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2210 purple_prefs_add_bool(PREF_ROOT "/idletime", TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2211 purple_prefs_add_bool(PREF_ROOT "/showoffline", FALSE);
18625
775baeaa9f1a Plucked revision from im.pidgin.soc.2007.finchfeat to allow showing empty
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18614
diff changeset
2212 purple_prefs_add_bool(PREF_ROOT "/emptygroups", FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2213 purple_prefs_add_string(PREF_ROOT "/sort_type", "text");
22300
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2214 purple_prefs_add_string(PREF_ROOT "/grouping", "default");
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
2215
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2216 purple_prefs_connect_callback(finch_blist_get_handle(),
18625
775baeaa9f1a Plucked revision from im.pidgin.soc.2007.finchfeat to allow showing empty
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18614
diff changeset
2217 PREF_ROOT "/emptygroups", redraw_blist, NULL);
775baeaa9f1a Plucked revision from im.pidgin.soc.2007.finchfeat to allow showing empty
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18614
diff changeset
2218 purple_prefs_connect_callback(finch_blist_get_handle(),
14461
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
2219 PREF_ROOT "/showoffline", redraw_blist, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2220 purple_prefs_connect_callback(finch_blist_get_handle(),
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2221 PREF_ROOT "/sort_type", redraw_blist, NULL);
22300
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2222 purple_prefs_connect_callback(finch_blist_get_handle(),
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2223 PREF_ROOT "/grouping", redraw_blist, NULL);
14461
ed494fb68279 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14458
diff changeset
2224
30039
9cd7672bae4f Add an autojoin connection signal
Richard Laager <rlaager@pidgin.im>
parents: 29106
diff changeset
2225 purple_signal_connect_priority(purple_connections_get_handle(),
9cd7672bae4f Add an autojoin connection signal
Richard Laager <rlaager@pidgin.im>
parents: 29106
diff changeset
2226 "autojoin", purple_blist_get_handle(),
9cd7672bae4f Add an autojoin connection signal
Richard Laager <rlaager@pidgin.im>
parents: 29106
diff changeset
2227 G_CALLBACK(account_autojoin_cb), NULL,
9cd7672bae4f Add an autojoin connection signal
Richard Laager <rlaager@pidgin.im>
parents: 29106
diff changeset
2228 PURPLE_SIGNAL_PRIORITY_HIGHEST);
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
2229
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
2230 finch_blist_install_manager(&default_manager);
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
2231
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2232 return;
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2233 }
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
2234
14109
1af2b9d5ef3f [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14104
diff changeset
2235 static gboolean
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2236 remove_typing_cb(gpointer null)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2237 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2238 PurpleSavedStatus *current;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2239 const char *message, *newmessage;
24799
d166acdb3a43 Properly escape the status message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24504
diff changeset
2240 char *escnewmessage;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2241 PurpleStatusPrimitive prim, newprim;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2242 StatusBoxItem *item;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2243
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2244 current = purple_savedstatus_get_current();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2245 message = purple_savedstatus_get_message(current);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2246 prim = purple_savedstatus_get_type(current);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2247
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2248 newmessage = gnt_entry_get_text(GNT_ENTRY(ggblist->statustext));
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2249 item = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(ggblist->status));
24799
d166acdb3a43 Properly escape the status message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24504
diff changeset
2250 escnewmessage = newmessage ? g_markup_escape_text(newmessage, -1) : NULL;
16719
b54dafede4bd A rare crash fix for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16636
diff changeset
2251
b54dafede4bd A rare crash fix for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16636
diff changeset
2252 switch (item->type) {
b54dafede4bd A rare crash fix for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16636
diff changeset
2253 case STATUS_PRIMITIVE:
b54dafede4bd A rare crash fix for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16636
diff changeset
2254 newprim = item->u.prim;
b54dafede4bd A rare crash fix for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16636
diff changeset
2255 break;
b54dafede4bd A rare crash fix for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16636
diff changeset
2256 case STATUS_SAVED_POPULAR:
b54dafede4bd A rare crash fix for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16636
diff changeset
2257 newprim = purple_savedstatus_get_type(item->u.saved);
b54dafede4bd A rare crash fix for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16636
diff changeset
2258 break;
b54dafede4bd A rare crash fix for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16636
diff changeset
2259 default:
b54dafede4bd A rare crash fix for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16636
diff changeset
2260 goto end; /* 'New' or 'Saved' is selected, but this should never happen. */
b54dafede4bd A rare crash fix for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16636
diff changeset
2261 }
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2262
24799
d166acdb3a43 Properly escape the status message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24504
diff changeset
2263 if (newprim != prim || ((message && !escnewmessage) ||
d166acdb3a43 Properly escape the status message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24504
diff changeset
2264 (!message && escnewmessage) ||
d166acdb3a43 Properly escape the status message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24504
diff changeset
2265 (message && escnewmessage && g_utf8_collate(message, escnewmessage) != 0)))
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2266 {
24799
d166acdb3a43 Properly escape the status message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24504
diff changeset
2267 PurpleSavedStatus *status = purple_savedstatus_find_transient_by_type_and_message(newprim, escnewmessage);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2268 /* Holy Crap! That's a LAWNG function name */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2269 if (status == NULL)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2270 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2271 status = purple_savedstatus_new(NULL, newprim);
24799
d166acdb3a43 Properly escape the status message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24504
diff changeset
2272 purple_savedstatus_set_message(status, escnewmessage);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2273 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2274
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2275 purple_savedstatus_activate(status);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2276 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2277
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2278 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree);
16719
b54dafede4bd A rare crash fix for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16636
diff changeset
2279 end:
24799
d166acdb3a43 Properly escape the status message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24504
diff changeset
2280 g_free(escnewmessage);
14121
3d8804b82150 [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14109
diff changeset
2281 if (ggblist->typing)
25732
bdd010ff69fa *** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25708
diff changeset
2282 purple_timeout_remove(ggblist->typing);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2283 ggblist->typing = 0;
14109
1af2b9d5ef3f [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14104
diff changeset
2284 return FALSE;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2285 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2286
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2287 static void
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2288 status_selection_changed(GntComboBox *box, StatusBoxItem *old, StatusBoxItem *now, gpointer null)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2289 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2290 gnt_entry_set_text(GNT_ENTRY(ggblist->statustext), NULL);
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2291 if (now->type == STATUS_SAVED_POPULAR)
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2292 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2293 /* Set the status immediately */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2294 purple_savedstatus_activate(now->u.saved);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2295 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2296 else if (now->type == STATUS_PRIMITIVE)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2297 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2298 /* Move the focus to the entry box */
14121
3d8804b82150 [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14109
diff changeset
2299 /* XXX: Make sure the selected status can have a message */
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2300 gnt_box_move_focus(GNT_BOX(ggblist->window), 1);
25732
bdd010ff69fa *** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25708
diff changeset
2301 ggblist->typing = purple_timeout_add_seconds(TYPING_TIMEOUT_S, (GSourceFunc)remove_typing_cb, NULL);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2302 }
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2303 else if (now->type == STATUS_SAVED_ALL)
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2304 {
14193
fcfd3eea2160 [gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
2305 /* Restore the selection to reflect current status. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2306 savedstatus_changed(purple_savedstatus_get_current(), NULL);
14193
fcfd3eea2160 [gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
2307 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree);
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
2308 finch_savedstatus_show_all();
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
2309 }
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
2310 else if (now->type == STATUS_SAVED_NEW)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
2311 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2312 savedstatus_changed(purple_savedstatus_get_current(), NULL);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
2313 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree);
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
2314 finch_savedstatus_edit(NULL);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
2315 }
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2316 else
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2317 g_return_if_reached();
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2318 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2319
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2320 static gboolean
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2321 status_text_changed(GntEntry *entry, const char *text, gpointer null)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2322 {
14109
1af2b9d5ef3f [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14104
diff changeset
2323 if ((text[0] == 27 || (text[0] == '\t' && text[1] == '\0')) && ggblist->typing == 0)
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2324 return FALSE;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2325
14121
3d8804b82150 [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14109
diff changeset
2326 if (ggblist->typing)
25732
bdd010ff69fa *** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25708
diff changeset
2327 purple_timeout_remove(ggblist->typing);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2328 ggblist->typing = 0;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2329
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2330 if (text[0] == '\r' && text[1] == 0)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2331 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2332 /* Set the status only after you press 'Enter' */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2333 remove_typing_cb(NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2334 return TRUE;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2335 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2336
25732
bdd010ff69fa *** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25708
diff changeset
2337 ggblist->typing = purple_timeout_add_seconds(TYPING_TIMEOUT_S, (GSourceFunc)remove_typing_cb, NULL);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2338 return FALSE;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2339 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2340
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2341 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2342 savedstatus_changed(PurpleSavedStatus *now, PurpleSavedStatus *old)
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2343 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2344 GList *list;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2345 PurpleStatusPrimitive prim;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2346 const char *message;
15564
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2347 gboolean found = FALSE, saved = TRUE;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2348
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2349 if (!ggblist)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2350 return;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2351
14555
0d6ef581e3ac [gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14539
diff changeset
2352 /* Block the signals we don't want to emit */
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2353 g_signal_handlers_block_matched(ggblist->status, G_SIGNAL_MATCH_FUNC,
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2354 0, 0, NULL, status_selection_changed, NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2355 g_signal_handlers_block_matched(ggblist->statustext, G_SIGNAL_MATCH_FUNC,
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2356 0, 0, NULL, status_text_changed, NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2357
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2358 prim = purple_savedstatus_get_type(now);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2359 message = purple_savedstatus_get_message(now);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2360
14555
0d6ef581e3ac [gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14539
diff changeset
2361 /* Rebuild the status dropdown */
0d6ef581e3ac [gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14539
diff changeset
2362 populate_status_dropdown();
0d6ef581e3ac [gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14539
diff changeset
2363
15564
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2364 while (!found) {
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2365 list = g_object_get_data(G_OBJECT(ggblist->status), "list of statuses");
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2366 for (; list; list = list->next)
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2367 {
15564
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2368 StatusBoxItem *item = list->data;
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2369 if ((saved && item->type != STATUS_PRIMITIVE && item->u.saved == now) ||
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2370 (!saved && item->type == STATUS_PRIMITIVE && item->u.prim == prim))
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2371 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2372 char *mess = purple_unescape_html(message);
15564
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2373 gnt_combo_box_set_selected(GNT_COMBO_BOX(ggblist->status), item);
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2374 gnt_entry_set_text(GNT_ENTRY(ggblist->statustext), mess);
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2375 gnt_widget_draw(ggblist->status);
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2376 g_free(mess);
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2377 found = TRUE;
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2378 break;
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2379 }
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2380 }
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2381 if (!saved)
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2382 break;
15564
61befe113a13 Wonderful patch from Richard 'wabz' Nelson to fix the bug of lacking a pounce ui.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15377
diff changeset
2383 saved = FALSE;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2384 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2385
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2386 g_signal_handlers_unblock_matched(ggblist->status, G_SIGNAL_MATCH_FUNC,
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2387 0, 0, NULL, status_selection_changed, NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2388 g_signal_handlers_unblock_matched(ggblist->statustext, G_SIGNAL_MATCH_FUNC,
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2389 0, 0, NULL, status_text_changed, NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2390 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
2391
14167
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2392 static int
16555
9f8c3a97fb35 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16490
diff changeset
2393 blist_node_compare_position(PurpleBlistNode *n1, PurpleBlistNode *n2)
9f8c3a97fb35 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16490
diff changeset
2394 {
22334
6eec04817c0d Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22314
diff changeset
2395 while ((n1 = purple_blist_node_get_sibling_prev(n1)) != NULL)
16555
9f8c3a97fb35 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16490
diff changeset
2396 if (n1 == n2)
9f8c3a97fb35 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16490
diff changeset
2397 return 1;
9f8c3a97fb35 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16490
diff changeset
2398 return -1;
9f8c3a97fb35 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16490
diff changeset
2399 }
9f8c3a97fb35 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16490
diff changeset
2400
9f8c3a97fb35 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16490
diff changeset
2401 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2402 blist_node_compare_text(PurpleBlistNode *n1, PurpleBlistNode *n2)
14167
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2403 {
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2404 const char *s1, *s2;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2405 char *us1, *us2;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2406 int ret;
17333
dfb8dfb6ede0 It's valid for different types to be compared. In that case, use existing positions.
Richard Nelson <wabz@pidgin.im>
parents: 17295
diff changeset
2407
22334
6eec04817c0d Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22314
diff changeset
2408 if (purple_blist_node_get_type(n1) != purple_blist_node_get_type(n2))
17333
dfb8dfb6ede0 It's valid for different types to be compared. In that case, use existing positions.
Richard Nelson <wabz@pidgin.im>
parents: 17295
diff changeset
2409 return blist_node_compare_position(n1, n2);
dfb8dfb6ede0 It's valid for different types to be compared. In that case, use existing positions.
Richard Nelson <wabz@pidgin.im>
parents: 17295
diff changeset
2410
22334
6eec04817c0d Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22314
diff changeset
2411 switch (purple_blist_node_get_type(n1))
14167
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2412 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2413 case PURPLE_BLIST_CHAT_NODE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2414 s1 = purple_chat_get_name((PurpleChat*)n1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2415 s2 = purple_chat_get_name((PurpleChat*)n2);
14167
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2416 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2417 case PURPLE_BLIST_BUDDY_NODE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2418 return purple_presence_compare(purple_buddy_get_presence((PurpleBuddy*)n1),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2419 purple_buddy_get_presence((PurpleBuddy*)n2));
14447
32f854416012 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14446
diff changeset
2420 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2421 case PURPLE_BLIST_CONTACT_NODE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2422 s1 = purple_contact_get_alias((PurpleContact*)n1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2423 s2 = purple_contact_get_alias((PurpleContact*)n2);
14167
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2424 break;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2425 default:
16555
9f8c3a97fb35 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16490
diff changeset
2426 return blist_node_compare_position(n1, n2);
14167
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2427 }
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2428
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2429 us1 = g_utf8_strup(s1, -1);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2430 us2 = g_utf8_strup(s2, -1);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2431 ret = g_utf8_collate(us1, us2);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2432 g_free(us1);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2433 g_free(us2);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2434
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2435 return ret;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2436 }
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
2437
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2438 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2439 blist_node_compare_status(PurpleBlistNode *n1, PurpleBlistNode *n2)
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2440 {
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2441 int ret;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2442
22334
6eec04817c0d Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22314
diff changeset
2443 if (purple_blist_node_get_type(n1) != purple_blist_node_get_type(n2))
17333
dfb8dfb6ede0 It's valid for different types to be compared. In that case, use existing positions.
Richard Nelson <wabz@pidgin.im>
parents: 17295
diff changeset
2444 return blist_node_compare_position(n1, n2);
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2445
22334
6eec04817c0d Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22314
diff changeset
2446 switch (purple_blist_node_get_type(n1)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2447 case PURPLE_BLIST_CONTACT_NODE:
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24951
diff changeset
2448 n1 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n1)));
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24951
diff changeset
2449 n2 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n2)));
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2450 /* now compare the presence of the priority buddies */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2451 case PURPLE_BLIST_BUDDY_NODE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2452 ret = purple_presence_compare(purple_buddy_get_presence((PurpleBuddy*)n1),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2453 purple_buddy_get_presence((PurpleBuddy*)n2));
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2454 if (ret != 0)
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2455 return ret;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2456 break;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2457 default:
16555
9f8c3a97fb35 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16490
diff changeset
2458 return blist_node_compare_position(n1, n2);
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2459 break;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2460 }
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2461
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2462 /* Sort alphabetically if presence is not comparable */
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2463 ret = blist_node_compare_text(n1, n2);
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2464
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2465 return ret;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2466 }
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2467
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2468 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2469 get_contact_log_size(PurpleBlistNode *c)
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2470 {
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2471 int log = 0;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2472 PurpleBlistNode *node;
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2473
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
2474 for (node = purple_blist_node_get_first_child(c); node; node = purple_blist_node_get_sibling_next(node)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2475 PurpleBuddy *b = (PurpleBuddy*)node;
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
2476 log += purple_log_get_total_size(PURPLE_LOG_IM, purple_buddy_get_name(b),
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
2477 purple_buddy_get_account(b));
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2478 }
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2479
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2480 return log;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2481 }
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2482
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2483 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2484 blist_node_compare_log(PurpleBlistNode *n1, PurpleBlistNode *n2)
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2485 {
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2486 int ret;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2487 PurpleBuddy *b1, *b2;
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2488
22334
6eec04817c0d Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22314
diff changeset
2489 if (purple_blist_node_get_type(n1) != purple_blist_node_get_type(n2))
17333
dfb8dfb6ede0 It's valid for different types to be compared. In that case, use existing positions.
Richard Nelson <wabz@pidgin.im>
parents: 17295
diff changeset
2490 return blist_node_compare_position(n1, n2);
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2491
22334
6eec04817c0d Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22314
diff changeset
2492 switch (purple_blist_node_get_type(n1)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2493 case PURPLE_BLIST_BUDDY_NODE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2494 b1 = (PurpleBuddy*)n1;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2495 b2 = (PurpleBuddy*)n2;
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
2496 ret = purple_log_get_total_size(PURPLE_LOG_IM, purple_buddy_get_name(b2), purple_buddy_get_account(b2)) -
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
2497 purple_log_get_total_size(PURPLE_LOG_IM, purple_buddy_get_name(b1), purple_buddy_get_account(b1));
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2498 if (ret != 0)
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2499 return ret;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2500 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2501 case PURPLE_BLIST_CONTACT_NODE:
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2502 ret = get_contact_log_size(n2) - get_contact_log_size(n1);
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2503 if (ret != 0)
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2504 return ret;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2505 break;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2506 default:
16555
9f8c3a97fb35 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16490
diff changeset
2507 return blist_node_compare_position(n1, n2);
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2508 }
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2509 ret = blist_node_compare_text(n1, n2);
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2510 return ret;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2511 }
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2512
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2513 static void
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2514 plugin_action(GntMenuItem *item, gpointer data)
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2515 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2516 PurplePluginAction *action = data;
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2517 if (action && action->callback)
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2518 action->callback(action);
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2519 }
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2520
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2521 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2522 build_plugin_actions(GntMenuItem *item, PurplePlugin *plugin, gpointer context)
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2523 {
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2524 GntWidget *sub = gnt_menu_new(GNT_MENU_POPUP);
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2525 GList *actions;
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2526 GntMenuItem *menuitem;
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2527
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2528 gnt_menuitem_set_submenu(item, GNT_MENU(sub));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2529 for (actions = PURPLE_PLUGIN_ACTIONS(plugin, context); actions;
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2530 actions = g_list_delete_link(actions, actions)) {
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2531 if (actions->data) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2532 PurplePluginAction *action = actions->data;
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2533 action->plugin = plugin;
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2534 action->context = context;
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2535 menuitem = gnt_menuitem_new(action->label);
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2536 gnt_menu_add_item(GNT_MENU(sub), menuitem);
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2537
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2538 gnt_menuitem_set_callback(menuitem, plugin_action, action);
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2539 g_object_set_data_full(G_OBJECT(menuitem), "plugin_action",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2540 action, (GDestroyNotify)purple_plugin_action_free);
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2541 }
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2542 }
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2543 }
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2544
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2545 static gboolean
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2546 buddy_recent_signed_on_off(gpointer data)
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2547 {
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2548 PurpleBlistNode *node = data;
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
2549 FinchBlistNode *fnode = FINCH_GET_DATA(node);
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2550
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2551 purple_timeout_remove(fnode->signed_timer);
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2552 fnode->signed_timer = 0;
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2553
22303
cab9f3452d72 Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22300
diff changeset
2554 if (!ggblist->manager->can_add_node(node)) {
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2555 node_remove(purple_get_blist(), node);
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2556 } else {
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2557 update_node_display(node, ggblist);
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
2558 if (purple_blist_node_get_parent(node) && PURPLE_BLIST_NODE_IS_CONTACT(purple_blist_node_get_parent(node)))
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
2559 update_node_display(purple_blist_node_get_parent(node), ggblist);
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2560 }
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2561
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2562 return FALSE;
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2563 }
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2564
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2565 static gboolean
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2566 buddy_signed_on_off_cb(gpointer data)
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2567 {
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2568 PurpleBlistNode *node = data;
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
2569 FinchBlistNode *fnode = FINCH_GET_DATA(node);
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2570 if (!ggblist || !fnode)
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2571 return FALSE;
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2572
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2573 if (fnode->signed_timer)
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2574 purple_timeout_remove(fnode->signed_timer);
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2575 fnode->signed_timer = purple_timeout_add_seconds(6, (GSourceFunc)buddy_recent_signed_on_off, data);
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2576 update_node_display(node, ggblist);
22282
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
2577 if (purple_blist_node_get_parent(node) && PURPLE_BLIST_NODE_IS_CONTACT(purple_blist_node_get_parent(node)))
a964668bd7e4 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22140
diff changeset
2578 update_node_display(purple_blist_node_get_parent(node), ggblist);
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2579 return FALSE;
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2580 }
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2581
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2582 static void
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2583 buddy_signed_on_off(PurpleBuddy* buddy, gpointer null)
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2584 {
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2585 g_idle_add(buddy_signed_on_off_cb, buddy);
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2586 }
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
2587
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2588 static void
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21855
diff changeset
2589 reconstruct_plugins_menu(void)
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2590 {
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2591 GntWidget *sub;
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2592 GntMenuItem *plg;
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2593 GList *iter;
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2594
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2595 if (!ggblist)
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2596 return;
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2597
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2598 if (ggblist->plugins == NULL)
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2599 ggblist->plugins = gnt_menuitem_new(_("Plugins"));
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2600
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2601 plg = ggblist->plugins;
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2602 sub = gnt_menu_new(GNT_MENU_POPUP);
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2603 gnt_menuitem_set_submenu(plg, GNT_MENU(sub));
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2604
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2605 for (iter = purple_plugins_get_loaded(); iter; iter = iter->next) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2606 PurplePlugin *plugin = iter->data;
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2607 GntMenuItem *item;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2608 if (PURPLE_IS_PROTOCOL_PLUGIN(plugin))
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2609 continue;
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2610
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2611 if (!PURPLE_PLUGIN_HAS_ACTIONS(plugin))
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2612 continue;
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2613
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2614 item = gnt_menuitem_new(_(plugin->info->name));
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2615 gnt_menu_add_item(GNT_MENU(sub), item);
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2616 build_plugin_actions(item, plugin, NULL);
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2617 }
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2618 }
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2619
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2620 static void
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21855
diff changeset
2621 reconstruct_accounts_menu(void)
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2622 {
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2623 GntWidget *sub;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2624 GntMenuItem *acc, *item;
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2625 GList *iter;
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2626
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2627 if (!ggblist)
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2628 return;
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2629
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2630 if (ggblist->accounts == NULL)
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2631 ggblist->accounts = gnt_menuitem_new(_("Accounts"));
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2632
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2633 acc = ggblist->accounts;
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2634 sub = gnt_menu_new(GNT_MENU_POPUP);
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2635 gnt_menuitem_set_submenu(acc, GNT_MENU(sub));
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2636
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2637 for (iter = purple_accounts_get_all_active(); iter;
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2638 iter = g_list_delete_link(iter, iter)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2639 PurpleAccount *account = iter->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2640 PurpleConnection *gc = purple_account_get_connection(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2641 PurplePlugin *prpl;
22299
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2642
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2643 if (!gc || !PURPLE_CONNECTION_IS_CONNECTED(gc))
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2644 continue;
22336
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
2645 prpl = purple_connection_get_prpl(gc);
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2646
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2647 if (PURPLE_PLUGIN_HAS_ACTIONS(prpl)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2648 item = gnt_menuitem_new(purple_account_get_username(account));
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2649 gnt_menu_add_item(GNT_MENU(sub), item);
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2650 build_plugin_actions(item, prpl, gc);
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2651 }
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
2652 }
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2653 }
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2654
22299
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2655 static void
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2656 reconstruct_grouping_menu(void)
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2657 {
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2658 GList *iter;
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2659 GntWidget *subsub;
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2660
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2661 if (!ggblist || !ggblist->grouping)
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2662 return;
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2663
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2664 subsub = gnt_menu_new(GNT_MENU_POPUP);
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2665 gnt_menuitem_set_submenu(ggblist->grouping, GNT_MENU(subsub));
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2666
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2667 for (iter = managers; iter; iter = iter->next) {
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2668 char menuid[128];
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2669 FinchBlistManager *manager = iter->data;
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2670 GntMenuItem *item = gnt_menuitem_new(_(manager->name));
25708
7e97dbce8223 applied changes from aa7ce93329f5ccbe74640a92b6656ae402d8eea8
Ethan Blanton <elb@pidgin.im>
parents: 24799
diff changeset
2671 g_snprintf(menuid, sizeof(menuid), "grouping-%s", manager->id);
22299
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2672 gnt_menuitem_set_id(GNT_MENU_ITEM(item), menuid);
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2673 gnt_menu_add_item(GNT_MENU(subsub), item);
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2674 g_object_set_data_full(G_OBJECT(item), "grouping-id", g_strdup(manager->id), g_free);
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2675 gnt_menuitem_set_callback(item, menu_group_set_cb, NULL);
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2676 }
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2677 }
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
2678
19555
9d5c2c048760 I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19425
diff changeset
2679 static gboolean
9d5c2c048760 I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19425
diff changeset
2680 auto_join_chats(gpointer data)
15242
4f4b5d66f9af [gaim-migrate @ 17967]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15241
diff changeset
2681 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2682 PurpleBlistNode *node;
19555
9d5c2c048760 I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19425
diff changeset
2683 PurpleConnection *pc = data;
9d5c2c048760 I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19425
diff changeset
2684 PurpleAccount *account = purple_connection_get_account(pc);
15242
4f4b5d66f9af [gaim-migrate @ 17967]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15241
diff changeset
2685
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2686 for (node = purple_blist_get_root(); node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2687 node = purple_blist_node_next(node, FALSE)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2688 if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2689 PurpleChat *chat = (PurpleChat*)node;
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
2690 if (purple_chat_get_account(chat) == account &&
16828
0501ee8b8220 Fix this spectacularly braindead code. I must've been on the good stuff when I wrote this. Fixes #364.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16719
diff changeset
2691 purple_blist_node_get_bool(node, "gnt-autojoin"))
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
2692 serv_join_chat(purple_account_get_connection(account), purple_chat_get_components(chat));
15242
4f4b5d66f9af [gaim-migrate @ 17967]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15241
diff changeset
2693 }
4f4b5d66f9af [gaim-migrate @ 17967]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15241
diff changeset
2694 }
19555
9d5c2c048760 I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19425
diff changeset
2695 return FALSE;
9d5c2c048760 I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19425
diff changeset
2696 }
9d5c2c048760 I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19425
diff changeset
2697
30039
9cd7672bae4f Add an autojoin connection signal
Richard Laager <rlaager@pidgin.im>
parents: 29106
diff changeset
2698 static gboolean
9cd7672bae4f Add an autojoin connection signal
Richard Laager <rlaager@pidgin.im>
parents: 29106
diff changeset
2699 account_autojoin_cb(PurpleConnection *gc, gpointer null)
19555
9d5c2c048760 I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19425
diff changeset
2700 {
9d5c2c048760 I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19425
diff changeset
2701 g_idle_add(auto_join_chats, gc);
30039
9cd7672bae4f Add an autojoin connection signal
Richard Laager <rlaager@pidgin.im>
parents: 29106
diff changeset
2702 return TRUE;
15242
4f4b5d66f9af [gaim-migrate @ 17967]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15241
diff changeset
2703 }
18626
c2d9efa0ef1a Minor changes to remove a couple of lines of duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18625
diff changeset
2704
c2d9efa0ef1a Minor changes to remove a couple of lines of duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18625
diff changeset
2705 static void toggle_pref_cb(GntMenuItem *item, gpointer n)
18625
775baeaa9f1a Plucked revision from im.pidgin.soc.2007.finchfeat to allow showing empty
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18614
diff changeset
2706 {
18626
c2d9efa0ef1a Minor changes to remove a couple of lines of duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18625
diff changeset
2707 purple_prefs_set_bool(n, !purple_prefs_get_bool(n));
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2708 }
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2709
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2710 static void sort_blist_change_cb(GntMenuItem *item, gpointer n)
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2711 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2712 purple_prefs_set_string(PREF_ROOT "/sort_type", n);
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2713 }
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2714
22378
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2715 static void
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2716 block_select_cb(gpointer data, PurpleRequestFields *fields)
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2717 {
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2718 PurpleAccount *account = purple_request_fields_get_account(fields, "account");
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2719 const char *name = purple_request_fields_get_string(fields, "screenname");
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2720 if (account && name && *name != '\0') {
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2721 if (purple_request_fields_get_choice(fields, "block") == 1) {
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2722 purple_privacy_deny(account, name, FALSE, FALSE);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2723 } else {
22379
5e476bfc5d5e fix unblocking
Richard Nelson <wabz@pidgin.im>
parents: 22378
diff changeset
2724 purple_privacy_allow(account, name, FALSE, FALSE);
22378
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2725 }
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2726 }
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2727 }
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2728
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2729 static void
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2730 block_select(GntMenuItem *item, gpointer n)
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2731 {
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2732 PurpleRequestFields *fields;
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2733 PurpleRequestFieldGroup *group;
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2734 PurpleRequestField *field;
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2735
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2736 fields = purple_request_fields_new();
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2737
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2738 group = purple_request_field_group_new(NULL);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2739 purple_request_fields_add_group(fields, group);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2740
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2741 field = purple_request_field_string_new("screenname", _("Name"), NULL, FALSE);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2742 purple_request_field_set_type_hint(field, "screenname");
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2743 purple_request_field_set_required(field, TRUE);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2744 purple_request_field_group_add_field(group, field);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2745
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2746 field = purple_request_field_account_new("account", _("Account"), NULL);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2747 purple_request_field_set_type_hint(field, "account");
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2748 purple_request_field_set_visible(field,
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2749 (purple_connections_get_all() != NULL &&
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2750 purple_connections_get_all()->next != NULL));
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2751 purple_request_field_set_required(field, TRUE);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2752 purple_request_field_group_add_field(group, field);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2753
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2754 field = purple_request_field_choice_new("block", _("Block/Unblock"), 1);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2755 purple_request_field_choice_add(field, _("Block"));
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2756 purple_request_field_choice_add(field, _("Unblock"));
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2757 purple_request_field_group_add_field(group, field);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2758
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2759 purple_request_fields(purple_get_blist(), _("Block/Unblock"),
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2760 NULL,
22942
2bf494f8e2a4 Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <markdoliner@pidgin.im>
parents: 22935
diff changeset
2761 _("Please enter the username or alias of the person "
22378
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2762 "you would like to Block/Unblock."),
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2763 fields,
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2764 _("OK"), G_CALLBACK(block_select_cb),
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2765 _("Cancel"), NULL,
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2766 NULL, NULL, NULL,
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2767 NULL);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2768 }
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
2769
18607
9b0e8be076f0 Fix a bug where buddies from offline accounts were showing up.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18400
diff changeset
2770 /* send_im_select* -- Xerox */
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2771 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2772 send_im_select_cb(gpointer data, PurpleRequestFields *fields)
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2773 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2774 PurpleAccount *account;
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2775 const char *username;
22556
dc08052dcac2 Make sure an existing conversation selected from the 'Send IM' dialog is given the focus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22491
diff changeset
2776 PurpleConversation *conv;
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2777
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2778 account = purple_request_fields_get_account(fields, "account");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2779 username = purple_request_fields_get_string(fields, "screenname");
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2780
22556
dc08052dcac2 Make sure an existing conversation selected from the 'Send IM' dialog is given the focus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22491
diff changeset
2781 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, username);
dc08052dcac2 Make sure an existing conversation selected from the 'Send IM' dialog is given the focus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22491
diff changeset
2782 purple_conversation_present(conv);
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2783 }
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2784
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2785 static void
14981
2db0dea6fc9e [gaim-migrate @ 17691]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14951
diff changeset
2786 send_im_select(GntMenuItem *item, gpointer n)
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2787 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2788 PurpleRequestFields *fields;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2789 PurpleRequestFieldGroup *group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2790 PurpleRequestField *field;
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2791
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2792 fields = purple_request_fields_new();
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2793
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2794 group = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2795 purple_request_fields_add_group(fields, group);
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2796
20793
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2797 field = purple_request_field_string_new("screenname", _("Name"), NULL, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2798 purple_request_field_set_type_hint(field, "screenname");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2799 purple_request_field_set_required(field, TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2800 purple_request_field_group_add_field(group, field);
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2801
20793
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2802 field = purple_request_field_account_new("account", _("Account"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2803 purple_request_field_set_type_hint(field, "account");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2804 purple_request_field_set_visible(field,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2805 (purple_connections_get_all() != NULL &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2806 purple_connections_get_all()->next != NULL));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2807 purple_request_field_set_required(field, TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
2808 purple_request_field_group_add_field(group, field);
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2809
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
2810 purple_request_fields(purple_get_blist(), _("New Instant Message"),
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2811 NULL,
22942
2bf494f8e2a4 Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <markdoliner@pidgin.im>
parents: 22935
diff changeset
2812 _("Please enter the username or alias of the person "
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2813 "you would like to IM."),
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2814 fields,
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2815 _("OK"), G_CALLBACK(send_im_select_cb),
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2816 _("Cancel"), NULL,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
2817 NULL, NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
2818 NULL);
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2819 }
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2820
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2821 static void
20793
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2822 join_chat_select_cb(gpointer data, PurpleRequestFields *fields)
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2823 {
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2824 PurpleAccount *account;
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2825 const char *name;
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2826 PurpleConnection *gc;
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2827 PurpleChat *chat;
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2828 GHashTable *hash = NULL;
23422
22bc7c68bbc3 Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22988
diff changeset
2829 PurpleConversation *conv;
20793
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2830
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2831 account = purple_request_fields_get_account(fields, "account");
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2832 name = purple_request_fields_get_string(fields, "chat");
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2833
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2834 if (!purple_account_is_connected(account))
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2835 return;
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2836
22336
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
2837 gc = purple_account_get_connection(account);
23422
22bc7c68bbc3 Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22988
diff changeset
2838 /* Create a new conversation now. This will give focus to the new window.
22bc7c68bbc3 Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22988
diff changeset
2839 * But it's necessary to pretend that we left the chat, because otherwise
22bc7c68bbc3 Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22988
diff changeset
2840 * a new conversation window will pop up when we finally join the chat. */
22bc7c68bbc3 Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22988
diff changeset
2841 if (!(conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, name, account))) {
22bc7c68bbc3 Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22988
diff changeset
2842 conv = purple_conversation_new(PURPLE_CONV_TYPE_CHAT, account, name);
22bc7c68bbc3 Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22988
diff changeset
2843 purple_conv_chat_left(PURPLE_CONV_CHAT(conv));
22bc7c68bbc3 Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22988
diff changeset
2844 } else {
22bc7c68bbc3 Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22988
diff changeset
2845 purple_conversation_present(conv);
22bc7c68bbc3 Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22988
diff changeset
2846 }
22bc7c68bbc3 Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22988
diff changeset
2847
20793
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2848 chat = purple_blist_find_chat(account, name);
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2849 if (chat == NULL) {
22336
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
2850 PurplePluginProtocolInfo *info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
2851 if (info->chat_info_defaults != NULL)
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
2852 hash = info->chat_info_defaults(gc, name);
20793
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2853 } else {
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
2854 hash = purple_chat_get_components(chat);
20793
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2855 }
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2856 serv_join_chat(gc, hash);
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2857 if (chat == NULL && hash != NULL)
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2858 g_hash_table_destroy(hash);
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2859 }
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2860
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2861 static void
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2862 join_chat_select(GntMenuItem *item, gpointer n)
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2863 {
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2864 PurpleRequestFields *fields;
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2865 PurpleRequestFieldGroup *group;
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2866 PurpleRequestField *field;
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2867
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2868 fields = purple_request_fields_new();
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2869
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2870 group = purple_request_field_group_new(NULL);
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2871 purple_request_fields_add_group(fields, group);
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2872
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2873 field = purple_request_field_string_new("chat", _("Channel"), NULL, FALSE);
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2874 purple_request_field_set_required(field, TRUE);
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2875 purple_request_field_group_add_field(group, field);
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2876
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2877 field = purple_request_field_account_new("account", _("Account"), NULL);
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2878 purple_request_field_set_type_hint(field, "account");
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2879 purple_request_field_set_visible(field,
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2880 (purple_connections_get_all() != NULL &&
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2881 purple_connections_get_all()->next != NULL));
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2882 purple_request_field_set_required(field, TRUE);
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2883 purple_request_field_group_add_field(group, field);
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2884
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
2885 purple_request_fields(purple_get_blist(), _("Join a Chat"),
20793
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2886 NULL,
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2887 _("Please enter the name of the chat you want to join."),
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2888 fields,
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2889 _("Join"), G_CALLBACK(join_chat_select_cb),
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2890 _("Cancel"), NULL,
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
2891 NULL, NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
2892 NULL);
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2893 }
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
2894
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2895 static void
22988
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2896 view_log_select_cb(gpointer data, PurpleRequestFields *fields)
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2897 {
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2898 PurpleAccount *account;
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2899 const char *name;
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2900 PurpleBuddy *buddy;
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2901 PurpleContact *contact;
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2902
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2903 account = purple_request_fields_get_account(fields, "account");
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2904 name = purple_request_fields_get_string(fields, "screenname");
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2905
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2906 buddy = purple_find_buddy(account, name);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2907 if (buddy) {
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2908 contact = purple_buddy_get_contact(buddy);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2909 } else {
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2910 contact = NULL;
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2911 }
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2912
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2913 if (contact) {
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2914 finch_log_show_contact(contact);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2915 } else {
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2916 finch_log_show(PURPLE_LOG_IM, name, account);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2917 }
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2918 }
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2919
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2920 static void
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2921 view_log_cb(GntMenuItem *item, gpointer n)
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2922 {
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2923 PurpleRequestFields *fields;
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2924 PurpleRequestFieldGroup *group;
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2925 PurpleRequestField *field;
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2926
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2927 fields = purple_request_fields_new();
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2928
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2929 group = purple_request_field_group_new(NULL);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2930 purple_request_fields_add_group(fields, group);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2931
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2932 field = purple_request_field_string_new("screenname", _("Name"), NULL, FALSE);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2933 purple_request_field_set_type_hint(field, "screenname-all");
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2934 purple_request_field_set_required(field, TRUE);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2935 purple_request_field_group_add_field(group, field);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2936
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2937 field = purple_request_field_account_new("account", _("Account"), NULL);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2938 purple_request_field_set_type_hint(field, "account");
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2939 purple_request_field_set_visible(field,
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2940 (purple_accounts_get_all() != NULL &&
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2941 purple_accounts_get_all()->next != NULL));
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2942 purple_request_field_set_required(field, TRUE);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2943 purple_request_field_group_add_field(group, field);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2944 purple_request_field_account_set_show_all(field, TRUE);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2945
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2946 purple_request_fields(purple_get_blist(), _("View Log"),
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2947 NULL,
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2948 _("Please enter the username or alias of the person "
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2949 "whose log you would like to view."),
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2950 fields,
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2951 _("OK"), G_CALLBACK(view_log_select_cb),
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2952 _("Cancel"), NULL,
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2953 NULL, NULL, NULL,
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2954 NULL);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2955 }
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2956
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
2957 static void
23431
c50538da03fd Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23422
diff changeset
2958 view_all_logs_cb(GntMenuItem *item, gpointer n)
c50538da03fd Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23422
diff changeset
2959 {
c50538da03fd Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23422
diff changeset
2960 finch_log_show(PURPLE_LOG_IM, NULL, NULL);
c50538da03fd Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23422
diff changeset
2961 }
c50538da03fd Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23422
diff changeset
2962
c50538da03fd Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23422
diff changeset
2963 static void
20628
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2964 menu_add_buddy_cb(GntMenuItem *item, gpointer null)
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2965 {
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2966 purple_blist_request_add_buddy(NULL, NULL, NULL, NULL);
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2967 }
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2968
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2969 static void
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2970 menu_add_chat_cb(GntMenuItem *item, gpointer null)
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2971 {
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2972 purple_blist_request_add_chat(NULL, NULL, NULL, NULL);
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2973 }
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2974
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2975 static void
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2976 menu_add_group_cb(GntMenuItem *item, gpointer null)
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2977 {
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2978 purple_blist_request_add_group();
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2979 }
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2980
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2981 static void
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
2982 menu_group_set_cb(GntMenuItem *item, gpointer null)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
2983 {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
2984 const char *id = g_object_get_data(G_OBJECT(item), "grouping-id");
22300
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
2985 purple_prefs_set_string(PREF_ROOT "/grouping", id);
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
2986 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
2987
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
2988 static void
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21855
diff changeset
2989 create_menu(void)
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2990 {
20628
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
2991 GntWidget *menu, *sub, *subsub;
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2992 GntMenuItem *item;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2993 GntWindow *window;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2994
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2995 if (!ggblist)
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2996 return;
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2997
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
2998 window = GNT_WINDOW(ggblist->window);
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
2999 ggblist->menu = menu = gnt_menu_new(GNT_MENU_TOPLEVEL);
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3000 gnt_window_set_menu(window, GNT_MENU(menu));
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3001
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3002 item = gnt_menuitem_new(_("Options"));
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3003 gnt_menu_add_item(GNT_MENU(menu), item);
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3004
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3005 sub = gnt_menu_new(GNT_MENU_POPUP);
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3006 gnt_menuitem_set_submenu(item, GNT_MENU(sub));
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3007
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
3008 item = gnt_menuitem_new(_("Send IM..."));
20823
4f1e2463fc36 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20793
diff changeset
3009 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "send-im");
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
3010 gnt_menu_add_item(GNT_MENU(sub), item);
15991
1efb6bd8ba3f Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15931
diff changeset
3011 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), send_im_select, NULL);
14951
315052c54c13 [gaim-migrate @ 17661]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14945
diff changeset
3012
22378
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
3013 item = gnt_menuitem_new(_("Block/Unblock..."));
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
3014 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "block-unblock");
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
3015 gnt_menu_add_item(GNT_MENU(sub), item);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
3016 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), block_select, NULL);
921097afd92d Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22376
diff changeset
3017
20793
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
3018 item = gnt_menuitem_new(_("Join Chat..."));
20823
4f1e2463fc36 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20793
diff changeset
3019 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "join-chat");
20793
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
3020 gnt_menu_add_item(GNT_MENU(sub), item);
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
3021 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), join_chat_select, NULL);
2cf364db44c2 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20666
diff changeset
3022
22988
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
3023 item = gnt_menuitem_new(_("View Log..."));
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
3024 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "view-log");
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
3025 gnt_menu_add_item(GNT_MENU(sub), item);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
3026 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), view_log_cb, NULL);
d311acabca71 Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22986
diff changeset
3027
23431
c50538da03fd Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23422
diff changeset
3028 item = gnt_menuitem_new(_("View All Logs"));
c50538da03fd Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23422
diff changeset
3029 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "view-all-logs");
c50538da03fd Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23422
diff changeset
3030 gnt_menu_add_item(GNT_MENU(sub), item);
c50538da03fd Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23422
diff changeset
3031 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), view_all_logs_cb, NULL);
c50538da03fd Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23422
diff changeset
3032
20628
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3033 item = gnt_menuitem_new(_("Show"));
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3034 gnt_menu_add_item(GNT_MENU(sub), item);
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3035 subsub = gnt_menu_new(GNT_MENU_POPUP);
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3036 gnt_menuitem_set_submenu(item, GNT_MENU(subsub));
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3037
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3038 item = gnt_menuitem_check_new(_("Empty groups"));
20823
4f1e2463fc36 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20793
diff changeset
3039 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "show-empty-groups");
18625
775baeaa9f1a Plucked revision from im.pidgin.soc.2007.finchfeat to allow showing empty
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18614
diff changeset
3040 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item),
775baeaa9f1a Plucked revision from im.pidgin.soc.2007.finchfeat to allow showing empty
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18614
diff changeset
3041 purple_prefs_get_bool(PREF_ROOT "/emptygroups"));
20628
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3042 gnt_menu_add_item(GNT_MENU(subsub), item);
18626
c2d9efa0ef1a Minor changes to remove a couple of lines of duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18625
diff changeset
3043 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), toggle_pref_cb, PREF_ROOT "/emptygroups");
22299
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
3044
20628
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3045 item = gnt_menuitem_check_new(_("Offline buddies"));
20823
4f1e2463fc36 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20793
diff changeset
3046 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "show-offline-buddies");
15991
1efb6bd8ba3f Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15931
diff changeset
3047 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3048 purple_prefs_get_bool(PREF_ROOT "/showoffline"));
20628
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3049 gnt_menu_add_item(GNT_MENU(subsub), item);
18626
c2d9efa0ef1a Minor changes to remove a couple of lines of duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18625
diff changeset
3050 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), toggle_pref_cb, PREF_ROOT "/showoffline");
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3051
20628
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3052 item = gnt_menuitem_new(_("Sort"));
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3053 gnt_menu_add_item(GNT_MENU(sub), item);
20628
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3054 subsub = gnt_menu_new(GNT_MENU_POPUP);
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3055 gnt_menuitem_set_submenu(item, GNT_MENU(subsub));
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3056
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3057 item = gnt_menuitem_new(_("By Status"));
20823
4f1e2463fc36 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20793
diff changeset
3058 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "sort-status");
20628
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3059 gnt_menu_add_item(GNT_MENU(subsub), item);
15991
1efb6bd8ba3f Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15931
diff changeset
3060 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "status");
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3061
20684
4daaf3284863 propagate from branch 'im.pidgin.pidgin' (head b47c4fe72d16b3724a2e8fa0b9c783bc33863beb)
Gabriel Schulhof <nix@go-nix.ca>
parents: 20628 19997
diff changeset
3062 item = gnt_menuitem_new(_("Alphabetically"));
20823
4f1e2463fc36 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20793
diff changeset
3063 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "sort-alpha");
20684
4daaf3284863 propagate from branch 'im.pidgin.pidgin' (head b47c4fe72d16b3724a2e8fa0b9c783bc33863beb)
Gabriel Schulhof <nix@go-nix.ca>
parents: 20628 19997
diff changeset
3064 gnt_menu_add_item(GNT_MENU(subsub), item);
15991
1efb6bd8ba3f Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15931
diff changeset
3065 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "text");
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3066
20691
2b0a4e2175db Restoring gntblist.c:create_menu
Gabriel Schulhof <nix@go-nix.ca>
parents: 20690
diff changeset
3067 item = gnt_menuitem_new(_("By Log Size"));
20823
4f1e2463fc36 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20793
diff changeset
3068 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "sort-log");
20691
2b0a4e2175db Restoring gntblist.c:create_menu
Gabriel Schulhof <nix@go-nix.ca>
parents: 20690
diff changeset
3069 gnt_menu_add_item(GNT_MENU(subsub), item);
2b0a4e2175db Restoring gntblist.c:create_menu
Gabriel Schulhof <nix@go-nix.ca>
parents: 20690
diff changeset
3070 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "log");
2b0a4e2175db Restoring gntblist.c:create_menu
Gabriel Schulhof <nix@go-nix.ca>
parents: 20690
diff changeset
3071
2b0a4e2175db Restoring gntblist.c:create_menu
Gabriel Schulhof <nix@go-nix.ca>
parents: 20690
diff changeset
3072 item = gnt_menuitem_new(_("Add"));
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3073 gnt_menu_add_item(GNT_MENU(sub), item);
20691
2b0a4e2175db Restoring gntblist.c:create_menu
Gabriel Schulhof <nix@go-nix.ca>
parents: 20690
diff changeset
3074
20628
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3075 subsub = gnt_menu_new(GNT_MENU_POPUP);
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3076 gnt_menuitem_set_submenu(item, GNT_MENU(subsub));
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3077
22288
c6c6473ce2b9 Mark some strings for translation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22286
diff changeset
3078 item = gnt_menuitem_new(_("Buddy"));
20823
4f1e2463fc36 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20793
diff changeset
3079 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "add-buddy");
20628
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3080 gnt_menu_add_item(GNT_MENU(subsub), item);
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3081 gnt_menuitem_set_callback(item, menu_add_buddy_cb, NULL);
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3082
22288
c6c6473ce2b9 Mark some strings for translation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22286
diff changeset
3083 item = gnt_menuitem_new(_("Chat"));
20823
4f1e2463fc36 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20793
diff changeset
3084 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "add-chat");
20628
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3085 gnt_menu_add_item(GNT_MENU(subsub), item);
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3086 gnt_menuitem_set_callback(item, menu_add_chat_cb, NULL);
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3087
22288
c6c6473ce2b9 Mark some strings for translation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22286
diff changeset
3088 item = gnt_menuitem_new(_("Group"));
20823
4f1e2463fc36 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20793
diff changeset
3089 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "add-group");
20628
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3090 gnt_menu_add_item(GNT_MENU(subsub), item);
14b7b59970c3 Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
3091 gnt_menuitem_set_callback(item, menu_add_group_cb, NULL);
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3092
22299
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
3093 ggblist->grouping = item = gnt_menuitem_new(_("Grouping"));
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3094 gnt_menu_add_item(GNT_MENU(sub), item);
22299
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
3095 reconstruct_grouping_menu();
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3096
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
3097 reconstruct_accounts_menu();
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
3098 gnt_menu_add_item(GNT_MENU(menu), ggblist->accounts);
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
3099
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
3100 reconstruct_plugins_menu();
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
3101 gnt_menu_add_item(GNT_MENU(menu), ggblist->plugins);
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
3102 }
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
3103
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
3104 void finch_blist_show()
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
3105 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3106 blist_show(purple_get_blist());
14909
d72792eb7575 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14908
diff changeset
3107 }
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
3108
14909
d72792eb7575 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14908
diff changeset
3109 static void
16165
24ec117bc52c Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15991
diff changeset
3110 group_collapsed(GntWidget *widget, PurpleBlistNode *node, gboolean collapsed, gpointer null)
24ec117bc52c Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15991
diff changeset
3111 {
16166
e40815a97f8e ...only for groups
Richard Nelson <wabz@pidgin.im>
parents: 16165
diff changeset
3112 if (PURPLE_BLIST_NODE_IS_GROUP(node))
e40815a97f8e ...only for groups
Richard Nelson <wabz@pidgin.im>
parents: 16165
diff changeset
3113 purple_blist_node_set_bool(node, "collapsed", collapsed);
16165
24ec117bc52c Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15991
diff changeset
3114 }
24ec117bc52c Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15991
diff changeset
3115
24ec117bc52c Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15991
diff changeset
3116 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3117 blist_show(PurpleBuddyList *list)
14909
d72792eb7575 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14908
diff changeset
3118 {
d72792eb7575 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14908
diff changeset
3119 if (ggblist == NULL)
d72792eb7575 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14908
diff changeset
3120 new_list(list);
18400
549820f4725c If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18391
diff changeset
3121 else if (ggblist->window) {
549820f4725c If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18391
diff changeset
3122 gnt_window_present(ggblist->window);
14909
d72792eb7575 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14908
diff changeset
3123 return;
18400
549820f4725c If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18391
diff changeset
3124 }
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3125
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
3126 ggblist->window = gnt_vwindow_new(FALSE);
13931
a0a91e17f899 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13927
diff changeset
3127 gnt_widget_set_name(ggblist->window, "buddylist");
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
3128 gnt_box_set_toplevel(GNT_BOX(ggblist->window), TRUE);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3129 gnt_box_set_title(GNT_BOX(ggblist->window), _("Buddy List"));
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
3130 gnt_box_set_pad(GNT_BOX(ggblist->window), 0);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3131
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3132 ggblist->tree = gnt_tree_new();
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3133
39644
54ed9db5e2ff Use GntWidget flag accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38969
diff changeset
3134 gnt_widget_set_has_border(ggblist->tree, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3135 gnt_widget_set_size(ggblist->tree, purple_prefs_get_int(PREF_ROOT "/size/width"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3136 purple_prefs_get_int(PREF_ROOT "/size/height"));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3137 gnt_widget_set_position(ggblist->window, purple_prefs_get_int(PREF_ROOT "/position/x"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3138 purple_prefs_get_int(PREF_ROOT "/position/y"));
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3139
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3140 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->tree);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3141
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3142 ggblist->status = gnt_combo_box_new();
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3143 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->status);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3144 ggblist->statustext = gnt_entry_new(NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3145 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->statustext);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3146
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3147 gnt_widget_show(ggblist->window);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
3148
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3149 purple_signal_connect(purple_connections_get_handle(), "signed-on", finch_blist_get_handle(),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3150 PURPLE_CALLBACK(reconstruct_accounts_menu), NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3151 purple_signal_connect(purple_connections_get_handle(), "signed-off", finch_blist_get_handle(),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3152 PURPLE_CALLBACK(reconstruct_accounts_menu), NULL);
26871
d62964222795 Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <darkrain42@pidgin.im>
parents: 26852
diff changeset
3153 purple_signal_connect(purple_accounts_get_handle(), "account-actions-changed", finch_blist_get_handle(),
d62964222795 Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <darkrain42@pidgin.im>
parents: 26852
diff changeset
3154 PURPLE_CALLBACK(reconstruct_accounts_menu), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3155 purple_signal_connect(purple_blist_get_handle(), "buddy-status-changed", finch_blist_get_handle(),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3156 PURPLE_CALLBACK(buddy_status_changed), ggblist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3157 purple_signal_connect(purple_blist_get_handle(), "buddy-idle-changed", finch_blist_get_handle(),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3158 PURPLE_CALLBACK(buddy_idle_changed), ggblist);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3159
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3160 purple_signal_connect(purple_plugins_get_handle(), "plugin-load", finch_blist_get_handle(),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3161 PURPLE_CALLBACK(reconstruct_plugins_menu), NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3162 purple_signal_connect(purple_plugins_get_handle(), "plugin-unload", finch_blist_get_handle(),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3163 PURPLE_CALLBACK(reconstruct_plugins_menu), NULL);
14945
4cd7dbf2933b [gaim-migrate @ 17652]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14912
diff changeset
3164
22110
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
3165 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", finch_blist_get_handle(),
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
3166 PURPLE_CALLBACK(buddy_signed_on_off), ggblist);
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
3167 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", finch_blist_get_handle(),
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
3168 PURPLE_CALLBACK(buddy_signed_on_off), ggblist);
d0bd9cd65d03 Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
3169
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
3170 #if 0
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
3171 /* These I plan to use to indicate unread-messages etc. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3172 purple_signal_connect(purple_conversations_get_handle(), "received-im-msg", finch_blist_get_handle(),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3173 PURPLE_CALLBACK(received_im_msg), list);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3174 purple_signal_connect(purple_conversations_get_handle(), "sent-im-msg", finch_blist_get_handle(),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3175 PURPLE_CALLBACK(sent_im_msg), NULL);
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
3176
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3177 purple_signal_connect(purple_conversations_get_handle(), "received-chat-msg", finch_blist_get_handle(),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3178 PURPLE_CALLBACK(received_chat_msg), list);
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
3179 #endif
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3180
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
3181 g_signal_connect(G_OBJECT(ggblist->tree), "selection_changed", G_CALLBACK(selection_changed), ggblist);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
3182 g_signal_connect(G_OBJECT(ggblist->tree), "key_pressed", G_CALLBACK(key_pressed), ggblist);
14896
bcc0f594ed15 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14774
diff changeset
3183 g_signal_connect(G_OBJECT(ggblist->tree), "context-menu", G_CALLBACK(context_menu), ggblist);
16165
24ec117bc52c Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15991
diff changeset
3184 g_signal_connect(G_OBJECT(ggblist->tree), "collapse-toggled", G_CALLBACK(group_collapsed), NULL);
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
3185 g_signal_connect(G_OBJECT(ggblist->tree), "activate", G_CALLBACK(selection_activate), ggblist);
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3186 g_signal_connect_data(G_OBJECT(ggblist->tree), "gained-focus", G_CALLBACK(draw_tooltip),
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3187 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
3188 g_signal_connect_data(G_OBJECT(ggblist->tree), "lost-focus", G_CALLBACK(remove_peripherals),
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3189 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
16779
006f50afb7a6 Let windows know when the workspace they are in is being hidden/shown
Richard Nelson <wabz@pidgin.im>
parents: 16719
diff changeset
3190 g_signal_connect_data(G_OBJECT(ggblist->window), "workspace-hidden", G_CALLBACK(remove_peripherals),
006f50afb7a6 Let windows know when the workspace they are in is being hidden/shown
Richard Nelson <wabz@pidgin.im>
parents: 16719
diff changeset
3191 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
3192 g_signal_connect(G_OBJECT(ggblist->tree), "size_changed", G_CALLBACK(size_changed_cb), NULL);
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
3193 g_signal_connect(G_OBJECT(ggblist->window), "position_set", G_CALLBACK(save_position_cb), NULL);
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
3194 g_signal_connect(G_OBJECT(ggblist->window), "destroy", G_CALLBACK(reset_blist_window), NULL);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
3195
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3196 /* Status signals */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3197 purple_signal_connect(purple_savedstatuses_get_handle(), "savedstatus-changed", finch_blist_get_handle(),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3198 PURPLE_CALLBACK(savedstatus_changed), NULL);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3199 g_signal_connect(G_OBJECT(ggblist->status), "selection_changed",
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3200 G_CALLBACK(status_selection_changed), NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3201 g_signal_connect(G_OBJECT(ggblist->statustext), "key_pressed",
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3202 G_CALLBACK(status_text_changed), NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3203
14774
317db0f851e0 [gaim-migrate @ 17466]
Richard Nelson <wabz@pidgin.im>
parents: 14770
diff changeset
3204 create_menu();
14678
97f57691faab [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
3205
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
3206 populate_buddylist();
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
3207
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
3208 savedstatus_changed(purple_savedstatus_get_current(), NULL);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3209 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3210
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
3211 void finch_blist_uninit()
13969
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
3212 {
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
3213 }
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
3214
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
3215 gboolean finch_blist_get_position(int *x, int *y)
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3216 {
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
3217 if (!ggblist || !ggblist->window)
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
3218 return FALSE;
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3219 gnt_widget_get_position(ggblist->window, x, y);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
3220 return TRUE;
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3221 }
13969
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
3222
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
3223 void finch_blist_set_position(int x, int y)
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3224 {
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3225 gnt_widget_set_position(ggblist->window, x, y);
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3226 }
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3227
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
3228 gboolean finch_blist_get_size(int *width, int *height)
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3229 {
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
3230 if (!ggblist || !ggblist->window)
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
3231 return FALSE;
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3232 gnt_widget_get_size(ggblist->window, width, height);
14413
bd998fe17d82 [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14280
diff changeset
3233 return TRUE;
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3234 }
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3235
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15825
diff changeset
3236 void finch_blist_set_size(int width, int height)
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3237 {
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3238 gnt_widget_set_size(ggblist->window, width, height);
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
3239 }
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3240
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3241 void finch_blist_install_manager(const FinchBlistManager *manager)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3242 {
22299
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
3243 if (!g_list_find(managers, manager)) {
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3244 managers = g_list_append(managers, (gpointer)manager);
22299
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
3245 reconstruct_grouping_menu();
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 31601
diff changeset
3246 if (purple_strequal(manager->id, purple_prefs_get_string(PREF_ROOT "/grouping")))
22300
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
3247 purple_prefs_trigger_callback(PREF_ROOT "/grouping");
22299
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
3248 }
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3249 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3250
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3251 void finch_blist_uninstall_manager(const FinchBlistManager *manager)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3252 {
22299
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
3253 if (g_list_find(managers, manager)) {
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
3254 managers = g_list_remove(managers, manager);
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
3255 reconstruct_grouping_menu();
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 31601
diff changeset
3256 if (purple_strequal(manager->id, purple_prefs_get_string(PREF_ROOT "/grouping")))
22300
42f7d98ffeeb Remember the selected grouping option.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22299
diff changeset
3257 purple_prefs_trigger_callback(PREF_ROOT "/grouping");
22299
e2e241477323 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22288
diff changeset
3258 }
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3259 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3260
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3261 FinchBlistManager * finch_blist_manager_find(const char *id)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3262 {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3263 GList *iter = managers;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3264 if (!id)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3265 return NULL;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3266
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3267 for (; iter; iter = iter->next) {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3268 FinchBlistManager *m = iter->data;
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 31601
diff changeset
3269 if (purple_strequal(id, m->id))
22285
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3270 return m;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3271 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3272 return NULL;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3273 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3274
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3275 GntTree * finch_blist_get_tree(void)
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3276 {
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3277 return ggblist ? GNT_TREE(ggblist->tree) : NULL;
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3278 }
203b8d12f1ca Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22282
diff changeset
3279

mercurial