annotate console/gntblist.c @ 14847:d478f3853671

[gaim-migrate @ 17616] Fix bug #1582629. The terminal should now always go back to normal state after quitting from gaim-text. committer: Tailor Script <tailor@pidgin.im>
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sun, 29 Oct 2006 03:43:15 +0000
parents c7651586e27b
children 6d9db29f4c10
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14558
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
1 /**
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
2 * @file gntblist.c GNT BuddyList API
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
3 * @ingroup gntui
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
4 *
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
5 * gaim
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
6 *
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
9 * source distribution.
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
10 *
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
11 * This program is free software; you can redistribute it and/or modify
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
12 * it under the terms of the GNU General Public License as published by
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
14 * (at your option) any later version.
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
15 *
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
16 * This program is distributed in the hope that it will be useful,
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
19 * GNU General Public License for more details.
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
20 *
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
21 * You should have received a copy of the GNU General Public License
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
22 * along with this program; if not, write to the Free Software
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
81650a27f253 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14493
diff changeset
24 */
13877
765bbdf29d04 [gaim-migrate @ 16354]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13869
diff changeset
25 #include <account.h>
765bbdf29d04 [gaim-migrate @ 16354]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13869
diff changeset
26 #include <blist.h>
14062
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
27 #include <notify.h>
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
28 #include <request.h>
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
29 #include <savedstatuses.h>
13877
765bbdf29d04 [gaim-migrate @ 16354]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13869
diff changeset
30 #include <server.h>
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
31 #include <signal.h>
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
32 #include <status.h>
13877
765bbdf29d04 [gaim-migrate @ 16354]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13869
diff changeset
33 #include <util.h>
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
34 #include "debug.h"
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
35
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
36 #include "gntgaim.h"
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
37 #include "gntbox.h"
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
38 #include "gntcombobox.h"
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
39 #include "gntentry.h"
13896
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
40 #include "gntlabel.h"
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
41 #include "gntline.h"
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
42 #include "gntmenu.h"
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
43 #include "gntmenuitem.h"
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
44 #include "gntmenuitemcheck.h"
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
45 #include "gnttree.h"
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
46 #include "gntwindow.h"
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
47
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
48 #include "gntblist.h"
14388
f4af666fafe3 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14385
diff changeset
49 #include "gntconv.h"
14126
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
50 #include "gntstatus.h"
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
51 #include <string.h>
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
52
14010
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
53 #define PREF_ROOT "/gaim/gnt/blist"
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
54 #define TYPING_TIMEOUT 4000
14010
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
55
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
56 typedef struct
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
57 {
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
58 GntWidget *window;
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
59 GntWidget *tree;
13857
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
60
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
61 GntWidget *tooltip;
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
62 GaimBlistNode *tnode; /* Who is the tooltip being displayed for? */
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
63 GaimBuddy *tagged;
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
64
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
65 GntWidget *context;
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
66 GaimBlistNode *cnode;
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
67
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
68 /* XXX: I am KISSing */
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
69 GntWidget *status; /* Dropdown with the statuses */
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
70 GntWidget *statustext; /* Status message */
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
71 int typing;
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
72 } GGBlist;
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
73
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
74 typedef enum
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
75 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
76 STATUS_PRIMITIVE = 0,
14126
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
77 STATUS_SAVED_POPULAR,
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
78 STATUS_SAVED_ALL,
14132
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
79 STATUS_SAVED_NEW
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
80 } StatusType;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
81
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
82 typedef struct
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
83 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
84 StatusType type;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
85 union
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
86 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
87 GaimStatusPrimitive prim;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
88 GaimSavedStatus *saved;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
89 } u;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
90 } StatusBoxItem;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
91
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
92 GGBlist *ggblist;
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
93
13857
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
94 static void add_buddy(GaimBuddy *buddy, GGBlist *ggblist);
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
95 static void add_contact(GaimContact *contact, GGBlist *ggblist);
13857
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
96 static void add_group(GaimGroup *group, GGBlist *ggblist);
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
97 static void add_chat(GaimChat *chat, GGBlist *ggblist);
13865
d78ab363e02d [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13864
diff changeset
98 static void add_node(GaimBlistNode *node, GGBlist *ggblist);
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
99 static void draw_tooltip(GGBlist *ggblist);
14047
c5bfede33622 [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14042
diff changeset
100 static gboolean remove_typing_cb(gpointer null);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
101 static void remove_peripherals(GGBlist *ggblist);
14018
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
102 static const char * get_display_name(GaimBlistNode *node);
14131
db2311999862 [gaim-migrate @ 16773]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14126
diff changeset
103 static void savedstatus_changed(GaimSavedStatus *now, GaimSavedStatus *old);
14847
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
104 static void blist_show(GaimBuddyList *list);
13857
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
105
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
106 /* Sort functions */
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
107 static int blist_node_compare_text(GaimBlistNode *n1, GaimBlistNode *n2);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
108 static int blist_node_compare_status(GaimBlistNode *n1, GaimBlistNode *n2);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
109 static int blist_node_compare_log(GaimBlistNode *n1, GaimBlistNode *n2);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
110
14407
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
111 static gboolean
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
112 is_contact_online(GaimContact *contact)
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
113 {
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
114 GaimBlistNode *node;
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
115 for (node = ((GaimBlistNode*)contact)->child; node; node = node->next) {
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
116 if (GAIM_BUDDY_IS_ONLINE((GaimBuddy*)node))
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
117 return TRUE;
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
118 }
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
119 return FALSE;
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
120 }
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
121
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
122 static gboolean
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
123 is_group_online(GaimGroup *group)
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
124 {
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
125 GaimBlistNode *node;
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
126 for (node = ((GaimBlistNode*)group)->child; node; node = node->next) {
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
127 if (GAIM_BLIST_NODE_IS_CHAT(node))
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
128 return TRUE;
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
129 else if (is_contact_online((GaimContact*)node))
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
130 return TRUE;
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
131 }
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
132 return FALSE;
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
133 }
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
134
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
135 static void
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
136 new_node(GaimBlistNode *node)
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
137 {
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
138 }
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
139
13865
d78ab363e02d [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13864
diff changeset
140 static void add_node(GaimBlistNode *node, GGBlist *ggblist)
d78ab363e02d [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13864
diff changeset
141 {
d78ab363e02d [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13864
diff changeset
142 if (GAIM_BLIST_NODE_IS_BUDDY(node))
d78ab363e02d [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13864
diff changeset
143 add_buddy((GaimBuddy*)node, ggblist);
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
144 else if (GAIM_BLIST_NODE_IS_CONTACT(node))
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
145 add_contact((GaimContact*)node, ggblist);
13865
d78ab363e02d [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13864
diff changeset
146 else if (GAIM_BLIST_NODE_IS_GROUP(node))
d78ab363e02d [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13864
diff changeset
147 add_group((GaimGroup*)node, ggblist);
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
148 else if (GAIM_BLIST_NODE_IS_CHAT(node))
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
149 add_chat((GaimChat *)node, ggblist);
13865
d78ab363e02d [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13864
diff changeset
150 draw_tooltip(ggblist);
d78ab363e02d [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13864
diff changeset
151 }
d78ab363e02d [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13864
diff changeset
152
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
153 static void
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
154 remove_tooltip(GGBlist *ggblist)
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
155 {
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
156 gnt_widget_destroy(ggblist->tooltip);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
157 ggblist->tooltip = NULL;
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
158 ggblist->tnode = NULL;
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
159 }
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
160
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
161 static void
13857
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
162 node_remove(GaimBuddyList *list, GaimBlistNode *node)
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
163 {
13857
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
164 GGBlist *ggblist = list->ui_data;
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
165
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
166 if (ggblist == NULL || node->ui_data == NULL)
13857
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
167 return;
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
168
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
169 gnt_tree_remove(GNT_TREE(ggblist->tree), node);
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
170 node->ui_data = NULL;
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
171
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
172 if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
173 GaimContact *contact = (GaimContact*)node->parent;
14407
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
174 if ((!gaim_prefs_get_bool(PREF_ROOT "/showoffline") && !is_contact_online(contact)) ||
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
175 contact->currentsize < 1)
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
176 node_remove(list, (GaimBlistNode*)contact);
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
177 } else if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
178 GaimGroup *group = (GaimGroup*)node->parent;
14407
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
179 if ((!gaim_prefs_get_bool(PREF_ROOT "/showoffline") && !is_group_online(group)) ||
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
180 group->currentsize < 1)
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
181 node_remove(list, node->parent);
13857
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
182 }
13865
d78ab363e02d [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13864
diff changeset
183 draw_tooltip(ggblist);
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
184 }
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
185
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
186 static void
13857
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
187 node_update(GaimBuddyList *list, GaimBlistNode *node)
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
188 {
14393
81932c1ec6cf [gaim-migrate @ 17101]
Ethan Blanton <elb@pidgin.im>
parents: 14388
diff changeset
189 /* It really looks like this should never happen ... but it does.
81932c1ec6cf [gaim-migrate @ 17101]
Ethan Blanton <elb@pidgin.im>
parents: 14388
diff changeset
190 This will at least emit a warning to the log when it
81932c1ec6cf [gaim-migrate @ 17101]
Ethan Blanton <elb@pidgin.im>
parents: 14388
diff changeset
191 happens, so maybe someone will figure it out. */
81932c1ec6cf [gaim-migrate @ 17101]
Ethan Blanton <elb@pidgin.im>
parents: 14388
diff changeset
192 g_return_if_fail(node != NULL);
81932c1ec6cf [gaim-migrate @ 17101]
Ethan Blanton <elb@pidgin.im>
parents: 14388
diff changeset
193
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
194 if (list->ui_data == NULL)
14396
9e9699792bb9 [gaim-migrate @ 17104]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14393
diff changeset
195 return; /* XXX: this is probably the place to auto-join chats */
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
196
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
197 if (node->ui_data != NULL) {
14018
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
198 gnt_tree_change_text(GNT_TREE(ggblist->tree), node,
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
199 0, get_display_name(node));
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
200 gnt_tree_sort_row(GNT_TREE(ggblist->tree), node);
14018
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
201 }
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
202
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
203 if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
13857
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
204 GaimBuddy *buddy = (GaimBuddy*)node;
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
205 if (gaim_account_is_connected(buddy->account) &&
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
206 (GAIM_BUDDY_IS_ONLINE(buddy) || gaim_prefs_get_bool(PREF_ROOT "/showoffline")))
13865
d78ab363e02d [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13864
diff changeset
207 add_node((GaimBlistNode*)buddy, list->ui_data);
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
208 else
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
209 node_remove(gaim_get_blist(), node);
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
210
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
211 node_update(list, node->parent);
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
212 } else if (GAIM_BLIST_NODE_IS_CHAT(node)) {
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
213 add_chat((GaimChat *)node, list->ui_data);
14407
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
214 } else if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
215 GaimContact *contact = (GaimContact*)node;
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
216 if ((!gaim_prefs_get_bool(PREF_ROOT "/showoffline") && !is_contact_online(contact)) ||
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
217 contact->currentsize < 1)
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
218 node_remove(gaim_get_blist(), node);
14708
ef94c6b853ab [gaim-migrate @ 17462]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14694
diff changeset
219 else
ef94c6b853ab [gaim-migrate @ 17462]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14694
diff changeset
220 add_node(node, list->ui_data);
14407
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
221 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
222 GaimGroup *group = (GaimGroup*)node;
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
223 if ((!gaim_prefs_get_bool(PREF_ROOT "/showoffline") && !is_group_online(group)) ||
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
224 group->currentsize < 1)
2a5ec27c3f0c [gaim-migrate @ 17115]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14405
diff changeset
225 node_remove(list, node);
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
226 }
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
227 }
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
228
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
229 static void
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
230 new_list(GaimBuddyList *list)
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
231 {
14847
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
232 if (ggblist)
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
233 return;
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
234
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
235 ggblist = g_new0(GGBlist, 1);
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
236 list->ui_data = ggblist;
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
237 }
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
238
14062
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
239 static void
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
240 add_buddy_cb(void *data, GaimRequestFields *allfields)
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
241 {
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
242 const char *username = gaim_request_fields_get_string(allfields, "screenname");
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
243 const char *alias = gaim_request_fields_get_string(allfields, "alias");
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
244 const char *group = gaim_request_fields_get_string(allfields, "group");
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
245 GaimAccount *account = gaim_request_fields_get_account(allfields, "account");
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
246 const char *error = NULL;
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
247 GaimGroup *grp;
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
248 GaimBuddy *buddy;
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
249
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
250 if (!username)
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
251 error = _("You must provide a screename for the buddy.");
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
252 else if (!group)
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
253 error = _("You must provide a group.");
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
254 else if (!account)
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
255 error = _("You must select an account.");
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
256
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
257 if (error)
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
258 {
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
259 gaim_notify_error(NULL, _("Error"), _("Error adding buddy"), error);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
260 return;
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
261 }
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
262
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
263 grp = gaim_find_group(group);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
264 if (!grp)
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
265 {
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
266 grp = gaim_group_new(group);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
267 gaim_blist_add_group(grp, NULL);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
268 }
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
269
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
270 buddy = gaim_buddy_new(account, username, alias);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
271 gaim_blist_add_buddy(buddy, NULL, grp, NULL);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
272 gaim_account_add_buddy(account, buddy);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
273 }
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
274
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
275 static void
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
276 gg_request_add_buddy(GaimAccount *account, const char *username, const char *grp, const char *alias)
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
277 {
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
278 GaimRequestFields *fields = gaim_request_fields_new();
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
279 GaimRequestFieldGroup *group = gaim_request_field_group_new(NULL);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
280 GaimRequestField *field;
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
281
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
282 gaim_request_fields_add_group(fields, group);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
283
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
284 field = gaim_request_field_string_new("screenname", _("Screen Name"), username, FALSE);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
285 gaim_request_field_group_add_field(group, field);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
286
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
287 field = gaim_request_field_string_new("alias", _("Alias"), alias, FALSE);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
288 gaim_request_field_group_add_field(group, field);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
289
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
290 field = gaim_request_field_string_new("group", _("Group"), grp, FALSE);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
291 gaim_request_field_group_add_field(group, field);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
292
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
293 field = gaim_request_field_account_new("account", _("Account"), NULL);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
294 gaim_request_field_account_set_show_all(field, FALSE);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
295 if (account)
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
296 gaim_request_field_account_set_value(field, account);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
297 gaim_request_field_group_add_field(group, field);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
298
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
299 gaim_request_fields(NULL, _("Add Buddy"), NULL, _("Please enter buddy information."),
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
300 fields, _("Add"), G_CALLBACK(add_buddy_cb), _("Cancel"), NULL, NULL);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
301 }
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
302
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
303 static void
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
304 add_chat_cb(void *data, GaimRequestFields *allfields)
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
305 {
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
306 GaimAccount *account;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
307 const char *alias, *name, *group;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
308 GaimChat *chat;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
309 GaimGroup *grp;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
310 GHashTable *hash = NULL;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
311 GaimConnection *gc;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
312
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
313 account = gaim_request_fields_get_account(allfields, "account");
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
314 name = gaim_request_fields_get_string(allfields, "name");
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
315 alias = gaim_request_fields_get_string(allfields, "alias");
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
316 group = gaim_request_fields_get_string(allfields, "group");
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
317
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
318 if (!gaim_account_is_connected(account) || !name || !*name)
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
319 return;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
320
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
321 if (!group || !*group)
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
322 group = _("Chats");
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
323
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
324 gc = gaim_account_get_connection(account);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
325
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
326 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL)
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
327 hash = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, name);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
328
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
329 chat = gaim_chat_new(account, name, hash);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
330
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
331 if (chat != NULL) {
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
332 if ((grp = gaim_find_group(group)) == NULL) {
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
333 grp = gaim_group_new(group);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
334 gaim_blist_add_group(grp, NULL);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
335 }
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
336 gaim_blist_add_chat(chat, grp, NULL);
14691
dbcdef1ab5af [gaim-migrate @ 17443]
Stu Tomlinson <stu@nosnilmot.com>
parents: 14630
diff changeset
337 gaim_blist_alias_chat(chat, alias);
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
338 }
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
339 }
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
340
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
341 static void
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
342 gg_request_add_chat(GaimAccount *account, GaimGroup *grp, const char *alias, const char *name)
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
343 {
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
344 GaimRequestFields *fields = gaim_request_fields_new();
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
345 GaimRequestFieldGroup *group = gaim_request_field_group_new(NULL);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
346 GaimRequestField *field;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
347
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
348 gaim_request_fields_add_group(fields, group);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
349
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
350 field = gaim_request_field_account_new("account", _("Account"), NULL);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
351 gaim_request_field_account_set_show_all(field, FALSE);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
352 if (account)
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
353 gaim_request_field_account_set_value(field, account);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
354 gaim_request_field_group_add_field(group, field);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
355
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
356 field = gaim_request_field_string_new("name", _("Name"), name, FALSE);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
357 gaim_request_field_group_add_field(group, field);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
358
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
359 field = gaim_request_field_string_new("alias", _("Alias"), alias, FALSE);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
360 gaim_request_field_group_add_field(group, field);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
361
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
362 field = gaim_request_field_string_new("group", _("Group"), grp ? grp->name : NULL, FALSE);
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
363 gaim_request_field_group_add_field(group, field);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
364
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
365 gaim_request_fields(NULL, _("Add Chat"), NULL,
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
366 _("You can edit more information from the context menu later."),
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
367 fields, _("Add"), G_CALLBACK(add_chat_cb), _("Cancel"), NULL, NULL);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
368 }
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
369
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
370 static void
14062
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
371 add_group_cb(gpointer null, const char *group)
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
372 {
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
373 GaimGroup *grp;
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
374
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
375 if (!group || !*group)
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
376 {
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
377 gaim_notify_error(NULL, _("Error"), _("Error adding group"),
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
378 _("You must give a name for the group to add."));
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
379 return;
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
380 }
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
381
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
382 grp = gaim_find_group(group);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
383 if (!grp)
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
384 {
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
385 grp = gaim_group_new(group);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
386 gaim_blist_add_group(grp, NULL);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
387 }
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
388 else
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
389 {
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
390 gaim_notify_error(NULL, _("Error"), _("Error adding group"),
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
391 _("A group with the name already exists."));
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
392 }
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
393 }
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
394
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
395 static void
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
396 gg_request_add_group()
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
397 {
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
398 gaim_request_input(NULL, _("Add Group"), NULL, _("Enter the name of the group"),
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
399 NULL, FALSE, FALSE, NULL,
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
400 _("Add"), G_CALLBACK(add_group_cb), _("Cancel"), NULL, NULL);
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
401 }
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
402
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
403 static GaimBlistUiOps blist_ui_ops =
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
404 {
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
405 new_list,
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
406 new_node,
14847
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
407 blist_show,
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
408 node_update,
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
409 node_remove,
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
410 NULL,
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
411 NULL,
14062
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
412 .request_add_buddy = gg_request_add_buddy,
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
413 .request_add_chat = gg_request_add_chat,
14062
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
414 .request_add_group = gg_request_add_group
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
415 };
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
416
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
417 static gpointer
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
418 gg_blist_get_handle()
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
419 {
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
420 static int handle;
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
421
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
422 return &handle;
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
423 }
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
424
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
425 static void
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
426 add_group(GaimGroup *group, GGBlist *ggblist)
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
427 {
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
428 GaimBlistNode *node = (GaimBlistNode *)group;
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
429 if (node->ui_data)
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
430 return;
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
431 node->ui_data = gnt_tree_add_row_after(GNT_TREE(ggblist->tree), group,
14018
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
432 gnt_tree_create_row(GNT_TREE(ggblist->tree), get_display_name(node)), NULL, NULL);
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
433 }
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
434
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
435 static const char *
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
436 get_display_name(GaimBlistNode *node)
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
437 {
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
438 static char text[2096];
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
439 char status[8] = " ";
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
440 const char *name = NULL;
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
441
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
442 if (GAIM_BLIST_NODE_IS_CONTACT(node))
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
443 node = (GaimBlistNode*)gaim_contact_get_priority_buddy((GaimContact*)node); /* XXX: this can return NULL?! */
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
444
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
445 if (node == NULL)
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
446 return NULL;
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
447
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
448 if (GAIM_BLIST_NODE_IS_BUDDY(node))
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
449 {
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
450 GaimBuddy *buddy = (GaimBuddy *)node;
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
451 GaimStatusPrimitive prim;
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
452 GaimPresence *presence;
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
453 GaimStatus *now;
13927
9309d27d780c [gaim-migrate @ 16447]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13916
diff changeset
454 gboolean ascii = gnt_ascii_only();
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
455
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
456 presence = gaim_buddy_get_presence(buddy);
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
457 now = gaim_presence_get_active_status(presence);
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
458
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
459 prim = gaim_status_type_get_primitive(gaim_status_get_type(now));
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
460
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
461 switch(prim)
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
462 {
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
463 case GAIM_STATUS_OFFLINE:
13927
9309d27d780c [gaim-migrate @ 16447]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13916
diff changeset
464 strncpy(status, ascii ? "x" : "⊗", sizeof(status) - 1);
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
465 break;
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
466 case GAIM_STATUS_AVAILABLE:
13927
9309d27d780c [gaim-migrate @ 16447]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13916
diff changeset
467 strncpy(status, ascii ? "o" : "â—¯", sizeof(status) - 1);
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
468 break;
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
469 default:
13927
9309d27d780c [gaim-migrate @ 16447]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13916
diff changeset
470 strncpy(status, ascii ? "." : "⊖", sizeof(status) - 1);
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
471 break;
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
472 }
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
473 name = gaim_buddy_get_alias(buddy);
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
474 }
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
475 else if (GAIM_BLIST_NODE_IS_CHAT(node))
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
476 {
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
477 GaimChat *chat = (GaimChat*)node;
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
478 name = gaim_chat_get_name(chat);
13885
582aaa4e287e [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13884
diff changeset
479
582aaa4e287e [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13884
diff changeset
480 strncpy(status, "~", sizeof(status) - 1);
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
481 }
14018
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
482 else if (GAIM_BLIST_NODE_IS_GROUP(node))
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
483 return ((GaimGroup*)node)->name;
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
484
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
485 snprintf(text, sizeof(text) - 1, "%s %s", status, name);
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
486
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
487 return text;
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
488 }
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
489
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
490 static void
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
491 add_chat(GaimChat *chat, GGBlist *ggblist)
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
492 {
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
493 GaimGroup *group;
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
494 GaimBlistNode *node = (GaimBlistNode *)chat;
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
495 if (node->ui_data)
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
496 return;
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
497 if (!gaim_account_is_connected(chat->account))
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
498 return;
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
499
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
500 group = gaim_chat_get_group(chat);
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
501 add_node((GaimBlistNode*)group, ggblist);
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
502
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
503 node->ui_data = gnt_tree_add_row_after(GNT_TREE(ggblist->tree), chat,
13964
0a0d2a1fd2bc [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13959
diff changeset
504 gnt_tree_create_row(GNT_TREE(ggblist->tree), get_display_name(node)),
0a0d2a1fd2bc [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13959
diff changeset
505 group, NULL);
14105
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
506
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
507 /* XXX: This causes problem because you can close a chat window, hide the buddylist.
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
508 * When you show the buddylist, you automatically join the chat again. */
14105
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
509 if (gaim_blist_node_get_bool((GaimBlistNode*)chat, "gnt-autojoin"))
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
510 serv_join_chat(gaim_account_get_connection(chat->account), chat->components);
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
511 }
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
512
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
513 static void
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
514 add_contact(GaimContact *contact, GGBlist *ggblist)
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
515 {
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
516 GaimGroup *group;
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
517 GaimBlistNode *node = (GaimBlistNode*)contact;
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
518 const char *name;
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
519
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
520 if (node->ui_data)
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
521 return;
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
522
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
523 name = get_display_name(node);
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
524 if (name == NULL)
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
525 return;
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
526
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
527 group = (GaimGroup*)node->parent;
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
528 add_node((GaimBlistNode*)group, ggblist);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
529
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
530 node->ui_data = gnt_tree_add_row_after(GNT_TREE(ggblist->tree), contact,
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
531 gnt_tree_create_row(GNT_TREE(ggblist->tree), name),
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
532 group, NULL);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
533
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
534 gnt_tree_set_expanded(GNT_TREE(ggblist->tree), contact, FALSE);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
535 }
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
536
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
537 static void
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
538 add_buddy(GaimBuddy *buddy, GGBlist *ggblist)
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
539 {
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
540 GaimContact *contact;
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
541 GaimBlistNode *node = (GaimBlistNode *)buddy;
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
542 if (node->ui_data)
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
543 return;
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
544
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
545 contact = (GaimContact*)node->parent;
14708
ef94c6b853ab [gaim-migrate @ 17462]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14694
diff changeset
546 if (!contact) /* When a new buddy is added and show-offline is set */
ef94c6b853ab [gaim-migrate @ 17462]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14694
diff changeset
547 return;
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
548 add_node((GaimBlistNode*)contact, ggblist);
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
549
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
550 node->ui_data = gnt_tree_add_row_after(GNT_TREE(ggblist->tree), buddy,
13964
0a0d2a1fd2bc [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13959
diff changeset
551 gnt_tree_create_row(GNT_TREE(ggblist->tree), get_display_name(node)),
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
552 contact, NULL);
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
553 if (gaim_presence_is_idle(gaim_buddy_get_presence(buddy))) {
13931
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
554 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), buddy, GNT_TEXT_FLAG_DIM);
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
555 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), contact, GNT_TEXT_FLAG_DIM);
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
556 } else {
13931
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
557 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), buddy, 0);
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
558 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), contact, 0);
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
559 }
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
560 }
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
561
13897
eaaf73de9188 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13896
diff changeset
562 #if 0
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
563 static void
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
564 buddy_signed_on(GaimBuddy *buddy, GGBlist *ggblist)
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
565 {
13865
d78ab363e02d [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13864
diff changeset
566 add_node((GaimBlistNode*)buddy, ggblist);
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
567 }
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
568
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
569 static void
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
570 buddy_signed_off(GaimBuddy *buddy, GGBlist *ggblist)
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
571 {
13861
55fb5cd9bac9 [gaim-migrate @ 16322]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13860
diff changeset
572 node_remove(gaim_get_blist(), (GaimBlistNode*)buddy);
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
573 }
13897
eaaf73de9188 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13896
diff changeset
574 #endif
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
575
13857
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
576 GaimBlistUiOps *gg_blist_get_ui_ops()
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
577 {
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
578 return &blist_ui_ops;
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
579 }
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
580
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
581 static void
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
582 selection_activate(GntWidget *widget, GGBlist *ggblist)
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
583 {
13896
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
584 GntTree *tree = GNT_TREE(ggblist->tree);
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
585 GaimBlistNode *node = gnt_tree_get_selection_data(tree);
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
586
13943
25be562aaca8 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13931
diff changeset
587 if (!node)
25be562aaca8 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13931
diff changeset
588 return;
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
589
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
590 if (GAIM_BLIST_NODE_IS_CONTACT(node))
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
591 node = (GaimBlistNode*)gaim_contact_get_priority_buddy((GaimContact*)node);
13943
25be562aaca8 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13931
diff changeset
592
13896
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
593 if (GAIM_BLIST_NODE_IS_BUDDY(node))
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
594 {
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
595 GaimBuddy *buddy = (GaimBuddy *)node;
14388
f4af666fafe3 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14385
diff changeset
596 GaimConversation *conv = gaim_conversation_new(GAIM_CONV_TYPE_IM,
f4af666fafe3 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14385
diff changeset
597 gaim_buddy_get_account(buddy),
f4af666fafe3 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14385
diff changeset
598 gaim_buddy_get_name(buddy));
f4af666fafe3 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14385
diff changeset
599 gg_conversation_set_active(conv);
13896
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
600 }
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
601 else if (GAIM_BLIST_NODE_IS_CHAT(node))
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
602 {
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
603 GaimChat *chat = (GaimChat*)node;
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
604 serv_join_chat(chat->account->gc, chat->components);
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
605 }
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
606 }
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
607
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
608 static void
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
609 context_menu_callback(GntMenuItem *item, gpointer data)
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
610 {
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
611 GaimMenuAction *action = data;
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
612 GaimBlistNode *node = ggblist->cnode;
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
613 if (action) {
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
614 void (*callback)(GaimBlistNode *, gpointer);
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
615 callback = (void (*)(GaimBlistNode *, gpointer))action->callback;
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
616 if (callback)
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
617 callback(action->data, node);
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
618 else
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
619 return;
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
620 }
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
621 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
622
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
623 static void
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
624 gnt_append_menu_action(GntMenu *menu, GaimMenuAction *action, gpointer parent)
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
625 {
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
626 GList *list;
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
627 GntMenuItem *item;
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
628
14010
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
629 if (action == NULL)
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
630 return;
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
631
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
632 item = gnt_menuitem_new(action->label);
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
633 gnt_menuitem_set_callback(GNT_MENUITEM(item), context_menu_callback, action);
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
634 gnt_menu_add_item(menu, GNT_MENUITEM(item));
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
635
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
636 for (list = action->children; list; list = list->next)
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
637 gnt_append_menu_action(menu, list->data, action);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
638 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
639
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
640 static void
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
641 append_proto_menu(GntMenu *menu, GaimConnection *gc, GaimBlistNode *node)
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
642 {
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
643 GList *list;
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
644 GaimPluginProtocolInfo *prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
645
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
646 if(!prpl_info || !prpl_info->blist_node_menu)
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
647 return;
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
648
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
649 for(list = prpl_info->blist_node_menu(node); list;
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
650 list = g_list_delete_link(list, list))
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
651 {
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
652 GaimMenuAction *act = (GaimMenuAction *) list->data;
14470
c8704dd8059b [gaim-migrate @ 17186]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14469
diff changeset
653 act->data = node;
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
654 gnt_append_menu_action(menu, act, NULL);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
655 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
656 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
657
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
658 static void
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
659 add_custom_action(GntMenu *menu, const char *label, GaimCallback callback,
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
660 gpointer data)
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
661 {
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
662 GaimMenuAction *action = gaim_menu_action_new(label, callback, data, NULL);
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
663 gnt_append_menu_action(menu, action, NULL);
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
664 g_signal_connect_swapped(G_OBJECT(menu), "destroy",
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
665 G_CALLBACK(gaim_menu_action_free), action);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
666 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
667
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
668 static void
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
669 chat_components_edit_ok(GaimChat *chat, GaimRequestFields *allfields)
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
670 {
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
671 GList *groups, *fields;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
672
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
673 for (groups = gaim_request_fields_get_groups(allfields); groups; groups = groups->next) {
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
674 fields = gaim_request_field_group_get_fields(groups->data);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
675 for (; fields; fields = fields->next) {
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
676 GaimRequestField *field = fields->data;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
677 const char *id;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
678 char *val;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
679
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
680 id = gaim_request_field_get_id(field);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
681 if (gaim_request_field_get_type(field) == GAIM_REQUEST_FIELD_INTEGER)
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
682 val = g_strdup_printf("%d", gaim_request_field_int_get_value(field));
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
683 else
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
684 val = g_strdup(gaim_request_field_string_get_value(field));
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
685
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
686 g_hash_table_replace(chat->components, g_strdup(id), val); /* val should not be free'd */
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
687 }
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
688 }
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
689 }
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
690
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
691 static void
14469
ddfe82afecd8 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14427
diff changeset
692 chat_components_edit(GaimChat *chat, GaimBlistNode *selected)
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
693 {
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
694 GaimRequestFields *fields = gaim_request_fields_new();
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
695 GaimRequestFieldGroup *group = gaim_request_field_group_new(NULL);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
696 GaimRequestField *field;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
697 GList *parts, *iter;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
698 struct proto_chat_entry *pce;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
699
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
700 gaim_request_fields_add_group(fields, group);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
701
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
702 parts = GAIM_PLUGIN_PROTOCOL_INFO(chat->account->gc->prpl)->chat_info(chat->account->gc);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
703
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
704 for (iter = parts; iter; iter = iter->next) {
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
705 pce = iter->data;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
706 if (pce->is_int) {
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
707 int val;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
708 const char *str = g_hash_table_lookup(chat->components, pce->identifier);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
709 if (!str || sscanf(str, "%d", &val) != 1)
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
710 val = pce->min;
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
711 field = gaim_request_field_int_new(pce->identifier, pce->label, val);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
712 } else {
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
713 field = gaim_request_field_string_new(pce->identifier, pce->label,
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
714 g_hash_table_lookup(chat->components, pce->identifier), FALSE);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
715 }
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
716
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
717 gaim_request_field_group_add_field(group, field);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
718 g_free(pce);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
719 }
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
720
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
721 g_list_free(parts);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
722
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
723 gaim_request_fields(NULL, _("Edit Chat"), NULL, _("Please Update the necessary fields."),
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
724 fields, _("Edit"), G_CALLBACK(chat_components_edit_ok), _("Cancel"), NULL, chat);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
725 }
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
726
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
727 static void
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
728 autojoin_toggled(GntMenuItem *item, gpointer data)
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
729 {
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
730 GaimMenuAction *action = data;
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
731 gaim_blist_node_set_bool(action->data, "gnt-autojoin",
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
732 gnt_menuitem_check_get_checked(GNT_MENUITEM_CHECK(item)));
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
733 }
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
734
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
735 static void
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
736 create_chat_menu(GntMenu *menu, GaimChat *chat)
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
737 {
14105
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
738 GaimMenuAction *action = gaim_menu_action_new(_("Auto-join"), NULL, chat, NULL);
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
739 GntMenuItem *check = gnt_menuitem_check_new(action->label);
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
740 gnt_menuitem_check_set_checked(GNT_MENUITEM_CHECK(check),
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
741 gaim_blist_node_get_bool((GaimBlistNode*)chat, "gnt-autojoin"));
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
742 gnt_menu_add_item(menu, check);
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
743 gnt_menuitem_set_callback(check, autojoin_toggled, action);
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
744 g_signal_connect_swapped(G_OBJECT(menu), "destroy",
14105
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
745 G_CALLBACK(gaim_menu_action_free), action);
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
746
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
747 add_custom_action(menu, _("Edit Settings"), (GaimCallback)chat_components_edit, chat);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
748 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
749
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
750 static void
14469
ddfe82afecd8 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14427
diff changeset
751 gg_add_buddy(GaimGroup *grp, GaimBlistNode *selected)
14062
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
752 {
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
753 gaim_blist_request_add_buddy(NULL, NULL, grp ? grp->name : NULL, NULL);
14062
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
754 }
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
755
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
756 static void
14469
ddfe82afecd8 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14427
diff changeset
757 gg_add_group(GaimGroup *grp, GaimBlistNode *selected)
14062
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
758 {
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
759 gaim_blist_request_add_group();
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
760 }
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
761
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
762 static void
14469
ddfe82afecd8 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14427
diff changeset
763 gg_add_chat(GaimGroup *grp, GaimBlistNode *selected)
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
764 {
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
765 gaim_blist_request_add_chat(NULL, grp, NULL, NULL);
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
766 }
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
767
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
768 static void
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
769 create_group_menu(GntMenu *menu, GaimGroup *group)
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
770 {
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
771 add_custom_action(menu, _("Add Buddy"),
14062
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
772 GAIM_CALLBACK(gg_add_buddy), group);
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
773 add_custom_action(menu, _("Add Chat"),
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
774 GAIM_CALLBACK(gg_add_chat), group);
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
775 add_custom_action(menu, _("Add Group"),
14062
fa8f65cd912c [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14059
diff changeset
776 GAIM_CALLBACK(gg_add_group), group);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
777 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
778
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
779 static void
14469
ddfe82afecd8 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14427
diff changeset
780 gg_blist_get_buddy_info_cb(GaimBuddy *buddy, GaimBlistNode *selected)
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
781 {
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
782 serv_get_info(buddy->account->gc, gaim_buddy_get_name(buddy));
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
783 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
784
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
785 static void
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
786 create_buddy_menu(GntMenu *menu, GaimBuddy *buddy)
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
787 {
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
788 GaimPluginProtocolInfo *prpl_info;
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
789
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
790 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(buddy->account->gc->prpl);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
791 if (prpl_info && prpl_info->get_info)
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
792 {
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
793 add_custom_action(menu, _("Get Info"),
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
794 GAIM_CALLBACK(gg_blist_get_buddy_info_cb), buddy);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
795 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
796
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
797 #if 0
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
798 add_custom_action(tree, _("Add Buddy Pounce"),
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
799 GAIM_CALLBACK(gg_blist_add_buddy_pounce_cb)), buddy);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
800
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
801 if (prpl_info && prpl_info->send_file)
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
802 {
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
803 if (!prpl_info->can_receive_file ||
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
804 prpl_info->can_receive_file(buddy->account->gc, buddy->name))
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
805 add_custom_action(tree, _("Send File"),
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
806 GAIM_CALLBACK(gg_blist_show_file_cb)), buddy);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
807 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
808
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
809 add_custom_action(tree, _("View Log"),
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
810 GAIM_CALLBACK(gg_blist_view_log_cb)), buddy);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
811 #endif
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
812
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
813 /* Protocol actions */
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
814 append_proto_menu(menu,
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
815 gaim_account_get_connection(gaim_buddy_get_account(buddy)),
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
816 (GaimBlistNode*)buddy);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
817 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
818
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
819 static void
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
820 append_extended_menu(GntMenu *menu, GaimBlistNode *node)
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
821 {
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
822 GList *iter;
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
823
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
824 for (iter = gaim_blist_node_get_extended_menu(node);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
825 iter; iter = g_list_delete_link(iter, iter))
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
826 {
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
827 gnt_append_menu_action(menu, iter->data, NULL);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
828 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
829 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
830
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
831 /* Xerox'd from gtkdialogs.c:gaim_gtkdialogs_remove_contact_cb */
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
832 static void
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
833 remove_contact(GaimContact *contact)
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
834 {
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
835 GaimBlistNode *bnode, *cnode;
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
836 GaimGroup *group;
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
837
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
838 cnode = (GaimBlistNode *)contact;
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
839 group = (GaimGroup*)cnode->parent;
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
840 for (bnode = cnode->child; bnode; bnode = bnode->next) {
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
841 GaimBuddy *buddy = (GaimBuddy*)bnode;
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
842 if (gaim_account_is_connected(buddy->account))
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
843 gaim_account_remove_buddy(buddy->account, buddy, group);
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
844 }
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
845 gaim_blist_remove_contact(contact);
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
846 }
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
847
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
848 static void
14018
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
849 rename_blist_node(GaimBlistNode *node, const char *newname)
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
850 {
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
851 const char *name = newname;
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
852 if (name && !*name)
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
853 name = NULL;
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
854
14475
feedb7828791 [gaim-migrate @ 17191]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14470
diff changeset
855 if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
feedb7828791 [gaim-migrate @ 17191]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14470
diff changeset
856 GaimContact *contact = (GaimContact*)node;
feedb7828791 [gaim-migrate @ 17191]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14470
diff changeset
857 GaimBuddy *buddy = gaim_contact_get_priority_buddy(contact);
feedb7828791 [gaim-migrate @ 17191]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14470
diff changeset
858 gaim_blist_alias_contact(contact, name);
feedb7828791 [gaim-migrate @ 17191]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14470
diff changeset
859 gaim_blist_alias_buddy(buddy, name);
feedb7828791 [gaim-migrate @ 17191]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14470
diff changeset
860 serv_alias_buddy(buddy);
feedb7828791 [gaim-migrate @ 17191]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14470
diff changeset
861 } else if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
14018
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
862 gaim_blist_alias_buddy((GaimBuddy*)node, name);
14475
feedb7828791 [gaim-migrate @ 17191]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14470
diff changeset
863 serv_alias_buddy((GaimBuddy*)node);
feedb7828791 [gaim-migrate @ 17191]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14470
diff changeset
864 } else if (GAIM_BLIST_NODE_IS_CHAT(node))
14018
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
865 gaim_blist_alias_chat((GaimChat*)node, name);
14691
dbcdef1ab5af [gaim-migrate @ 17443]
Stu Tomlinson <stu@nosnilmot.com>
parents: 14630
diff changeset
866 else if (GAIM_BLIST_NODE_IS_GROUP(node) && (name != NULL))
14018
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
867 gaim_blist_rename_group((GaimGroup*)node, name);
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
868 else
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
869 g_return_if_reached();
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
870 }
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
871
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
872 static void
14469
ddfe82afecd8 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14427
diff changeset
873 gg_blist_rename_node_cb(GaimBlistNode *node, GaimBlistNode *selected)
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
874 {
14018
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
875 const char *name = NULL;
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
876 char *prompt;
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
877
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
878 if (GAIM_BLIST_NODE_IS_CONTACT(node))
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
879 name = gaim_contact_get_alias((GaimContact*)node);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
880 else if (GAIM_BLIST_NODE_IS_BUDDY(node))
14018
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
881 name = gaim_buddy_get_contact_alias((GaimBuddy*)node);
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
882 else if (GAIM_BLIST_NODE_IS_CHAT(node))
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
883 name = gaim_chat_get_name((GaimChat*)node);
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
884 else if (GAIM_BLIST_NODE_IS_GROUP(node))
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
885 name = ((GaimGroup*)node)->name;
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
886 else
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
887 g_return_if_reached();
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
888
14018
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
889 prompt = g_strdup_printf(_("Please enter the new name for %s"), name);
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
890
14018
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
891 gaim_request_input(node, _("Rename"), prompt, _("Enter empty string to reset the name."),
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
892 name, FALSE, FALSE, NULL, _("Rename"), G_CALLBACK(rename_blist_node),
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
893 _("Cancel"), NULL, node);
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
894
35699556075f [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14010
diff changeset
895 g_free(prompt);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
896 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
897
14063
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
898 /* Xeroxed from gtkdialogs.c:gaim_gtkdialogs_remove_group_cb*/
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
899 static void
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
900 remove_group(GaimGroup *group)
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
901 {
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
902 GaimBlistNode *cnode, *bnode;
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
903
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
904 cnode = ((GaimBlistNode*)group)->child;
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
905
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
906 while (cnode) {
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
907 if (GAIM_BLIST_NODE_IS_CONTACT(cnode)) {
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
908 bnode = cnode->child;
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
909 cnode = cnode->next;
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
910 while (bnode) {
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
911 GaimBuddy *buddy;
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
912 if (GAIM_BLIST_NODE_IS_BUDDY(bnode)) {
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
913 buddy = (GaimBuddy*)bnode;
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
914 bnode = bnode->next;
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
915 if (gaim_account_is_connected(buddy->account)) {
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
916 gaim_account_remove_buddy(buddy->account, buddy, group);
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
917 gaim_blist_remove_buddy(buddy);
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
918 }
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
919 } else {
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
920 bnode = bnode->next;
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
921 }
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
922 }
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
923 } else if (GAIM_BLIST_NODE_IS_CHAT(cnode)) {
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
924 GaimChat *chat = (GaimChat *)cnode;
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
925 cnode = cnode->next;
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
926 if (gaim_account_is_connected(chat->account))
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
927 gaim_blist_remove_chat(chat);
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
928 } else {
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
929 cnode = cnode->next;
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
930 }
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
931 }
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
932
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
933 gaim_blist_remove_group(group);
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
934 }
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
935
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
936 static void
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
937 gg_blist_remove_node(GaimBlistNode *node)
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
938 {
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
939 if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
940 remove_contact((GaimContact*)node);
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
941 } else if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
14063
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
942 GaimBuddy *buddy = (GaimBuddy*)node;
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
943 GaimGroup *group = gaim_buddy_get_group(buddy);
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
944 gaim_account_remove_buddy(gaim_buddy_get_account(buddy), buddy, group);
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
945 gaim_blist_remove_buddy(buddy);
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
946 } else if (GAIM_BLIST_NODE_IS_CHAT(node)) {
14063
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
947 gaim_blist_remove_chat((GaimChat*)node);
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
948 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
14063
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
949 remove_group((GaimGroup*)node);
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
950 }
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
951 }
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
952
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
953 static void
14469
ddfe82afecd8 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14427
diff changeset
954 gg_blist_remove_node_cb(GaimBlistNode *node, GaimBlistNode *selected)
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
955 {
14198
c65ed4f6eea8 [gaim-migrate @ 16870]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14132
diff changeset
956 char *primary;
c65ed4f6eea8 [gaim-migrate @ 16870]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14132
diff changeset
957 const char *name, *sec = NULL;
14064
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
958
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
959 /* XXX: could be a contact */
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
960 if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
961 GaimContact *c = (GaimContact*)node;
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
962 name = gaim_contact_get_alias(c);
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
963 if (c->totalsize > 1)
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
964 sec = _("Removing this contact will also remove all the buddies in the contact");
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
965 } else if (GAIM_BLIST_NODE_IS_BUDDY(node))
14064
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
966 name = gaim_buddy_get_name((GaimBuddy*)node);
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
967 else if (GAIM_BLIST_NODE_IS_CHAT(node))
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
968 name = gaim_chat_get_name((GaimChat*)node);
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
969 else if (GAIM_BLIST_NODE_IS_GROUP(node))
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
970 {
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
971 name = ((GaimGroup*)node)->name;
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
972 sec = _("Removing this group will also remove all the buddies in the group");
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
973 }
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
974 else
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
975 return;
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
976
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
977 primary = g_strdup_printf(_("Are you sure you want to remove %s?"), name);
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
978
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
979 /* XXX: anything to do with the returned ui-handle? */
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
980 gaim_request_action(node, _("Confirm Remove"),
14064
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
981 primary, sec,
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
982 1, node, 2,
14063
ccbd43daa1a3 [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14062
diff changeset
983 _("Remove"), gg_blist_remove_node,
14064
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
984 _("Cancel"), NULL);
fec4fadf30c9 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14063
diff changeset
985 g_free(primary);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
986 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
987
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
988 static void
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
989 gg_blist_tag_buddy(GaimBlistNode *node)
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
990 {
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
991 ggblist->tagged = (GaimBuddy *)node;
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
992 gaim_debug_info("blist", "Tagged buddy\n");
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
993 }
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
994
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
995 static void
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
996 gg_blist_place_tagged(GaimBlistNode *node)
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
997 {
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
998 if (GAIM_BLIST_NODE_IS_GROUP(node)) {
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
999 gaim_blist_add_buddy(ggblist->tagged, NULL, (GaimGroup *)node, NULL);
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1000 } else {
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1001 GaimContact *contact = (GaimContact *)node;
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1002 gaim_blist_add_buddy(ggblist->tagged, contact,
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1003 gaim_buddy_get_group(gaim_contact_get_priority_buddy(contact)), NULL);
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1004 }
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1005 ggblist->tagged = NULL;
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1006 gaim_debug_info("blist", "Placed buddy\n");
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1007 }
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1008
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1009 static void
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1010 context_menu_destroyed(GntWidget *widget, GGBlist *ggblist)
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1011 {
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1012 ggblist->context = NULL;
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1013 }
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1014
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1015 static void
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1016 draw_context_menu(GGBlist *ggblist)
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1017 {
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1018 GaimBlistNode *node = NULL;
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1019 GntWidget *context = NULL;
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1020 GntTree *tree = NULL;
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1021 int x, y, top, width;
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1022 char *title = NULL;
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1023
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1024 tree = GNT_TREE(ggblist->tree);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1025
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1026 node = gnt_tree_get_selection_data(tree);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1027
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1028 if (ggblist->tooltip)
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1029 remove_tooltip(ggblist);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1030
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1031 ggblist->cnode = node;
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1032
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1033 ggblist->context = context = gnt_menu_new(GNT_MENU_POPUP);
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1034 g_signal_connect(G_OBJECT(context), "destroy", G_CALLBACK(context_menu_destroyed), ggblist);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1035
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1036 if (!node) {
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1037 create_group_menu(GNT_MENU(context), NULL);
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1038 title = g_strdup(_("Buddy List"));
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1039 } else if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1040 create_buddy_menu(GNT_MENU(context),
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1041 gaim_contact_get_priority_buddy((GaimContact*)node));
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1042 title = g_strdup(gaim_contact_get_alias((GaimContact*)node));
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1043 } else if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1044 GaimBuddy *buddy = (GaimBuddy *)node;
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1045 create_buddy_menu(GNT_MENU(context), buddy);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1046 title = g_strdup(gaim_buddy_get_name(buddy));
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1047 } else if (GAIM_BLIST_NODE_IS_CHAT(node)) {
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1048 GaimChat *chat = (GaimChat*)node;
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1049 create_chat_menu(GNT_MENU(context), chat);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1050 title = g_strdup(gaim_chat_get_name(chat));
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1051 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1052 GaimGroup *group = (GaimGroup *)node;
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1053 create_group_menu(GNT_MENU(context), group);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1054 title = g_strdup(group->name);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1055 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1056
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1057 append_extended_menu(GNT_MENU(context), node);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1058
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1059 /* These are common for everything */
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1060 if (node) {
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1061 add_custom_action(GNT_MENU(context), _("Rename"),
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1062 GAIM_CALLBACK(gg_blist_rename_node_cb), node);
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1063 add_custom_action(GNT_MENU(context), _("Remove"),
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1064 GAIM_CALLBACK(gg_blist_remove_node_cb), node);
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1065 if (ggblist->tagged && (GAIM_BLIST_NODE_IS_CONTACT(node)
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1066 || GAIM_BLIST_NODE_IS_GROUP(node))) {
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1067 add_custom_action(GNT_MENU(context), _("Place tagged"),
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1068 GAIM_CALLBACK(gg_blist_place_tagged), node);
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1069 } else if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1070 add_custom_action(GNT_MENU(context), _("Tag"),
14694
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1071 GAIM_CALLBACK(gg_blist_tag_buddy), node);
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1072 }
8538993dbb00 [gaim-migrate @ 17446]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14691
diff changeset
1073 }
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1074
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1075 /* Set the position for the popup */
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1076 gnt_widget_get_position(GNT_WIDGET(tree), &x, &y);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1077 gnt_widget_get_size(GNT_WIDGET(tree), &width, NULL);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1078 top = gnt_tree_get_selection_visible_line(tree);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1079
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1080 x += width;
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1081 y += top - 1;
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1082
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1083 gnt_widget_set_position(context, x, y);
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1084 gnt_screen_menu_show(GNT_MENU(context));
13959
2ae35c0cf616 [gaim-migrate @ 16511]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13958
diff changeset
1085 g_free(title);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1086 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1087
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1088 static void
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1089 tooltip_for_buddy(GaimBuddy *buddy, GString *str)
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1090 {
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1091 GaimPlugin *prpl;
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1092 GaimPluginProtocolInfo *prpl_info;
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1093 GaimAccount *account;
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1094
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1095 account = gaim_buddy_get_account(buddy);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1096
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1097 g_string_append_printf(str, _("Account: %s (%s)"),
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1098 gaim_account_get_username(account),
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1099 gaim_account_get_protocol_name(account));
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1100
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1101 prpl = gaim_find_prpl(gaim_account_get_protocol_id(account));
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1102 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1103 if (prpl_info && prpl_info->tooltip_text) {
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1104 GString *tip = g_string_new("");
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1105 char *strip, *br;
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1106 prpl_info->tooltip_text(buddy, tip, TRUE);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1107
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1108 br = gaim_strreplace(tip->str, "\n", "<br>");
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1109 strip = gaim_markup_strip_html(br);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1110 g_string_append(str, strip);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1111 g_string_free(tip, TRUE);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1112 g_free(strip);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1113 g_free(br);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1114 }
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1115
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1116 if (gaim_prefs_get_bool("/gaim/gnt/blist/idletime")) {
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1117 GaimPresence *pre = gaim_buddy_get_presence(buddy);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1118 if (gaim_presence_is_idle(pre)) {
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1119 time_t idle = gaim_presence_get_idle_time(pre);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1120 if (idle > 0) {
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1121 char *st = gaim_str_seconds_to_string(time(NULL) - idle);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1122 g_string_append_printf(str, _("\nIdle: %s"), st);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1123 g_free(st);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1124 }
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1125 }
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1126 }
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1127 }
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1128
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1129 static void
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1130 draw_tooltip(GGBlist *ggblist)
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1131 {
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1132 GaimBlistNode *node;
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1133 int x, y, top, width;
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1134 GString *str;
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1135 GntTree *tree;
13896
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
1136 GntWidget *widget, *box;
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1137 char *title = NULL;
14427
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1138 int lastseen = 0;
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1139
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1140 widget = ggblist->tree;
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1141 tree = GNT_TREE(widget);
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1142
13896
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
1143 if (!gnt_widget_has_focus(ggblist->tree))
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
1144 return;
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
1145
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1146 if (ggblist->tooltip)
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1147 {
13869
5642f4658b59 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13865
diff changeset
1148 /* XXX: Once we can properly redraw on expose events, this can be removed at the end
5642f4658b59 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13865
diff changeset
1149 * to avoid the blinking*/
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1150 remove_tooltip(ggblist);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1151 }
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1152
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1153 node = gnt_tree_get_selection_data(tree);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1154 if (!node)
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1155 return;
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1156
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1157 str = g_string_new("");
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1158
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1159 if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1160 GaimBuddy *pr = gaim_contact_get_priority_buddy((GaimContact*)node);
14427
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1161 gboolean offline = !GAIM_BUDDY_IS_ONLINE(pr);
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1162 gboolean showoffline = gaim_prefs_get_bool(PREF_ROOT "/showoffline");
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1163
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1164 title = g_strdup(gaim_contact_get_alias((GaimContact*)node));
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1165 tooltip_for_buddy(pr, str);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1166 for (node = node->child; node; node = node->next) {
14427
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1167 if (offline) {
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1168 int value = gaim_blist_node_get_int(node, "last_seen");
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1169 if (value > lastseen)
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1170 lastseen = value;
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1171 }
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1172 if (node == (GaimBlistNode*)pr)
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1173 continue;
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1174 if (!showoffline && !GAIM_BUDDY_IS_ONLINE((GaimBuddy*)node))
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1175 continue;
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1176 str = g_string_append(str, "\n----------\n");
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1177 g_string_append_printf(str, _("Nickname: %s\n"), gaim_buddy_get_name((GaimBuddy*)node));
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1178 tooltip_for_buddy((GaimBuddy*)node, str);
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1179 }
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1180 } else if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1181 GaimBuddy *buddy = (GaimBuddy *)node;
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1182 tooltip_for_buddy(buddy, str);
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1183 title = g_strdup(gaim_buddy_get_name(buddy));
14427
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1184 if (!GAIM_BUDDY_IS_ONLINE((GaimBuddy*)node))
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1185 lastseen = gaim_blist_node_get_int(node, "last_seen");
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1186 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1187 GaimGroup *group = (GaimGroup *)node;
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1188
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1189 g_string_append_printf(str, _("Online: %d\nTotal: %d"),
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1190 gaim_blist_get_group_online_count(group),
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1191 gaim_blist_get_group_size(group, FALSE));
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1192
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1193 title = g_strdup(group->name);
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1194 } else if (GAIM_BLIST_NODE_IS_CHAT(node)) {
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
1195 GaimChat *chat = (GaimChat *)node;
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
1196 GaimAccount *account = chat->account;
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
1197
13952
841a5ffbfee4 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13943
diff changeset
1198 g_string_append_printf(str, _("Account: %s (%s)"),
841a5ffbfee4 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13943
diff changeset
1199 gaim_account_get_username(account),
841a5ffbfee4 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13943
diff changeset
1200 gaim_account_get_protocol_name(account));
13884
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
1201
eac18261c6f0 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13877
diff changeset
1202 title = g_strdup(gaim_chat_get_name(chat));
14384
4a901f5d1312 [gaim-migrate @ 17090]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14379
diff changeset
1203 } else {
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1204 g_string_free(str, TRUE);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1205 return;
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1206 }
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1207
14427
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1208 if (lastseen > 0) {
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1209 char *tmp = gaim_str_seconds_to_string(time(NULL) - lastseen);
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1210 g_string_append_printf(str, _("\nLast Seen: %s ago"), tmp);
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1211 g_free(tmp);
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1212 }
1e00e8245720 [gaim-migrate @ 17137]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14407
diff changeset
1213
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1214 gnt_widget_get_position(widget, &x, &y);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1215 gnt_widget_get_size(widget, &width, NULL);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1216 top = gnt_tree_get_selection_visible_line(tree);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1217
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1218 x += width;
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1219 y += top - 1;
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1220
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1221 box = gnt_box_new(FALSE, FALSE);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1222 gnt_box_set_toplevel(GNT_BOX(box), TRUE);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1223 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1224 gnt_box_set_title(GNT_BOX(box), title);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1225
13896
a621329e8c85 [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13885
diff changeset
1226 gnt_box_add_widget(GNT_BOX(box), gnt_label_new(str->str));
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1227
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1228 gnt_widget_set_position(box, x, y);
13916
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1229 GNT_WIDGET_UNSET_FLAGS(box, GNT_WIDGET_CAN_TAKE_FOCUS);
14042
143474e2b1cb [gaim-migrate @ 16648]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14041
diff changeset
1230 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_TRANSIENT);
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1231 gnt_widget_draw(box);
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1232
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1233 g_free(title);
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1234 g_string_free(str, TRUE);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1235 ggblist->tooltip = box;
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1236 ggblist->tnode = node;
13869
5642f4658b59 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13865
diff changeset
1237
5642f4658b59 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13865
diff changeset
1238 gnt_widget_set_name(ggblist->tooltip, "tooltip");
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1239 }
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1240
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1241 static void
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1242 selection_changed(GntWidget *widget, gpointer old, gpointer current, GGBlist *ggblist)
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1243 {
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1244 draw_tooltip(ggblist);
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1245 }
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1246
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1247 static gboolean
14834
52022b0a9405 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14712
diff changeset
1248 context_menu(GntWidget *widget, GGBlist *ggblist)
52022b0a9405 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14712
diff changeset
1249 {
52022b0a9405 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14712
diff changeset
1250 draw_context_menu(ggblist);
52022b0a9405 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14712
diff changeset
1251 return TRUE;
52022b0a9405 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14712
diff changeset
1252 }
52022b0a9405 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14712
diff changeset
1253
52022b0a9405 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14712
diff changeset
1254 static gboolean
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1255 key_pressed(GntWidget *widget, const char *text, GGBlist *ggblist)
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1256 {
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1257 gboolean stop = FALSE, ret = FALSE;
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1258 if (text[0] == 27 && text[1] == 0)
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1259 {
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1260 /* Escape was pressed */
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1261 remove_peripherals(ggblist);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1262 stop = TRUE;
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1263 ret = TRUE;
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1264 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1265
14834
52022b0a9405 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14712
diff changeset
1266 if (strcmp(text, GNT_KEY_CTRL_O) == 0)
14405
8375ecb6152b [gaim-migrate @ 17113]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14399
diff changeset
1267 {
8375ecb6152b [gaim-migrate @ 17113]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14399
diff changeset
1268 gaim_prefs_set_bool(PREF_ROOT "/showoffline",
8375ecb6152b [gaim-migrate @ 17113]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14399
diff changeset
1269 !gaim_prefs_get_bool(PREF_ROOT "/showoffline"));
8375ecb6152b [gaim-migrate @ 17113]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14399
diff changeset
1270 ret = TRUE;
8375ecb6152b [gaim-migrate @ 17113]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14399
diff changeset
1271 stop = TRUE;
8375ecb6152b [gaim-migrate @ 17113]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14399
diff changeset
1272 }
13885
582aaa4e287e [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13884
diff changeset
1273
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1274 if (stop)
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1275 g_signal_stop_emission_by_name(G_OBJECT(widget), "key_pressed");
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1276
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1277 return ret;
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1278 }
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1279
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1280 static void
13931
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1281 update_buddy_display(GaimBuddy *buddy, GGBlist *ggblist)
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1282 {
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1283 GaimContact *contact;
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1284
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1285 contact = gaim_buddy_get_contact(buddy);
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1286
13964
0a0d2a1fd2bc [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13959
diff changeset
1287 gnt_tree_change_text(GNT_TREE(ggblist->tree), buddy, 0, get_display_name((GaimBlistNode*)buddy));
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1288 gnt_tree_change_text(GNT_TREE(ggblist->tree), contact, 0, get_display_name((GaimBlistNode*)contact));
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1289
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1290 if (ggblist->tnode == (GaimBlistNode*)buddy)
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1291 draw_tooltip(ggblist);
13931
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1292
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1293 if (gaim_presence_is_idle(gaim_buddy_get_presence(buddy))) {
13931
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1294 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), buddy, GNT_TEXT_FLAG_DIM);
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1295 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), contact, GNT_TEXT_FLAG_DIM);
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1296 } else {
13931
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1297 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), buddy, 0);
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1298 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), contact, 0);
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1299 }
13931
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1300 }
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1301
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1302 static void
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1303 buddy_status_changed(GaimBuddy *buddy, GaimStatus *old, GaimStatus *now, GGBlist *ggblist)
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1304 {
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1305 update_buddy_display(buddy, ggblist);
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1306 }
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1307
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1308 static void
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1309 buddy_idle_changed(GaimBuddy *buddy, int old, int new, GGBlist *ggblist)
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1310 {
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1311 update_buddy_display(buddy, ggblist);
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1312 }
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1313
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1314 static void
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1315 remove_peripherals(GGBlist *ggblist)
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1316 {
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1317 if (ggblist->tooltip)
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1318 remove_tooltip(ggblist);
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1319 else if (ggblist->context)
14843
97977138cf29 [gaim-migrate @ 17612]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14834
diff changeset
1320 gnt_widget_destroy(ggblist->context);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1321 }
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1322
14010
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1323 static void
14846
c7651586e27b [gaim-migrate @ 17615]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14843
diff changeset
1324 size_changed_cb(GntWidget *w, int wi, int h)
14010
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1325 {
14846
c7651586e27b [gaim-migrate @ 17615]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14843
diff changeset
1326 int width, height;
c7651586e27b [gaim-migrate @ 17615]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14843
diff changeset
1327 gnt_widget_get_size(w, &width, &height);
14010
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1328 gaim_prefs_set_int(PREF_ROOT "/size/width", width);
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1329 gaim_prefs_set_int(PREF_ROOT "/size/height", height);
14846
c7651586e27b [gaim-migrate @ 17615]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14843
diff changeset
1330 gnt_tree_set_col_width(GNT_TREE(ggblist->tree), 0, width - 1);
14010
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1331 }
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1332
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1333 static void
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1334 save_position_cb(GntWidget *w, int x, int y)
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1335 {
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1336 gaim_prefs_set_int(PREF_ROOT "/position/x", x);
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1337 gaim_prefs_set_int(PREF_ROOT "/position/y", y);
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1338 }
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1339
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1340 static void
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1341 reset_blist_window(GntWidget *window, gpointer null)
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1342 {
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1343 GaimBlistNode *node;
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1344 gaim_signals_disconnect_by_handle(gg_blist_get_handle());
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1345 gaim_get_blist()->ui_data = NULL;
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1346
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1347 node = gaim_blist_get_root();
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1348 while (node) {
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1349 node->ui_data = NULL;
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1350 node = gaim_blist_node_next(node, TRUE);
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1351 }
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1352
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
1353 if (ggblist->typing)
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
1354 g_source_remove(ggblist->typing);
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1355 remove_peripherals(ggblist);
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1356 g_free(ggblist);
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1357 ggblist = NULL;
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1358 }
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1359
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1360 static void
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1361 populate_buddylist()
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1362 {
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1363 GaimBlistNode *node;
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1364 GaimBuddyList *list;
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1365
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1366 if (strcmp(gaim_prefs_get_string(PREF_ROOT "/sort_type"), "text") == 0) {
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1367 gnt_tree_set_compare_func(GNT_TREE(ggblist->tree),
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1368 (GCompareFunc)blist_node_compare_text);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1369 } else if (strcmp(gaim_prefs_get_string(PREF_ROOT "/sort_type"), "status") == 0) {
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1370 gnt_tree_set_compare_func(GNT_TREE(ggblist->tree),
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1371 (GCompareFunc)blist_node_compare_status);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1372 } else if (strcmp(gaim_prefs_get_string(PREF_ROOT "/sort_type"), "log") == 0) {
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1373 gnt_tree_set_compare_func(GNT_TREE(ggblist->tree),
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1374 (GCompareFunc)blist_node_compare_log);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1375 }
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1376
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1377 list = gaim_get_blist();
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1378 node = gaim_blist_get_root();
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1379 while (node)
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1380 {
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1381 node_update(list, node);
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1382 node = gaim_blist_node_next(node, FALSE);
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1383 }
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1384 }
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1385
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1386 static void
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1387 destroy_status_list(GList *list)
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1388 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1389 g_list_foreach(list, (GFunc)g_free, NULL);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1390 g_list_free(list);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1391 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1392
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1393 static void
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1394 populate_status_dropdown()
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1395 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1396 int i;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1397 GList *iter;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1398 GList *items = NULL;
14126
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1399 StatusBoxItem *item = NULL;
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1400
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1401 /* First the primitives */
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1402 GaimStatusPrimitive prims[] = {GAIM_STATUS_AVAILABLE, GAIM_STATUS_AWAY,
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1403 GAIM_STATUS_INVISIBLE, GAIM_STATUS_OFFLINE, GAIM_STATUS_UNSET};
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1404
14493
5ac8f22e7b08 [gaim-migrate @ 17212]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14477
diff changeset
1405 gnt_combo_box_remove_all(GNT_COMBO_BOX(ggblist->status));
5ac8f22e7b08 [gaim-migrate @ 17212]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14477
diff changeset
1406
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1407 for (i = 0; prims[i] != GAIM_STATUS_UNSET; i++)
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1408 {
14126
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1409 item = g_new0(StatusBoxItem, 1);
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1410 item->type = STATUS_PRIMITIVE;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1411 item->u.prim = prims[i];
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1412 items = g_list_prepend(items, item);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1413 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1414 gaim_primitive_get_name_from_type(prims[i]));
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1415 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1416
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1417 /* Now the popular statuses */
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1418 for (iter = gaim_savedstatuses_get_popular(6); iter; iter = iter->next)
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1419 {
14126
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1420 item = g_new0(StatusBoxItem, 1);
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1421 item->type = STATUS_SAVED_POPULAR;
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1422 item->u.saved = iter->data;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1423 items = g_list_prepend(items, item);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1424 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1425 gaim_savedstatus_get_title(iter->data));
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1426 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1427
14132
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
1428 /* New savedstatus */
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
1429 item = g_new0(StatusBoxItem, 1);
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
1430 item->type = STATUS_SAVED_NEW;
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
1431 items = g_list_prepend(items, item);
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
1432 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
1433 _("New..."));
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
1434
14126
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1435 /* More savedstatuses */
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1436 item = g_new0(StatusBoxItem, 1);
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1437 item->type = STATUS_SAVED_ALL;
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1438 items = g_list_prepend(items, item);
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1439 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1440 _("Saved..."));
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1441
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1442 /* The keys for the combobox are created here, and never used
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1443 * anywhere else. So make sure the keys are freed when the widget
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1444 * is destroyed. */
14126
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1445 g_object_set_data_full(G_OBJECT(ggblist->status), "list of statuses",
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1446 items, (GDestroyNotify)destroy_status_list);
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1447 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1448
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1449 static void
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1450 redraw_blist(const char *name, GaimPrefType type, gconstpointer val, gpointer data)
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1451 {
14469
ddfe82afecd8 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14427
diff changeset
1452 GaimBlistNode *node, *sel;
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1453 if (ggblist == NULL)
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1454 return;
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1455
14469
ddfe82afecd8 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14427
diff changeset
1456 sel = gnt_tree_get_selection_data(GNT_TREE(ggblist->tree));
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1457 gnt_tree_remove_all(GNT_TREE(ggblist->tree));
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1458 node = gaim_blist_get_root();
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1459 for (; node; node = gaim_blist_node_next(node, TRUE))
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1460 node->ui_data = NULL;
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1461 populate_buddylist();
14469
ddfe82afecd8 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14427
diff changeset
1462 gnt_tree_set_selected(GNT_TREE(ggblist->tree), sel);
ddfe82afecd8 [gaim-migrate @ 17185]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14427
diff changeset
1463 draw_tooltip(ggblist);
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1464 }
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1465
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1466 void gg_blist_init()
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1467 {
14010
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1468 gaim_prefs_add_none(PREF_ROOT);
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1469 gaim_prefs_add_none(PREF_ROOT "/size");
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1470 gaim_prefs_add_int(PREF_ROOT "/size/width", 20);
14218
c509b8b8a646 [gaim-migrate @ 16899]
Ethan Blanton <elb@pidgin.im>
parents: 14214
diff changeset
1471 gaim_prefs_add_int(PREF_ROOT "/size/height", 17);
14010
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1472 gaim_prefs_add_none(PREF_ROOT "/position");
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1473 gaim_prefs_add_int(PREF_ROOT "/position/x", 0);
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1474 gaim_prefs_add_int(PREF_ROOT "/position/y", 0);
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1475 gaim_prefs_add_bool(PREF_ROOT "/idletime", TRUE);
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1476 gaim_prefs_add_bool(PREF_ROOT "/showoffline", FALSE);
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1477 gaim_prefs_add_string(PREF_ROOT "/sort_type", "text");
14010
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1478
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1479 gaim_prefs_connect_callback(gg_blist_get_handle(),
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1480 PREF_ROOT "/showoffline", redraw_blist, NULL);
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1481 gaim_prefs_connect_callback(gg_blist_get_handle(),
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1482 PREF_ROOT "/sort_type", redraw_blist, NULL);
14399
28baa42b5ac2 [gaim-migrate @ 17107]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14396
diff changeset
1483
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1484 return;
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1485 }
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1486
14047
c5bfede33622 [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14042
diff changeset
1487 static gboolean
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1488 remove_typing_cb(gpointer null)
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1489 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1490 GaimSavedStatus *current;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1491 const char *message, *newmessage;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1492 GaimStatusPrimitive prim, newprim;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1493 StatusBoxItem *item;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1494
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1495 current = gaim_savedstatus_get_current();
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1496 message = gaim_savedstatus_get_message(current);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1497 prim = gaim_savedstatus_get_type(current);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1498
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1499 newmessage = gnt_entry_get_text(GNT_ENTRY(ggblist->statustext));
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1500 item = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(ggblist->status));
14047
c5bfede33622 [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14042
diff changeset
1501 g_return_val_if_fail(item->type == STATUS_PRIMITIVE, FALSE);
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1502 newprim = item->u.prim;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1503
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1504 if (newprim != prim || ((message && !newmessage) ||
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1505 (!message && newmessage) ||
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1506 (message && newmessage && g_utf8_collate(message, newmessage) != 0)))
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1507 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1508 GaimSavedStatus *status = gaim_savedstatus_find_transient_by_type_and_message(newprim, newmessage);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1509 /* Holy Crap! That's a LAWNG function name */
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1510 if (status == NULL)
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1511 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1512 status = gaim_savedstatus_new(NULL, newprim);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1513 gaim_savedstatus_set_message(status, newmessage);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1514 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1515
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1516 gaim_savedstatus_activate(status);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1517 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1518
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1519 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree);
14059
2d1b41e3cf0d [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14047
diff changeset
1520 if (ggblist->typing)
2d1b41e3cf0d [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14047
diff changeset
1521 g_source_remove(ggblist->typing);
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1522 ggblist->typing = 0;
14047
c5bfede33622 [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14042
diff changeset
1523 return FALSE;
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1524 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1525
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1526 static void
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1527 status_selection_changed(GntComboBox *box, StatusBoxItem *old, StatusBoxItem *now, gpointer null)
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1528 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1529 gnt_entry_set_text(GNT_ENTRY(ggblist->statustext), NULL);
14126
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1530 if (now->type == STATUS_SAVED_POPULAR)
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1531 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1532 /* Set the status immediately */
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1533 gaim_savedstatus_activate(now->u.saved);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1534 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1535 else if (now->type == STATUS_PRIMITIVE)
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1536 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1537 /* Move the focus to the entry box */
14059
2d1b41e3cf0d [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14047
diff changeset
1538 /* XXX: Make sure the selected status can have a message */
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1539 gnt_box_move_focus(GNT_BOX(ggblist->window), 1);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1540 ggblist->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, NULL);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1541 }
14126
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1542 else if (now->type == STATUS_SAVED_ALL)
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1543 {
14131
db2311999862 [gaim-migrate @ 16773]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14126
diff changeset
1544 /* Restore the selection to reflect current status. */
db2311999862 [gaim-migrate @ 16773]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14126
diff changeset
1545 savedstatus_changed(gaim_savedstatus_get_current(), NULL);
db2311999862 [gaim-migrate @ 16773]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14126
diff changeset
1546 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree);
14126
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1547 gg_savedstatus_show_all();
b71bfeaaed58 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14105
diff changeset
1548 }
14132
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
1549 else if (now->type == STATUS_SAVED_NEW)
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
1550 {
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
1551 savedstatus_changed(gaim_savedstatus_get_current(), NULL);
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
1552 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree);
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
1553 gg_savedstatus_edit(NULL);
2c85b0f97dd0 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14131
diff changeset
1554 }
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1555 else
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1556 g_return_if_reached();
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1557 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1558
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1559 static gboolean
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1560 status_text_changed(GntEntry *entry, const char *text, gpointer null)
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1561 {
14047
c5bfede33622 [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14042
diff changeset
1562 if ((text[0] == 27 || (text[0] == '\t' && text[1] == '\0')) && ggblist->typing == 0)
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1563 return FALSE;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1564
14059
2d1b41e3cf0d [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14047
diff changeset
1565 if (ggblist->typing)
2d1b41e3cf0d [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14047
diff changeset
1566 g_source_remove(ggblist->typing);
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1567 ggblist->typing = 0;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1568
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1569 if (text[0] == '\r' && text[1] == 0)
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1570 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1571 /* Set the status only after you press 'Enter' */
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1572 remove_typing_cb(NULL);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1573 return TRUE;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1574 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1575
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1576 ggblist->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, NULL);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1577 return FALSE;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1578 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1579
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1580 static void
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1581 savedstatus_changed(GaimSavedStatus *now, GaimSavedStatus *old)
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1582 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1583 GList *list;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1584 GaimStatusPrimitive prim;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1585 const char *message;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1586
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1587 if (!ggblist)
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1588 return;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1589
14493
5ac8f22e7b08 [gaim-migrate @ 17212]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14477
diff changeset
1590 /* Block the signals we don't want to emit */
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1591 g_signal_handlers_block_matched(ggblist->status, G_SIGNAL_MATCH_FUNC,
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1592 0, 0, NULL, status_selection_changed, NULL);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1593 g_signal_handlers_block_matched(ggblist->statustext, G_SIGNAL_MATCH_FUNC,
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1594 0, 0, NULL, status_text_changed, NULL);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1595
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1596 prim = gaim_savedstatus_get_type(now);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1597 message = gaim_savedstatus_get_message(now);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1598
14493
5ac8f22e7b08 [gaim-migrate @ 17212]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14477
diff changeset
1599 /* Rebuild the status dropdown */
5ac8f22e7b08 [gaim-migrate @ 17212]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14477
diff changeset
1600 populate_status_dropdown();
5ac8f22e7b08 [gaim-migrate @ 17212]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14477
diff changeset
1601
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1602 list = g_object_get_data(G_OBJECT(ggblist->status), "list of statuses");
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1603 for (; list; list = list->next)
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1604 {
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1605 StatusBoxItem *item = list->data;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1606 if (item->type == STATUS_PRIMITIVE && item->u.prim == prim)
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1607 {
14396
9e9699792bb9 [gaim-migrate @ 17104]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14393
diff changeset
1608 char *mess = gaim_unescape_html(message);
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1609 gnt_combo_box_set_selected(GNT_COMBO_BOX(ggblist->status), item);
14396
9e9699792bb9 [gaim-migrate @ 17104]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14393
diff changeset
1610 gnt_entry_set_text(GNT_ENTRY(ggblist->statustext), mess);
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1611 gnt_widget_draw(ggblist->status);
14396
9e9699792bb9 [gaim-migrate @ 17104]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14393
diff changeset
1612 g_free(mess);
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1613 break;
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1614 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1615 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1616
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1617 g_signal_handlers_unblock_matched(ggblist->status, G_SIGNAL_MATCH_FUNC,
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1618 0, 0, NULL, status_selection_changed, NULL);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1619 g_signal_handlers_unblock_matched(ggblist->statustext, G_SIGNAL_MATCH_FUNC,
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1620 0, 0, NULL, status_text_changed, NULL);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1621 }
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1622
14105
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1623 static int
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1624 blist_node_compare_text(GaimBlistNode *n1, GaimBlistNode *n2)
14105
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1625 {
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1626 const char *s1, *s2;
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1627 char *us1, *us2;
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1628 int ret;
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1629
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1630 g_return_val_if_fail(n1->type == n2->type, -1);
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1631
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1632 switch (n1->type)
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1633 {
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1634 case GAIM_BLIST_GROUP_NODE:
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1635 s1 = ((GaimGroup*)n1)->name;
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1636 s2 = ((GaimGroup*)n2)->name;
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1637 break;
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1638 case GAIM_BLIST_CHAT_NODE:
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1639 s1 = gaim_chat_get_name((GaimChat*)n1);
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1640 s2 = gaim_chat_get_name((GaimChat*)n2);
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1641 break;
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1642 case GAIM_BLIST_BUDDY_NODE:
14385
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1643 return gaim_presence_compare(gaim_buddy_get_presence((GaimBuddy*)n1),
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1644 gaim_buddy_get_presence((GaimBuddy*)n2));
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1645 break;
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1646 case GAIM_BLIST_CONTACT_NODE:
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1647 s1 = gaim_contact_get_alias((GaimContact*)n1);
d1e4e986bbd1 [gaim-migrate @ 17091]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14384
diff changeset
1648 s2 = gaim_contact_get_alias((GaimContact*)n2);
14105
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1649 break;
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1650 default:
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1651 return -1;
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1652 }
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1653
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1654 us1 = g_utf8_strup(s1, -1);
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1655 us2 = g_utf8_strup(s2, -1);
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1656 ret = g_utf8_collate(us1, us2);
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1657 g_free(us1);
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1658 g_free(us2);
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1659
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1660 return ret;
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1661 }
eaf7f35635bc [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14065
diff changeset
1662
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1663 static int
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1664 blist_node_compare_status(GaimBlistNode *n1, GaimBlistNode *n2)
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1665 {
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1666 int ret;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1667
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1668 g_return_val_if_fail(n1->type == n2->type, -1);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1669
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1670 switch (n1->type) {
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1671 case GAIM_BLIST_CONTACT_NODE:
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1672 n1 = (GaimBlistNode*)gaim_contact_get_priority_buddy((GaimContact*)n1);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1673 n2 = (GaimBlistNode*)gaim_contact_get_priority_buddy((GaimContact*)n2);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1674 /* now compare the presence of the priority buddies */
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1675 case GAIM_BLIST_BUDDY_NODE:
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1676 ret = gaim_presence_compare(gaim_buddy_get_presence((GaimBuddy*)n1),
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1677 gaim_buddy_get_presence((GaimBuddy*)n2));
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1678 if (ret != 0)
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1679 return ret;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1680 break;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1681 default:
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1682 break;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1683 }
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1684
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1685 /* Sort alphabetically if presence is not comparable */
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1686 ret = blist_node_compare_text(n1, n2);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1687
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1688 return ret;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1689 }
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1690
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1691 static int
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1692 get_contact_log_size(GaimBlistNode *c)
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1693 {
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1694 int log = 0;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1695 GaimBlistNode *node;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1696
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1697 for (node = c->child; node; node = node->next) {
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1698 GaimBuddy *b = (GaimBuddy*)node;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1699 log += gaim_log_get_total_size(GAIM_LOG_IM, b->name, b->account);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1700 }
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1701
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1702 return log;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1703 }
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1704
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1705 static int
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1706 blist_node_compare_log(GaimBlistNode *n1, GaimBlistNode *n2)
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1707 {
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1708 int ret;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1709 GaimBuddy *b1, *b2;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1710
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1711 g_return_val_if_fail(n1->type == n2->type, -1);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1713 switch (n1->type) {
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1714 case GAIM_BLIST_BUDDY_NODE:
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1715 b1 = (GaimBuddy*)n1;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1716 b2 = (GaimBuddy*)n2;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1717 ret = gaim_log_get_total_size(GAIM_LOG_IM, b2->name, b2->account) -
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1718 gaim_log_get_total_size(GAIM_LOG_IM, b1->name, b1->account);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1719 if (ret != 0)
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1720 return ret;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1721 break;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1722 case GAIM_BLIST_CONTACT_NODE:
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1723 ret = get_contact_log_size(n2) - get_contact_log_size(n1);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1724 if (ret != 0)
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1725 return ret;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1726 break;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1727 default:
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1728 break;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1729 }
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1730 ret = blist_node_compare_text(n1, n2);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1731 return ret;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1732 }
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1733
14477
ca36763497d9 [gaim-migrate @ 17195]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14475
diff changeset
1734 static gboolean
ca36763497d9 [gaim-migrate @ 17195]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14475
diff changeset
1735 blist_clicked(GntTree *tree, GntMouseEvent event, int x, int y, gpointer ggblist)
ca36763497d9 [gaim-migrate @ 17195]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14475
diff changeset
1736 {
ca36763497d9 [gaim-migrate @ 17195]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14475
diff changeset
1737 if (event == GNT_RIGHT_MOUSE_DOWN) {
ca36763497d9 [gaim-migrate @ 17195]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14475
diff changeset
1738 draw_context_menu(ggblist);
ca36763497d9 [gaim-migrate @ 17195]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14475
diff changeset
1739 }
ca36763497d9 [gaim-migrate @ 17195]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14475
diff changeset
1740 return FALSE;
ca36763497d9 [gaim-migrate @ 17195]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14475
diff changeset
1741 }
ca36763497d9 [gaim-migrate @ 17195]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14475
diff changeset
1742
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1743 static void
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1744 plugin_action(GntMenuItem *item, gpointer data)
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1745 {
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1746 GaimPluginAction *action = data;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1747 if (action && action->callback)
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1748 action->callback(action);
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1749 }
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1750
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1751 static GntMenuItem *reconstruct_accounts_menu()
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1752 {
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1753 GntWidget *sub;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1754 GntMenuItem *acc, *item;
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1755 GList *iter;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1756
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1757 if (!ggblist)
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1758 return NULL;
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1759
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1760 acc = gnt_menuitem_new(_("Accounts"));
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1761
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1762 sub = gnt_menu_new(GNT_MENU_POPUP);
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1763 gnt_menuitem_set_submenu(acc, GNT_MENU(sub));
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1764
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1765 for (iter = gaim_accounts_get_all_active(); iter;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1766 iter = g_list_delete_link(iter, iter)) {
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1767 GaimAccount *account = iter->data;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1768 GaimConnection *gc = gaim_account_get_connection(account);
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1769 GaimPlugin *prpl;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1770
14630
275c84b1b2a4 [gaim-migrate @ 17376]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14616
diff changeset
1771 if (!gc || !GAIM_CONNECTION_IS_CONNECTED(gc))
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1772 continue;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1773 prpl = gc->prpl;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1774
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1775 if (GAIM_PLUGIN_HAS_ACTIONS(prpl)) {
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1776 GList *acts;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1777 GntWidget *s;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1778
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1779 item = gnt_menuitem_new(gaim_account_get_username(account));
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1780 s = gnt_menu_new(GNT_MENU_POPUP);
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1781 gnt_menuitem_set_submenu(item, GNT_MENU(s));
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1782 gnt_menu_add_item(GNT_MENU(sub), item);
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1783
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1784 for (acts = GAIM_PLUGIN_ACTIONS(prpl, gc); acts;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1785 acts = g_list_delete_link(acts, acts)) {
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1786 GaimPluginAction *action = acts->data;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1787 if (!action)
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1788 continue;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1789
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1790 action->plugin = prpl;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1791 action->context = gc;
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1792
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1793 item = gnt_menuitem_new(action->label);
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1794 gnt_menuitem_set_callback(item, plugin_action, action);
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1795 /* This is to make sure the action is freed when the menu is destroyed */
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1796 g_object_set_data_full(G_OBJECT(item), "plugin_action", action,
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1797 (GDestroyNotify)gaim_plugin_action_free);
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1798 gnt_menu_add_item(GNT_MENU(s), item);
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1799 }
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1800 }
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1801 }
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1802 return acc;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1803 }
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1804
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1805 static void show_offline_cb(GntMenuItem *item, gpointer n)
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1806 {
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1807 gaim_prefs_set_bool(PREF_ROOT "/showoffline",
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1808 !gaim_prefs_get_bool(PREF_ROOT "/showoffline"));
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1809 }
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1810
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1811 static void sort_blist_change_cb(GntMenuItem *item, gpointer n)
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1812 {
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1813 gaim_prefs_set_string(PREF_ROOT "/sort_type", n);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1814 }
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1815
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1816 static void
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1817 create_menu()
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1818 {
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1819 GntWidget *menu, *sub;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1820 GntMenuItem *item;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1821 GntWindow *window;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1822
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1823 if (!ggblist)
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1824 return;
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1825
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1826 window = GNT_WINDOW(ggblist->window);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1827 menu = gnt_menu_new(GNT_MENU_TOPLEVEL);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1828 gnt_window_set_menu(window, GNT_MENU(menu));
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1829
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1830 item = gnt_menuitem_new(_("Options"));
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1831 gnt_menu_add_item(GNT_MENU(menu), item);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1832
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1833 sub = gnt_menu_new(GNT_MENU_POPUP);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1834 gnt_menuitem_set_submenu(item, GNT_MENU(sub));
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1835
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1836 item = gnt_menuitem_new(_("Toggle offline buddies"));
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1837 gnt_menu_add_item(GNT_MENU(sub), item);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1838 gnt_menuitem_set_callback(GNT_MENUITEM(item), show_offline_cb, NULL);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1839
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1840 item = gnt_menuitem_new(_("Sort by status"));
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1841 gnt_menu_add_item(GNT_MENU(sub), item);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1842 gnt_menuitem_set_callback(GNT_MENUITEM(item), sort_blist_change_cb, "status");
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1843
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1844 item = gnt_menuitem_new(_("Sort alphabetically"));
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1845 gnt_menu_add_item(GNT_MENU(sub), item);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1846 gnt_menuitem_set_callback(GNT_MENUITEM(item), sort_blist_change_cb, "text");
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1847
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1848 item = gnt_menuitem_new(_("Sort by log size"));
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1849 gnt_menu_add_item(GNT_MENU(sub), item);
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1850 gnt_menuitem_set_callback(GNT_MENUITEM(item), sort_blist_change_cb, "log");
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1851
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1852 item = reconstruct_accounts_menu();
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1853 gnt_menu_add_item(GNT_MENU(menu), item);
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1854 }
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1855
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1856 void gg_blist_show()
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1857 {
14847
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
1858 blist_show(gaim_get_blist());
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
1859 }
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1860
14847
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
1861 static void
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
1862 blist_show(GaimBuddyList *list)
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
1863 {
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
1864 if (ggblist == NULL)
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
1865 new_list(list);
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
1866 else if (ggblist->window)
d478f3853671 [gaim-migrate @ 17616]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14846
diff changeset
1867 return;
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1868
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1869 ggblist->window = gnt_vwindow_new(FALSE);
13869
5642f4658b59 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13865
diff changeset
1870 gnt_widget_set_name(ggblist->window, "buddylist");
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1871 gnt_box_set_toplevel(GNT_BOX(ggblist->window), TRUE);
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1872 gnt_box_set_title(GNT_BOX(ggblist->window), _("Buddy List"));
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
1873 gnt_box_set_pad(GNT_BOX(ggblist->window), 0);
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1874
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1875 ggblist->tree = gnt_tree_new();
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1876
13853
bbf0470cb348 [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13850
diff changeset
1877 GNT_WIDGET_SET_FLAGS(ggblist->tree, GNT_WIDGET_NO_BORDER);
14010
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1878 gnt_widget_set_size(ggblist->tree, gaim_prefs_get_int(PREF_ROOT "/size/width"),
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1879 gaim_prefs_get_int(PREF_ROOT "/size/height"));
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1880 gnt_widget_set_position(ggblist->window, gaim_prefs_get_int(PREF_ROOT "/position/x"),
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1881 gaim_prefs_get_int(PREF_ROOT "/position/y"));
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1882
14846
c7651586e27b [gaim-migrate @ 17615]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14843
diff changeset
1883 gnt_tree_set_col_width(GNT_TREE(ggblist->tree), 0,
c7651586e27b [gaim-migrate @ 17615]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14843
diff changeset
1884 gaim_prefs_get_int(PREF_ROOT "/size/width") - 1);
c7651586e27b [gaim-migrate @ 17615]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14843
diff changeset
1885
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1886 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->tree);
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1887
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1888 ggblist->status = gnt_combo_box_new();
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1889 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->status);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1890 ggblist->statustext = gnt_entry_new(NULL);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1891 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->statustext);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1892
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1893 gnt_widget_show(ggblist->window);
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1894
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1895 gaim_signal_connect(gaim_connections_get_handle(), "signed-on", gg_blist_get_handle(),
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1896 GAIM_CALLBACK(create_menu), NULL);
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1897 gaim_signal_connect(gaim_connections_get_handle(), "signed-off", gg_blist_get_handle(),
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1898 GAIM_CALLBACK(create_menu), NULL);
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1899 gaim_signal_connect(gaim_blist_get_handle(), "buddy-status-changed", gg_blist_get_handle(),
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1900 GAIM_CALLBACK(buddy_status_changed), ggblist);
13931
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1901 gaim_signal_connect(gaim_blist_get_handle(), "buddy-idle-changed", gg_blist_get_handle(),
917a71dd02eb [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13927
diff changeset
1902 GAIM_CALLBACK(buddy_idle_changed), ggblist);
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1903
13864
c7d84d4c5afa [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13861
diff changeset
1904 #if 0
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1905 gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-on", gg_blist_get_handle(),
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1906 GAIM_CALLBACK(buddy_signed_on), ggblist);
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1907 gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-off", gg_blist_get_handle(),
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1908 GAIM_CALLBACK(buddy_signed_off), ggblist);
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1909
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1910 /* These I plan to use to indicate unread-messages etc. */
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1911 gaim_signal_connect(gaim_conversations_get_handle(), "received-im-msg", gg_blist_get_handle(),
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1912 GAIM_CALLBACK(received_im_msg), list);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1913 gaim_signal_connect(gaim_conversations_get_handle(), "sent-im-msg", gg_blist_get_handle(),
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1914 GAIM_CALLBACK(sent_im_msg), NULL);
13857
d341b5ac1a78 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13853
diff changeset
1915
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1916 gaim_signal_connect(gaim_conversations_get_handle(), "received-chat-msg", gg_blist_get_handle(),
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1917 GAIM_CALLBACK(received_chat_msg), list);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1918 #endif
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1919
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1920 g_signal_connect(G_OBJECT(ggblist->tree), "selection_changed", G_CALLBACK(selection_changed), ggblist);
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1921 g_signal_connect(G_OBJECT(ggblist->tree), "key_pressed", G_CALLBACK(key_pressed), ggblist);
14834
52022b0a9405 [gaim-migrate @ 17601]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14712
diff changeset
1922 g_signal_connect(G_OBJECT(ggblist->tree), "context-menu", G_CALLBACK(context_menu), ggblist);
14477
ca36763497d9 [gaim-migrate @ 17195]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14475
diff changeset
1923 g_signal_connect_after(G_OBJECT(ggblist->tree), "clicked", G_CALLBACK(blist_clicked), ggblist);
13860
c1e3f7c75c3f [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13858
diff changeset
1924 g_signal_connect(G_OBJECT(ggblist->tree), "activate", G_CALLBACK(selection_activate), ggblist);
13916
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1925 g_signal_connect_data(G_OBJECT(ggblist->tree), "gained-focus", G_CALLBACK(draw_tooltip),
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1926 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
13958
6741419af7f7 [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13952
diff changeset
1927 g_signal_connect_data(G_OBJECT(ggblist->tree), "lost-focus", G_CALLBACK(remove_peripherals),
13916
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1928 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
14010
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1929 g_signal_connect(G_OBJECT(ggblist->tree), "size_changed", G_CALLBACK(size_changed_cb), NULL);
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1930 g_signal_connect(G_OBJECT(ggblist->window), "position_set", G_CALLBACK(save_position_cb), NULL);
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1931 g_signal_connect(G_OBJECT(ggblist->window), "destroy", G_CALLBACK(reset_blist_window), NULL);
14010
7573bd40a190 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13964
diff changeset
1932
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1933 /* Status signals */
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1934 gaim_signal_connect(gaim_savedstatuses_get_handle(), "savedstatus-changed", gg_blist_get_handle(),
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1935 GAIM_CALLBACK(savedstatus_changed), NULL);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1936 g_signal_connect(G_OBJECT(ggblist->status), "selection_changed",
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1937 G_CALLBACK(status_selection_changed), NULL);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1938 g_signal_connect(G_OBJECT(ggblist->statustext), "key_pressed",
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1939 G_CALLBACK(status_text_changed), NULL);
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1940
14712
b15c2eaeb67f [gaim-migrate @ 17466]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14708
diff changeset
1941 create_menu();
14616
f1f1dcb26d89 [gaim-migrate @ 17344]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14558
diff changeset
1942
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1943 populate_buddylist();
14041
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1944
27182f83b79b [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14024
diff changeset
1945 savedstatus_changed(gaim_savedstatus_get_current(), NULL);
13850
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1946 }
0e1e59770cb0 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1947
13907
cc60d0861337 [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13897
diff changeset
1948 void gg_blist_uninit()
cc60d0861337 [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13897
diff changeset
1949 {
14024
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1950 if (ggblist == NULL)
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1951 return;
7109e6397a31 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14020
diff changeset
1952
13907
cc60d0861337 [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13897
diff changeset
1953 gnt_widget_destroy(ggblist->window);
cc60d0861337 [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13897
diff changeset
1954 g_free(ggblist);
cc60d0861337 [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13897
diff changeset
1955 ggblist = NULL;
cc60d0861337 [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13897
diff changeset
1956 }
cc60d0861337 [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13897
diff changeset
1957
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
1958 gboolean gg_blist_get_position(int *x, int *y)
13916
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1959 {
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
1960 if (!ggblist || !ggblist->window)
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
1961 return FALSE;
13916
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1962 gnt_widget_get_position(ggblist->window, x, y);
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
1963 return TRUE;
13916
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1964 }
13907
cc60d0861337 [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13897
diff changeset
1965
13916
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1966 void gg_blist_set_position(int x, int y)
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1967 {
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1968 gnt_widget_set_position(ggblist->window, x, y);
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1969 }
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1970
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
1971 gboolean gg_blist_get_size(int *width, int *height)
13916
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1972 {
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
1973 if (!ggblist || !ggblist->window)
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
1974 return FALSE;
13916
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1975 gnt_widget_get_size(ggblist->window, width, height);
14351
1bd09d355f9e [gaim-migrate @ 17054]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14218
diff changeset
1976 return TRUE;
13916
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1977 }
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1978
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1979 void gg_blist_set_size(int width, int height)
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1980 {
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1981 gnt_widget_set_size(ggblist->window, width, height);
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1982 }
fdf2dbed6faa [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 13907
diff changeset
1983