console/gntblist.c

Sun, 20 Aug 2006 02:13:05 +0000

author
Ethan Blanton <elb@pidgin.im>
date
Sun, 20 Aug 2006 02:13:05 +0000
changeset 14276
d1874a008bf1
parent 14260
a21577fbb4d2
child 14280
8698bf845c01
permissions
-rw-r--r--

[gaim-migrate @ 16895]
Make the gntgaim blist a touch more friendly for 80x24 terminals, by
reducing its default height to 18 and removing a hrule.

13939
76fa1e736c99 [gaim-migrate @ 16354]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13931
diff changeset
1 #include <account.h>
76fa1e736c99 [gaim-migrate @ 16354]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13931
diff changeset
2 #include <blist.h>
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
3 #include <notify.h>
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
4 #include <request.h>
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
5 #include <savedstatuses.h>
13939
76fa1e736c99 [gaim-migrate @ 16354]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13931
diff changeset
6 #include <server.h>
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
7 #include <signal.h>
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
8 #include <status.h>
13939
76fa1e736c99 [gaim-migrate @ 16354]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13931
diff changeset
9 #include <util.h>
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
10
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
11 #include "gntgaim.h"
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
12 #include "gntbox.h"
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
13 #include "gntcombobox.h"
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
14 #include "gntentry.h"
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
15 #include "gntlabel.h"
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
16 #include "gntline.h"
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
17 #include "gnttree.h"
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
18
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
19 #include "gntblist.h"
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
20 #include "gntstatus.h"
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
21 #include <string.h>
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
22
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
23 #define PREF_ROOT "/gaim/gnt/blist"
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
24 #define TYPING_TIMEOUT 4000
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
25
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
26 typedef struct
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
27 {
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
28 GntWidget *window;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
29 GntWidget *tree;
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
30
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
31 GntWidget *tooltip;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
32 GaimBlistNode *tnode; /* Who is the tooltip being displayed for? */
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
33
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
34 GntWidget *context;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
35 GaimBlistNode *cnode;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
36
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
37 /* XXX: I am KISSing */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
38 GntWidget *status; /* Dropdown with the statuses */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
39 GntWidget *statustext; /* Status message */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
40 int typing;
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
41 } GGBlist;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
42
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
43 typedef enum
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
44 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
45 STATUS_PRIMITIVE = 0,
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
46 STATUS_SAVED_POPULAR,
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
47 STATUS_SAVED_ALL,
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
48 STATUS_SAVED_NEW
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
49 } StatusType;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
50
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
51 typedef struct
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
52 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
53 StatusType type;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
54 union
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
55 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
56 GaimStatusPrimitive prim;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
57 GaimSavedStatus *saved;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
58 } u;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
59 } StatusBoxItem;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
60
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
61 GGBlist *ggblist;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
62
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
63 static void add_buddy(GaimBuddy *buddy, GGBlist *ggblist);
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
64 static void add_group(GaimGroup *group, GGBlist *ggblist);
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
65 static void add_chat(GaimChat *chat, GGBlist *ggblist);
13927
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
66 static void add_node(GaimBlistNode *node, GGBlist *ggblist);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
67 static void draw_tooltip(GGBlist *ggblist);
14109
1af2b9d5ef3f [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14104
diff changeset
68 static gboolean remove_typing_cb(gpointer null);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
69 static void remove_peripherals(GGBlist *ggblist);
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
70 static const char * get_display_name(GaimBlistNode *node);
14193
fcfd3eea2160 [gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
71 static void savedstatus_changed(GaimSavedStatus *now, GaimSavedStatus *old);
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
72
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
73 static void
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
74 new_node(GaimBlistNode *node)
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
75 {
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
76 }
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
77
13927
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
78 static void add_node(GaimBlistNode *node, GGBlist *ggblist)
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
79 {
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
80 if (GAIM_BLIST_NODE_IS_BUDDY(node))
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
81 add_buddy((GaimBuddy*)node, ggblist);
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
82 else if (GAIM_BLIST_NODE_IS_GROUP(node))
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
83 add_group((GaimGroup*)node, ggblist);
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
84 else if (GAIM_BLIST_NODE_IS_CHAT(node))
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
85 add_chat((GaimChat *)node, ggblist);
13927
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
86 draw_tooltip(ggblist);
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
87 }
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
88
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
89 static void
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
90 remove_tooltip(GGBlist *ggblist)
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
91 {
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
92 gnt_widget_destroy(ggblist->tooltip);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
93 ggblist->tooltip = NULL;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
94 ggblist->tnode = NULL;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
95 }
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
96
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
97 static void
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
98 node_remove(GaimBuddyList *list, GaimBlistNode *node)
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
99 {
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
100 GGBlist *ggblist = list->ui_data;
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
101
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
102 if (ggblist == NULL || node->ui_data == NULL)
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
103 return;
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
104
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
105 gnt_tree_remove(GNT_TREE(ggblist->tree), node);
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
106 node->ui_data = NULL;
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
107
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
108 if (GAIM_BLIST_NODE_IS_BUDDY(node))
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
109 {
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
110 GaimGroup *group = gaim_buddy_get_group((GaimBuddy*)node);
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
111 if (gaim_blist_get_group_online_count(group) == 0)
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
112 node_remove(list, (GaimBlistNode*)group);
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
113 }
13927
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
114 draw_tooltip(ggblist);
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
115 }
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
116
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
117 static void
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
118 node_update(GaimBuddyList *list, GaimBlistNode *node)
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
119 {
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
120 if (list->ui_data == NULL)
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
121 return;
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
122
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
123 if (node->ui_data != NULL)
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
124 {
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
125 gnt_tree_change_text(GNT_TREE(ggblist->tree), node,
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
126 0, get_display_name(node));
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
127 }
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
128
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
129 if (GAIM_BLIST_NODE_IS_BUDDY(node))
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
130 {
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
131 GaimBuddy *buddy = (GaimBuddy*)node;
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
132 if (gaim_presence_is_online(gaim_buddy_get_presence(buddy)))
13927
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
133 add_node((GaimBlistNode*)buddy, list->ui_data);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
134 else
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
135 node_remove(gaim_get_blist(), node);
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
136 }
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
137 else if (GAIM_BLIST_NODE_IS_CHAT(node))
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
138 {
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
139 add_chat((GaimChat *)node, list->ui_data);
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
140 }
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
141 }
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
142
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
143 static void
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
144 new_list(GaimBuddyList *list)
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
145 {
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
146 }
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
147
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
148 static void
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
149 add_buddy_cb(void *data, GaimRequestFields *allfields)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
150 {
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
151 const char *username = gaim_request_fields_get_string(allfields, "screenname");
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
152 const char *alias = gaim_request_fields_get_string(allfields, "alias");
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
153 const char *group = gaim_request_fields_get_string(allfields, "group");
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
154 GaimAccount *account = gaim_request_fields_get_account(allfields, "account");
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
155 const char *error = NULL;
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
156 GaimGroup *grp;
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
157 GaimBuddy *buddy;
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
158
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
159 if (!username)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
160 error = _("You must provide a screename for the buddy.");
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
161 else if (!group)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
162 error = _("You must provide a group.");
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
163 else if (!account)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
164 error = _("You must select an account.");
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
165
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
166 if (error)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
167 {
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
168 gaim_notify_error(NULL, _("Error"), _("Error adding buddy"), error);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
169 return;
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
170 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
171
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
172 grp = gaim_find_group(group);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
173 if (!grp)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
174 {
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
175 grp = gaim_group_new(group);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
176 gaim_blist_add_group(grp, NULL);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
177 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
178
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
179 buddy = gaim_buddy_new(account, username, alias);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
180 gaim_blist_add_buddy(buddy, NULL, grp, NULL);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
181 gaim_account_add_buddy(account, buddy);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
182 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
183
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
184 static void
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
185 gg_request_add_buddy(GaimAccount *account, const char *username, const char *grp, const char *alias)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
186 {
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
187 GaimRequestFields *fields = gaim_request_fields_new();
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
188 GaimRequestFieldGroup *group = gaim_request_field_group_new(NULL);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
189 GaimRequestField *field;
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
190
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
191 gaim_request_fields_add_group(fields, group);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
192
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
193 field = gaim_request_field_string_new("screenname", _("Screen Name"), username, FALSE);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
194 gaim_request_field_group_add_field(group, field);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
195
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
196 field = gaim_request_field_string_new("alias", _("Alias"), alias, FALSE);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
197 gaim_request_field_group_add_field(group, field);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
198
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
199 field = gaim_request_field_string_new("group", _("Group"), grp, FALSE);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
200 gaim_request_field_group_add_field(group, field);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
201
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
202 field = gaim_request_field_account_new("account", _("Account"), NULL);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
203 gaim_request_field_account_set_show_all(field, FALSE);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
204 if (account)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
205 gaim_request_field_account_set_value(field, account);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
206 gaim_request_field_group_add_field(group, field);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
207
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
208 gaim_request_fields(NULL, _("Add Buddy"), NULL, _("Please enter buddy information."),
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
209 fields, _("Add"), G_CALLBACK(add_buddy_cb), _("Cancel"), NULL, NULL);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
210 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
211
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
212 static void
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
213 add_group_cb(gpointer null, const char *group)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
214 {
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
215 GaimGroup *grp;
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
216
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
217 if (!group || !*group)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
218 {
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
219 gaim_notify_error(NULL, _("Error"), _("Error adding group"),
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
220 _("You must give a name for the group to add."));
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
221 return;
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
222 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
223
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
224 grp = gaim_find_group(group);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
225 if (!grp)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
226 {
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
227 grp = gaim_group_new(group);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
228 gaim_blist_add_group(grp, NULL);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
229 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
230 else
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
231 {
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
232 gaim_notify_error(NULL, _("Error"), _("Error adding group"),
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
233 _("A group with the name already exists."));
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
234 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
235 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
236
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
237 static void
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
238 gg_request_add_group()
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
239 {
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
240 gaim_request_input(NULL, _("Add Group"), NULL, _("Enter the name of the group"),
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
241 NULL, FALSE, FALSE, NULL,
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
242 _("Add"), G_CALLBACK(add_group_cb), _("Cancel"), NULL, NULL);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
243 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
244
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
245 static GaimBlistUiOps blist_ui_ops =
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
246 {
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
247 new_list,
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
248 new_node,
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
249 NULL,
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
250 node_update, /* This doesn't do crap */
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
251 node_remove,
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
252 NULL,
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
253 NULL,
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
254 .request_add_buddy = gg_request_add_buddy,
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
255 NULL,
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
256 .request_add_group = gg_request_add_group
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
257 };
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
258
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
259 static gpointer
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
260 gg_blist_get_handle()
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
261 {
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
262 static int handle;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
263
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
264 return &handle;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
265 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
266
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
267 static void
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
268 add_group(GaimGroup *group, GGBlist *ggblist)
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
269 {
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
270 GaimBlistNode *node = (GaimBlistNode *)group;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
271 if (node->ui_data)
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
272 return;
14026
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14021
diff changeset
273 gnt_tree_remove(GNT_TREE(ggblist->tree), group);
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
274 node->ui_data = gnt_tree_add_row_after(GNT_TREE(ggblist->tree), group,
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
275 gnt_tree_create_row(GNT_TREE(ggblist->tree), get_display_name(node)), NULL, NULL);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
276 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
277
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
278 static const char *
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
279 get_display_name(GaimBlistNode *node)
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
280 {
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
281 static char text[2096];
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
282 char status[8] = " ";
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
283 const char *name = NULL;
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
284
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
285 if (GAIM_BLIST_NODE_IS_BUDDY(node))
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
286 {
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
287 GaimBuddy *buddy = (GaimBuddy *)node;
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
288 GaimStatusPrimitive prim;
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
289 GaimPresence *presence;
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
290 GaimStatus *now;
13989
9a647311c9ac [gaim-migrate @ 16447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13978
diff changeset
291 gboolean ascii = gnt_ascii_only();
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
292
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
293 presence = gaim_buddy_get_presence(buddy);
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
294 now = gaim_presence_get_active_status(presence);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
295
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
296 prim = gaim_status_type_get_primitive(gaim_status_get_type(now));
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
297
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
298 switch(prim)
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
299 {
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
300 case GAIM_STATUS_OFFLINE:
13989
9a647311c9ac [gaim-migrate @ 16447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13978
diff changeset
301 strncpy(status, ascii ? "x" : "⊗", sizeof(status) - 1);
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
302 break;
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
303 case GAIM_STATUS_AVAILABLE:
13989
9a647311c9ac [gaim-migrate @ 16447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13978
diff changeset
304 strncpy(status, ascii ? "o" : "â—¯", sizeof(status) - 1);
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
305 break;
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
306 default:
13989
9a647311c9ac [gaim-migrate @ 16447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13978
diff changeset
307 strncpy(status, ascii ? "." : "⊖", sizeof(status) - 1);
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
308 break;
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
309 }
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
310 name = gaim_buddy_get_alias(buddy);
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
311 }
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
312 else if (GAIM_BLIST_NODE_IS_CHAT(node))
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
313 {
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
314 GaimChat *chat = (GaimChat*)node;
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
315 name = gaim_chat_get_name(chat);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13946
diff changeset
316
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13946
diff changeset
317 strncpy(status, "~", sizeof(status) - 1);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
318 }
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
319 else if (GAIM_BLIST_NODE_IS_GROUP(node))
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
320 return ((GaimGroup*)node)->name;
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
321
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
322 snprintf(text, sizeof(text) - 1, "%s %s", status, name);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
323
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
324 return text;
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
325 }
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
326
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
327 static void
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
328 add_chat(GaimChat *chat, GGBlist *ggblist)
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
329 {
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
330 GaimGroup *group;
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
331 GaimBlistNode *node = (GaimBlistNode *)chat;
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
332 if (node->ui_data)
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
333 return;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
334 if (!gaim_account_is_connected(chat->account))
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
335 return;
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
336
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
337 group = gaim_chat_get_group(chat);
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
338 add_node((GaimBlistNode*)group, ggblist);
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
339
14026
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14021
diff changeset
340 gnt_tree_remove(GNT_TREE(ggblist->tree), chat);
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
341 node->ui_data = gnt_tree_add_row_after(GNT_TREE(ggblist->tree), chat,
14026
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14021
diff changeset
342 gnt_tree_create_row(GNT_TREE(ggblist->tree), get_display_name(node)),
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14021
diff changeset
343 group, NULL);
14167
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
344
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
345 if (gaim_blist_node_get_bool((GaimBlistNode*)chat, "gnt-autojoin"))
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
346 serv_join_chat(gaim_account_get_connection(chat->account), chat->components);
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
347 }
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
348
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
349 static void
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
350 add_buddy(GaimBuddy *buddy, GGBlist *ggblist)
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
351 {
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
352 GaimGroup *group;
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
353 GaimBlistNode *node = (GaimBlistNode *)buddy;
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
354 if (node->ui_data)
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
355 return;
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
356
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
357 group = gaim_buddy_get_group(buddy);
13927
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
358 add_node((GaimBlistNode*)group, ggblist);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
359
14026
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14021
diff changeset
360 gnt_tree_remove(GNT_TREE(ggblist->tree), buddy);
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
361 node->ui_data = gnt_tree_add_row_after(GNT_TREE(ggblist->tree), buddy,
14026
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14021
diff changeset
362 gnt_tree_create_row(GNT_TREE(ggblist->tree), get_display_name(node)),
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14021
diff changeset
363 group, NULL);
13993
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
364 if (gaim_presence_is_idle(gaim_buddy_get_presence(buddy)))
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
365 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), buddy, GNT_TEXT_FLAG_DIM);
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
366 else
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
367 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), buddy, 0);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
368 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
369
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
370 #if 0
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
371 static void
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
372 buddy_signed_on(GaimBuddy *buddy, GGBlist *ggblist)
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
373 {
13927
c2f57a00bc1f [gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13926
diff changeset
374 add_node((GaimBlistNode*)buddy, ggblist);
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
375 }
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
376
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
377 static void
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
378 buddy_signed_off(GaimBuddy *buddy, GGBlist *ggblist)
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
379 {
13923
5552f69232b8 [gaim-migrate @ 16322]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13922
diff changeset
380 node_remove(gaim_get_blist(), (GaimBlistNode*)buddy);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
381 }
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
382 #endif
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
383
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
384 GaimBlistUiOps *gg_blist_get_ui_ops()
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
385 {
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
386 return &blist_ui_ops;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
387 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
388
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
389 static void
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
390 selection_activate(GntWidget *widget, GGBlist *ggblist)
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
391 {
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
392 GntTree *tree = GNT_TREE(ggblist->tree);
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
393 GaimBlistNode *node = gnt_tree_get_selection_data(tree);
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
394
14005
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13993
diff changeset
395 if (!node)
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13993
diff changeset
396 return;
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13993
diff changeset
397
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
398 if (GAIM_BLIST_NODE_IS_BUDDY(node))
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
399 {
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
400 GaimBuddy *buddy = (GaimBuddy *)node;
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
401 gaim_conversation_new(GAIM_CONV_TYPE_IM,
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
402 gaim_buddy_get_account(buddy),
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
403 gaim_buddy_get_name(buddy));
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
404 }
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
405 else if (GAIM_BLIST_NODE_IS_CHAT(node))
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
406 {
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
407 GaimChat *chat = (GaimChat*)node;
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
408 serv_join_chat(chat->account->gc, chat->components);
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
409 }
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
410 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
411
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
412 static void
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
413 remove_context_menu(GGBlist *ggblist)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
414 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
415 if (ggblist->context)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
416 gnt_widget_destroy(ggblist->context->parent);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
417 ggblist->context = NULL;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
418 ggblist->cnode = NULL;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
419 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
420
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
421 static void
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
422 gnt_append_menu_action(GntTree *tree, GaimMenuAction *action, gpointer parent)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
423 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
424 GList *list;
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
425 if (action == NULL)
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
426 return;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
427
14026
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14021
diff changeset
428 gnt_tree_add_row_after(tree, action,
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14021
diff changeset
429 gnt_tree_create_row(tree, action->label), parent, NULL);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
430 for (list = action->children; list; list = list->next)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
431 gnt_append_menu_action(tree, list->data, action);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
432 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
433
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
434 static void
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
435 append_proto_menu(GntTree *tree, GaimConnection *gc, GaimBlistNode *node)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
436 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
437 GList *list;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
438 GaimPluginProtocolInfo *prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
439
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
440 if(!prpl_info || !prpl_info->blist_node_menu)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
441 return;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
442
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
443 for(list = prpl_info->blist_node_menu(node); list;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
444 list = g_list_delete_link(list, list))
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
445 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
446 GaimMenuAction *act = (GaimMenuAction *) list->data;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
447 gnt_append_menu_action(tree, act, NULL);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
448 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
449 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
450
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
451 static void
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
452 add_custom_action(GntTree *tree, const char *label, GaimCallback callback,
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
453 gpointer data)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
454 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
455 GaimMenuAction *action = gaim_menu_action_new(label, callback, data, NULL);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
456 gnt_append_menu_action(tree, action, NULL);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
457 g_signal_connect_swapped(G_OBJECT(tree), "destroy",
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
458 G_CALLBACK(gaim_menu_action_free), action);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
459 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
460
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
461 static void
14167
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
462 context_menu_toggle(GntTree *tree, GaimMenuAction *action, gpointer null)
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
463 {
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
464 gboolean sel = gnt_tree_get_choice(tree, action);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
465 gaim_blist_node_set_bool(action->data, "gnt-autojoin", sel);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
466 }
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
467
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
468 static void
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
469 create_chat_menu(GntTree *tree, GaimChat *chat)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
470 {
14167
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
471 GaimMenuAction *action = gaim_menu_action_new(_("Auto-join"), NULL, chat, NULL);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
472
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
473 gnt_tree_add_choice(tree, action, gnt_tree_create_row(tree, action->label), NULL, NULL);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
474 gnt_tree_set_choice(tree, action, gaim_blist_node_get_bool((GaimBlistNode*)chat, "gnt-autojoin"));
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
475
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
476 g_signal_connect_swapped(G_OBJECT(tree), "destroy",
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
477 G_CALLBACK(gaim_menu_action_free), action);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
478 g_signal_connect(G_OBJECT(tree), "toggled", G_CALLBACK(context_menu_toggle), NULL);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
479 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
480
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
481 static void
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
482 gg_add_buddy(GaimGroup *grp, GaimBlistNode *node)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
483 {
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
484 gaim_blist_request_add_buddy(NULL, NULL, grp->name, NULL);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
485 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
486
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
487 static void
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
488 gg_add_group(GaimGroup *grp, GaimBlistNode *node)
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
489 {
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
490 gaim_blist_request_add_group();
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
491 }
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
492
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
493 static void
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
494 create_group_menu(GntTree *tree, GaimGroup *group)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
495 {
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
496 add_custom_action(tree, _("Add Buddy"),
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
497 GAIM_CALLBACK(gg_add_buddy), group);
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
498 add_custom_action(tree, _("Add Group"),
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
499 GAIM_CALLBACK(gg_add_group), group);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
500 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
501
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
502 static void
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
503 gg_blist_get_buddy_info_cb(GaimBuddy *buddy, GaimBlistNode *null)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
504 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
505 serv_get_info(buddy->account->gc, gaim_buddy_get_name(buddy));
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
506 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
507
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
508 static void
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
509 create_buddy_menu(GntTree *tree, GaimBuddy *buddy)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
510 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
511 GaimPluginProtocolInfo *prpl_info;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
512
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
513 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(buddy->account->gc->prpl);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
514 if (prpl_info && prpl_info->get_info)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
515 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
516 add_custom_action(tree, _("Get Info"),
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
517 GAIM_CALLBACK(gg_blist_get_buddy_info_cb), buddy);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
518 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
519
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
520 #if 0
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
521 add_custom_action(tree, _("Add Buddy Pounce"),
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
522 GAIM_CALLBACK(gg_blist_add_buddy_pounce_cb)), buddy);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
523
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
524 if (prpl_info && prpl_info->send_file)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
525 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
526 if (!prpl_info->can_receive_file ||
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
527 prpl_info->can_receive_file(buddy->account->gc, buddy->name))
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
528 add_custom_action(tree, _("Send File"),
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
529 GAIM_CALLBACK(gg_blist_show_file_cb)), buddy);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
530 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
531
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
532 add_custom_action(tree, _("View Log"),
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
533 GAIM_CALLBACK(gg_blist_view_log_cb)), buddy);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
534 #endif
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
535
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
536 /* Protocol actions */
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
537 append_proto_menu(tree,
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
538 gaim_account_get_connection(gaim_buddy_get_account(buddy)),
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
539 (GaimBlistNode*)buddy);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
540 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
541
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
542 static void
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
543 append_extended_menu(GntTree *tree, GaimBlistNode *node)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
544 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
545 GList *iter;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
546
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
547 for (iter = gaim_blist_node_get_extended_menu(node);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
548 iter; iter = g_list_delete_link(iter, iter))
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
549 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
550 gnt_append_menu_action(tree, iter->data, NULL);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
551 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
552 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
553
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
554 static void
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
555 context_menu_callback(GntTree *tree, GGBlist *ggblist)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
556 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
557 GaimMenuAction *action = gnt_tree_get_selection_data(tree);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
558 GaimBlistNode *node = ggblist->cnode;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
559
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
560 if (action)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
561 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
562 void (*callback)(GaimBlistNode *, gpointer);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
563 callback = (void (*)(GaimBlistNode *, gpointer))action->callback;
14082
338ab21fb964 [gaim-migrate @ 16617]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14080
diff changeset
564 if (callback)
338ab21fb964 [gaim-migrate @ 16617]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14080
diff changeset
565 callback(node, action->data);
338ab21fb964 [gaim-migrate @ 16617]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14080
diff changeset
566 else
338ab21fb964 [gaim-migrate @ 16617]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14080
diff changeset
567 return;
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
568 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
569
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
570 remove_context_menu(ggblist);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
571 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
572
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
573 static void
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
574 rename_blist_node(GaimBlistNode *node, const char *newname)
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
575 {
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
576 const char *name = newname;
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
577 if (name && !*name)
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
578 name = NULL;
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
579
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
580 if (GAIM_BLIST_NODE_IS_BUDDY(node))
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
581 gaim_blist_alias_buddy((GaimBuddy*)node, name);
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
582 else if (GAIM_BLIST_NODE_IS_CHAT(node))
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
583 gaim_blist_alias_chat((GaimChat*)node, name);
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
584 else if (GAIM_BLIST_NODE_IS_GROUP(node))
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
585 gaim_blist_rename_group((GaimGroup*)node, name);
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
586 else
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
587 g_return_if_reached();
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
588 }
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
589
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
590 static void
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
591 gg_blist_rename_node_cb(GaimBlistNode *node, GaimBlistNode *null)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
592 {
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
593 const char *name = NULL;
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
594 char *prompt;
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
595
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
596 if (GAIM_BLIST_NODE_IS_BUDDY(node))
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
597 name = gaim_buddy_get_contact_alias((GaimBuddy*)node);
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
598 else if (GAIM_BLIST_NODE_IS_CHAT(node))
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
599 name = gaim_chat_get_name((GaimChat*)node);
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
600 else if (GAIM_BLIST_NODE_IS_GROUP(node))
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
601 name = ((GaimGroup*)node)->name;
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
602 else
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
603 g_return_if_reached();
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
604
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
605 prompt = g_strdup_printf(_("Please enter the new name for %s"), name);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
606
14080
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
607 gaim_request_input(node, _("Rename"), prompt, _("Enter empty string to reset the name."),
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
608 name, FALSE, FALSE, NULL, _("Rename"), G_CALLBACK(rename_blist_node),
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
609 _("Cancel"), NULL, node);
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
610
7fad848bbe7b [gaim-migrate @ 16614]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
611 g_free(prompt);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
612 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
613
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
614 /* Xeroxed from gtkdialogs.c:gaim_gtkdialogs_remove_group_cb*/
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
615 static void
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
616 remove_group(GaimGroup *group)
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
617 {
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
618 GaimBlistNode *cnode, *bnode;
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
619
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
620 cnode = ((GaimBlistNode*)group)->child;
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
621
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
622 while (cnode) {
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
623 if (GAIM_BLIST_NODE_IS_CONTACT(cnode)) {
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
624 bnode = cnode->child;
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
625 cnode = cnode->next;
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
626 while (bnode) {
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
627 GaimBuddy *buddy;
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
628 if (GAIM_BLIST_NODE_IS_BUDDY(bnode)) {
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
629 buddy = (GaimBuddy*)bnode;
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
630 bnode = bnode->next;
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
631 if (gaim_account_is_connected(buddy->account)) {
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
632 gaim_account_remove_buddy(buddy->account, buddy, group);
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
633 gaim_blist_remove_buddy(buddy);
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
634 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
635 } else {
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
636 bnode = bnode->next;
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
637 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
638 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
639 } else if (GAIM_BLIST_NODE_IS_CHAT(cnode)) {
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
640 GaimChat *chat = (GaimChat *)cnode;
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
641 cnode = cnode->next;
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
642 if (gaim_account_is_connected(chat->account))
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
643 gaim_blist_remove_chat(chat);
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
644 } else {
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
645 cnode = cnode->next;
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
646 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
647 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
648
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
649 gaim_blist_remove_group(group);
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
650 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
651
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
652 static void
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
653 gg_blist_remove_node(GaimBlistNode *node)
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
654 {
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
655 if (GAIM_BLIST_NODE_IS_BUDDY(node))
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
656 {
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
657 GaimBuddy *buddy = (GaimBuddy*)node;
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
658 GaimGroup *group = gaim_buddy_get_group(buddy);
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
659 gaim_account_remove_buddy(gaim_buddy_get_account(buddy), buddy, group);
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
660 gaim_blist_remove_buddy(buddy);
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
661 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
662 else if (GAIM_BLIST_NODE_IS_CHAT(node))
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
663 {
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
664 gaim_blist_remove_chat((GaimChat*)node);
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
665 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
666 else if (GAIM_BLIST_NODE_IS_GROUP(node))
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
667 {
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
668 remove_group((GaimGroup*)node);
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
669 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
670 }
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
671
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
672 static void
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
673 gg_blist_remove_node_cb(GaimBlistNode *node, GaimBlistNode *null)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
674 {
14260
a21577fbb4d2 [gaim-migrate @ 16870]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
675 char *primary;
a21577fbb4d2 [gaim-migrate @ 16870]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
676 const char *name, *sec = NULL;
14126
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
677
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
678 if (GAIM_BLIST_NODE_IS_BUDDY(node))
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
679 name = gaim_buddy_get_name((GaimBuddy*)node);
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
680 else if (GAIM_BLIST_NODE_IS_CHAT(node))
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
681 name = gaim_chat_get_name((GaimChat*)node);
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
682 else if (GAIM_BLIST_NODE_IS_GROUP(node))
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
683 {
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
684 name = ((GaimGroup*)node)->name;
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
685 sec = _("Removing this group will also remove all the buddies in the group");
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
686 }
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
687 else
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
688 return;
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
689
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
690 primary = g_strdup_printf(_("Are you sure you want to remove %s?"), name);
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
691
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
692 /* XXX: anything to do with the returned ui-handle? */
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
693 gaim_request_action(node, _("Confirm Remove"),
14126
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
694 primary, sec,
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
695 1, node, 2,
14125
2a14281b124b [gaim-migrate @ 16682]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14124
diff changeset
696 _("Remove"), gg_blist_remove_node,
14126
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
697 _("Cancel"), NULL);
176d35315165 [gaim-migrate @ 16683]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14125
diff changeset
698 g_free(primary);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
699 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
700
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
701 static void
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
702 draw_context_menu(GGBlist *ggblist)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
703 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
704 GaimBlistNode *node = NULL;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
705 GntWidget *context = NULL, *window = NULL;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
706 GntTree *tree = NULL;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
707 int x, y, top, width;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
708 char *title = NULL;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
709
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
710 tree = GNT_TREE(ggblist->tree);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
711
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
712 if (ggblist->context)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
713 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
714 remove_context_menu(ggblist);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
715 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
716
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
717 node = gnt_tree_get_selection_data(tree);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
718
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
719 if (node == NULL)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
720 return;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
721 if (ggblist->tooltip)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
722 remove_tooltip(ggblist);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
723
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
724 ggblist->cnode = node;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
725 ggblist->context = context = gnt_tree_new();
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
726 GNT_WIDGET_SET_FLAGS(context, GNT_WIDGET_NO_BORDER);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
727 gnt_widget_set_name(context, "context menu");
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
728 g_signal_connect(G_OBJECT(context), "activate", G_CALLBACK(context_menu_callback), ggblist);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
729
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
730 if (GAIM_BLIST_NODE_IS_BUDDY(node))
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
731 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
732 GaimBuddy *buddy = (GaimBuddy *)node;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
733 create_buddy_menu(GNT_TREE(context), buddy);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
734 title = g_strdup(gaim_buddy_get_name(buddy));
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
735 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
736 else if (GAIM_BLIST_NODE_IS_CHAT(node))
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
737 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
738 GaimChat *chat = (GaimChat*)node;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
739 create_chat_menu(GNT_TREE(context), chat);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
740 title = g_strdup(gaim_chat_get_name(chat));
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
741 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
742 else if (GAIM_BLIST_NODE_IS_GROUP(node))
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
743 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
744 GaimGroup *group = (GaimGroup *)node;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
745 create_group_menu(GNT_TREE(context), group);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
746 title = g_strdup(group->name);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
747 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
748
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
749 append_extended_menu(GNT_TREE(context), node);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
750
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
751 /* These are common for everything */
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
752 add_custom_action(GNT_TREE(context), _("Rename"),
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
753 GAIM_CALLBACK(gg_blist_rename_node_cb), node);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
754 add_custom_action(GNT_TREE(context), _("Remove"),
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
755 GAIM_CALLBACK(gg_blist_remove_node_cb), node);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
756
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
757 window = gnt_vbox_new(FALSE);
14124
181ebb961493 [gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
758 GNT_WIDGET_SET_FLAGS(window, GNT_WIDGET_TRANSIENT);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
759 gnt_box_set_toplevel(GNT_BOX(window), TRUE);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
760 gnt_box_set_title(GNT_BOX(window), title);
14082
338ab21fb964 [gaim-migrate @ 16617]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14080
diff changeset
761
338ab21fb964 [gaim-migrate @ 16617]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14080
diff changeset
762 gnt_widget_set_size(context, 0, g_list_length(GNT_TREE(context)->list));
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
763 gnt_box_add_widget(GNT_BOX(window), context);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
764
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
765 /* Set the position for the popup */
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
766 gnt_widget_get_position(GNT_WIDGET(tree), &x, &y);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
767 gnt_widget_get_size(GNT_WIDGET(tree), &width, NULL);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
768 top = gnt_tree_get_selection_visible_line(tree);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
769
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
770 x += width;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
771 y += top - 1;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
772
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
773 gnt_widget_set_position(window, x, y);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
774 gnt_widget_draw(window);
14021
a633de85f90e [gaim-migrate @ 16511]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14020
diff changeset
775 g_free(title);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
776 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
777
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
778 static void
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
779 draw_tooltip(GGBlist *ggblist)
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
780 {
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
781 GaimBlistNode *node;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
782 int x, y, top, width;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
783 GString *str;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
784 GaimPlugin *prpl;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
785 GaimPluginProtocolInfo *prpl_info;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
786 GaimAccount *account;
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
787 GntTree *tree;
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
788 GntWidget *widget, *box;
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
789 char *title = NULL;
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
790
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
791 widget = ggblist->tree;
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
792 tree = GNT_TREE(widget);
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
793
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
794 if (!gnt_widget_has_focus(ggblist->tree))
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
795 return;
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
796
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
797 if (ggblist->context)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
798 return;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
799
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
800 if (ggblist->tooltip)
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
801 {
13931
a0a91e17f899 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13927
diff changeset
802 /* XXX: Once we can properly redraw on expose events, this can be removed at the end
a0a91e17f899 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13927
diff changeset
803 * to avoid the blinking*/
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
804 remove_tooltip(ggblist);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
805 }
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
806
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
807 node = gnt_tree_get_selection_data(tree);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
808 if (!node)
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
809 return;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
810
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
811 str = g_string_new("");
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
812
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
813 if (GAIM_BLIST_NODE_IS_BUDDY(node))
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
814 {
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
815 GaimBuddy *buddy = (GaimBuddy *)node;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
816 account = gaim_buddy_get_account(buddy);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
817
14014
223d99ce2f06 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
818 g_string_append_printf(str, _("Account: %s (%s)"),
223d99ce2f06 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
819 gaim_account_get_username(account),
223d99ce2f06 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
820 gaim_account_get_protocol_name(account));
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
821
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
822 prpl = gaim_find_prpl(gaim_account_get_protocol_id(account));
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
823 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
824 if (prpl_info && prpl_info->tooltip_text)
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
825 {
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
826 GString *tip = g_string_new("");
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
827 char *strip, *br;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
828 prpl_info->tooltip_text(buddy, tip, TRUE);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
829
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
830 br = gaim_strreplace(tip->str, "\n", "<br>");
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
831 strip = gaim_markup_strip_html(br);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
832 g_string_append(str, strip);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
833 g_string_free(tip, TRUE);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
834 g_free(strip);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
835 g_free(br);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
836 }
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
837
14127
6c79d410dd9c [gaim-migrate @ 16686]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14126
diff changeset
838 if (gaim_prefs_get_bool("/gaim/gnt/blist/idletime"))
6c79d410dd9c [gaim-migrate @ 16686]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14126
diff changeset
839 {
6c79d410dd9c [gaim-migrate @ 16686]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14126
diff changeset
840 GaimPresence *pre = gaim_buddy_get_presence(buddy);
6c79d410dd9c [gaim-migrate @ 16686]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14126
diff changeset
841 if (gaim_presence_is_idle(pre))
6c79d410dd9c [gaim-migrate @ 16686]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14126
diff changeset
842 {
6c79d410dd9c [gaim-migrate @ 16686]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14126
diff changeset
843 time_t idle = gaim_presence_get_idle_time(pre);
6c79d410dd9c [gaim-migrate @ 16686]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14126
diff changeset
844 char *st = gaim_str_seconds_to_string(time(NULL) - idle);
6c79d410dd9c [gaim-migrate @ 16686]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14126
diff changeset
845 g_string_append_printf(str, _("\nIdle: %s"), st);
6c79d410dd9c [gaim-migrate @ 16686]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14126
diff changeset
846 g_free(st);
6c79d410dd9c [gaim-migrate @ 16686]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14126
diff changeset
847 }
6c79d410dd9c [gaim-migrate @ 16686]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14126
diff changeset
848 }
6c79d410dd9c [gaim-migrate @ 16686]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14126
diff changeset
849
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
850 title = g_strdup(gaim_buddy_get_name(buddy));
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
851 }
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
852 else if (GAIM_BLIST_NODE_IS_GROUP(node))
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
853 {
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
854 GaimGroup *group = (GaimGroup *)node;
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
855
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
856 g_string_append_printf(str, _("Online: %d\nTotal: %d"),
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
857 gaim_blist_get_group_online_count(group),
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
858 gaim_blist_get_group_size(group, FALSE));
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
859
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
860 title = g_strdup(group->name);
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
861 }
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
862 else if (GAIM_BLIST_NODE_IS_CHAT(node))
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
863 {
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
864 GaimChat *chat = (GaimChat *)node;
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
865 GaimAccount *account = chat->account;
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
866
14014
223d99ce2f06 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
867 g_string_append_printf(str, _("Account: %s (%s)"),
223d99ce2f06 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
868 gaim_account_get_username(account),
223d99ce2f06 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
869 gaim_account_get_protocol_name(account));
13946
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
870
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
871 title = g_strdup(gaim_chat_get_name(chat));
c895c1eeb4d7 [gaim-migrate @ 16364]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13939
diff changeset
872 }
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
873 else
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
874 {
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
875 g_string_free(str, TRUE);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
876 return;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
877 }
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
878
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
879 gnt_widget_get_position(widget, &x, &y);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
880 gnt_widget_get_size(widget, &width, NULL);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
881 top = gnt_tree_get_selection_visible_line(tree);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
882
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
883 x += width;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
884 y += top - 1;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
885
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
886 box = gnt_box_new(FALSE, FALSE);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
887 gnt_box_set_toplevel(GNT_BOX(box), TRUE);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
888 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
889 gnt_box_set_title(GNT_BOX(box), title);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
890
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13947
diff changeset
891 gnt_box_add_widget(GNT_BOX(box), gnt_label_new(str->str));
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
892
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
893 gnt_widget_set_position(box, x, y);
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
894 GNT_WIDGET_UNSET_FLAGS(box, GNT_WIDGET_CAN_TAKE_FOCUS);
14104
31fd1353462d [gaim-migrate @ 16648]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
895 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_TRANSIENT);
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
896 gnt_widget_draw(box);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
897
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
898 g_free(title);
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
899 g_string_free(str, TRUE);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
900 ggblist->tooltip = box;
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
901 ggblist->tnode = node;
13931
a0a91e17f899 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13927
diff changeset
902
a0a91e17f899 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13927
diff changeset
903 gnt_widget_set_name(ggblist->tooltip, "tooltip");
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
904 }
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
905
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
906 static void
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
907 selection_changed(GntWidget *widget, gpointer old, gpointer current, GGBlist *ggblist)
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
908 {
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
909 draw_tooltip(ggblist);
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
910 }
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
911
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
912 static gboolean
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
913 key_pressed(GntWidget *widget, const char *text, GGBlist *ggblist)
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
914 {
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
915 gboolean stop = FALSE, ret = FALSE;
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
916 if (text[0] == 27 && text[1] == 0)
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
917 {
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
918 /* Escape was pressed */
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
919 remove_peripherals(ggblist);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
920 stop = TRUE;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
921 ret = TRUE;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
922 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
923
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
924 if (ggblist->context)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
925 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
926 ret = gnt_widget_key_pressed(ggblist->context, text);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
927 stop = TRUE;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
928 }
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
929
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
930 if (text[0] == 27)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
931 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
932 if (strcmp(text + 1, GNT_KEY_POPUP) == 0)
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
933 {
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
934 draw_context_menu(ggblist);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
935 stop = TRUE;
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
936 ret = TRUE;
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
937 }
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
938 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13946
diff changeset
939
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
940 if (stop)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
941 g_signal_stop_emission_by_name(G_OBJECT(widget), "key_pressed");
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
942
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
943 return ret;
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
944 }
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
945
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
946 static void
13993
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
947 update_buddy_display(GaimBuddy *buddy, GGBlist *ggblist)
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
948 {
14026
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14021
diff changeset
949 gnt_tree_change_text(GNT_TREE(ggblist->tree), buddy, 0, get_display_name((GaimBlistNode*)buddy));
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
950 if (ggblist->tnode == (GaimBlistNode*)buddy)
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
951 draw_tooltip(ggblist);
13993
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
952
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
953 if (gaim_presence_is_idle(gaim_buddy_get_presence(buddy)))
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
954 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), buddy, GNT_TEXT_FLAG_DIM);
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
955 else
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
956 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), buddy, 0);
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
957 }
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
958
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
959 static void
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
960 buddy_status_changed(GaimBuddy *buddy, GaimStatus *old, GaimStatus *now, GGBlist *ggblist)
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
961 {
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
962 update_buddy_display(buddy, ggblist);
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
963 }
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
964
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
965 static void
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
966 buddy_idle_changed(GaimBuddy *buddy, int old, int new, GGBlist *ggblist)
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
967 {
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
968 update_buddy_display(buddy, ggblist);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
969 }
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
970
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
971 static void
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
972 remove_peripherals(GGBlist *ggblist)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
973 {
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
974 if (ggblist->tooltip)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
975 remove_tooltip(ggblist);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
976 else if (ggblist->context)
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
977 remove_context_menu(ggblist);
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
978 }
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
979
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
980 static void
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
981 size_changed_cb(GntWidget *w, int width, int height)
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
982 {
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
983 gaim_prefs_set_int(PREF_ROOT "/size/width", width);
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
984 gaim_prefs_set_int(PREF_ROOT "/size/height", height);
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
985 }
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
986
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
987 static void
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
988 save_position_cb(GntWidget *w, int x, int y)
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
989 {
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
990 gaim_prefs_set_int(PREF_ROOT "/position/x", x);
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
991 gaim_prefs_set_int(PREF_ROOT "/position/y", y);
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
992 }
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
993
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
994 static void
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
995 reset_blist_window(GntWidget *window, gpointer null)
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
996 {
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
997 GaimBlistNode *node;
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
998 gaim_signals_disconnect_by_handle(gg_blist_get_handle());
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
999 gaim_get_blist()->ui_data = NULL;
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1000
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1001 node = gaim_blist_get_root();
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1002 while (node)
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1003 {
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1004 node->ui_data = NULL;
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1005 node = gaim_blist_node_next(node, TRUE);
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1006 }
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1007
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1008 remove_typing_cb(NULL);
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1009 remove_peripherals(ggblist);
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1010 g_free(ggblist);
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1011 ggblist = NULL;
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1012 }
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1013
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1014 static void
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1015 populate_buddylist()
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1016 {
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1017 GaimBlistNode *node;
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1018 GaimBuddyList *list;
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1019
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1020 list = gaim_get_blist();
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1021 node = gaim_blist_get_root();
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1022 while (node)
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1023 {
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1024 node_update(list, node);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1025 node = gaim_blist_node_next(node, FALSE);
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1026 }
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1027 }
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1028
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1029 static void
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1030 destroy_status_list(GList *list)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1031 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1032 g_list_foreach(list, (GFunc)g_free, NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1033 g_list_free(list);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1034 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1035
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1036 static void
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1037 populate_status_dropdown()
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1038 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1039 int i;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1040 GList *iter;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1041 GList *items = NULL;
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1042 StatusBoxItem *item = NULL;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1043
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1044 /* First the primitives */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1045 GaimStatusPrimitive prims[] = {GAIM_STATUS_AVAILABLE, GAIM_STATUS_AWAY,
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1046 GAIM_STATUS_INVISIBLE, GAIM_STATUS_OFFLINE, GAIM_STATUS_UNSET};
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1047
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1048 for (i = 0; prims[i] != GAIM_STATUS_UNSET; i++)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1049 {
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1050 item = g_new0(StatusBoxItem, 1);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1051 item->type = STATUS_PRIMITIVE;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1052 item->u.prim = prims[i];
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1053 items = g_list_prepend(items, item);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1054 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1055 gaim_primitive_get_name_from_type(prims[i]));
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1056 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1057
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1058 /* Now the popular statuses */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1059 for (iter = gaim_savedstatuses_get_popular(6); iter; iter = iter->next)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1060 {
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1061 item = g_new0(StatusBoxItem, 1);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1062 item->type = STATUS_SAVED_POPULAR;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1063 item->u.saved = iter->data;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1064 items = g_list_prepend(items, item);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1065 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1066 gaim_savedstatus_get_title(iter->data));
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1067 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1068
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
1069 /* New savedstatus */
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
1070 item = g_new0(StatusBoxItem, 1);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
1071 item->type = STATUS_SAVED_NEW;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
1072 items = g_list_prepend(items, item);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
1073 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
1074 _("New..."));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
1075
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1076 /* More savedstatuses */
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1077 item = g_new0(StatusBoxItem, 1);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1078 item->type = STATUS_SAVED_ALL;
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1079 items = g_list_prepend(items, item);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1080 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1081 _("Saved..."));
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1082
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1083 /* The keys for the combobox are created here, and never used
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1084 * anywhere else. So make sure the keys are freed when the widget
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1085 * is destroyed. */
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1086 g_object_set_data_full(G_OBJECT(ggblist->status), "list of statuses",
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1087 items, (GDestroyNotify)destroy_status_list);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1088 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1089
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1090 void gg_blist_init()
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1091 {
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1092 gaim_prefs_add_none(PREF_ROOT);
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1093 gaim_prefs_add_none(PREF_ROOT "/size");
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1094 gaim_prefs_add_int(PREF_ROOT "/size/width", 20);
14276
d1874a008bf1 [gaim-migrate @ 16895]
Ethan Blanton <elb@pidgin.im>
parents: 14260
diff changeset
1095 gaim_prefs_add_int(PREF_ROOT "/size/height", 18);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1096 gaim_prefs_add_none(PREF_ROOT "/position");
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1097 gaim_prefs_add_int(PREF_ROOT "/position/x", 0);
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1098 gaim_prefs_add_int(PREF_ROOT "/position/y", 0);
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1099
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1100 gg_blist_show();
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1101
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1102 return;
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1103 }
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1104
14109
1af2b9d5ef3f [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14104
diff changeset
1105 static gboolean
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1106 remove_typing_cb(gpointer null)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1107 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1108 GaimSavedStatus *current;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1109 const char *message, *newmessage;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1110 GaimStatusPrimitive prim, newprim;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1111 StatusBoxItem *item;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1112
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1113 current = gaim_savedstatus_get_current();
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1114 message = gaim_savedstatus_get_message(current);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1115 prim = gaim_savedstatus_get_type(current);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1116
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1117 newmessage = gnt_entry_get_text(GNT_ENTRY(ggblist->statustext));
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1118 item = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(ggblist->status));
14109
1af2b9d5ef3f [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14104
diff changeset
1119 g_return_val_if_fail(item->type == STATUS_PRIMITIVE, FALSE);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1120 newprim = item->u.prim;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1121
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1122 if (newprim != prim || ((message && !newmessage) ||
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1123 (!message && newmessage) ||
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1124 (message && newmessage && g_utf8_collate(message, newmessage) != 0)))
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1125 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1126 GaimSavedStatus *status = gaim_savedstatus_find_transient_by_type_and_message(newprim, newmessage);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1127 /* Holy Crap! That's a LAWNG function name */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1128 if (status == NULL)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1129 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1130 status = gaim_savedstatus_new(NULL, newprim);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1131 gaim_savedstatus_set_message(status, newmessage);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1132 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1133
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1134 gaim_savedstatus_activate(status);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1135 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1136
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1137 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree);
14121
3d8804b82150 [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14109
diff changeset
1138 if (ggblist->typing)
3d8804b82150 [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14109
diff changeset
1139 g_source_remove(ggblist->typing);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1140 ggblist->typing = 0;
14109
1af2b9d5ef3f [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14104
diff changeset
1141 return FALSE;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1142 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1143
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1144 static void
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1145 status_selection_changed(GntComboBox *box, StatusBoxItem *old, StatusBoxItem *now, gpointer null)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1146 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1147 gnt_entry_set_text(GNT_ENTRY(ggblist->statustext), NULL);
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1148 if (now->type == STATUS_SAVED_POPULAR)
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1149 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1150 /* Set the status immediately */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1151 gaim_savedstatus_activate(now->u.saved);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1152 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1153 else if (now->type == STATUS_PRIMITIVE)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1154 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1155 /* Move the focus to the entry box */
14121
3d8804b82150 [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14109
diff changeset
1156 /* XXX: Make sure the selected status can have a message */
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1157 gnt_box_move_focus(GNT_BOX(ggblist->window), 1);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1158 ggblist->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1159 }
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1160 else if (now->type == STATUS_SAVED_ALL)
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1161 {
14193
fcfd3eea2160 [gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
1162 /* Restore the selection to reflect current status. */
fcfd3eea2160 [gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
1163 savedstatus_changed(gaim_savedstatus_get_current(), NULL);
fcfd3eea2160 [gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
1164 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree);
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1165 gg_savedstatus_show_all();
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
1166 }
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
1167 else if (now->type == STATUS_SAVED_NEW)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
1168 {
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
1169 savedstatus_changed(gaim_savedstatus_get_current(), NULL);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
1170 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
1171 gg_savedstatus_edit(NULL);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14193
diff changeset
1172 }
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1173 else
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1174 g_return_if_reached();
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1175 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1176
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1177 static gboolean
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1178 status_text_changed(GntEntry *entry, const char *text, gpointer null)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1179 {
14109
1af2b9d5ef3f [gaim-migrate @ 16660]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14104
diff changeset
1180 if ((text[0] == 27 || (text[0] == '\t' && text[1] == '\0')) && ggblist->typing == 0)
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1181 return FALSE;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1182
14121
3d8804b82150 [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14109
diff changeset
1183 if (ggblist->typing)
3d8804b82150 [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14109
diff changeset
1184 g_source_remove(ggblist->typing);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1185 ggblist->typing = 0;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1186
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1187 if (text[0] == '\r' && text[1] == 0)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1188 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1189 /* Set the status only after you press 'Enter' */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1190 remove_typing_cb(NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1191 return TRUE;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1192 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1193
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1194 ggblist->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1195 return FALSE;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1196 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1197
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1198 static void
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1199 savedstatus_changed(GaimSavedStatus *now, GaimSavedStatus *old)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1200 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1201 /* Block the signals we don't want to emit */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1202 GList *list;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1203 GaimStatusPrimitive prim;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1204 const char *message;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1205
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1206 if (!ggblist)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1207 return;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1208
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1209 g_signal_handlers_block_matched(ggblist->status, G_SIGNAL_MATCH_FUNC,
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1210 0, 0, NULL, status_selection_changed, NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1211 g_signal_handlers_block_matched(ggblist->statustext, G_SIGNAL_MATCH_FUNC,
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1212 0, 0, NULL, status_text_changed, NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1213
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1214 prim = gaim_savedstatus_get_type(now);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1215 message = gaim_savedstatus_get_message(now);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1216
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1217 list = g_object_get_data(G_OBJECT(ggblist->status), "list of statuses");
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1218 for (; list; list = list->next)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1219 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1220 StatusBoxItem *item = list->data;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1221 if (item->type == STATUS_PRIMITIVE && item->u.prim == prim)
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1222 {
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1223 gnt_combo_box_set_selected(GNT_COMBO_BOX(ggblist->status), item);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1224 gnt_entry_set_text(GNT_ENTRY(ggblist->statustext), message);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1225 gnt_widget_draw(ggblist->status);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1226 break;
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1227 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1228 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1229
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1230 g_signal_handlers_unblock_matched(ggblist->status, G_SIGNAL_MATCH_FUNC,
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1231 0, 0, NULL, status_selection_changed, NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1232 g_signal_handlers_unblock_matched(ggblist->statustext, G_SIGNAL_MATCH_FUNC,
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1233 0, 0, NULL, status_text_changed, NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1234 }
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1235
14167
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1236 static int
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1237 blist_node_compare(GaimBlistNode *n1, GaimBlistNode *n2)
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1238 {
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1239 const char *s1, *s2;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1240 char *us1, *us2;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1241 int ret;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1242
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1243 g_return_val_if_fail(n1->type == n2->type, -1);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1244
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1245 switch (n1->type)
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1246 {
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1247 case GAIM_BLIST_GROUP_NODE:
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1248 s1 = ((GaimGroup*)n1)->name;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1249 s2 = ((GaimGroup*)n2)->name;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1250 break;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1251 case GAIM_BLIST_CHAT_NODE:
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1252 s1 = gaim_chat_get_name((GaimChat*)n1);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1253 s2 = gaim_chat_get_name((GaimChat*)n2);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1254 break;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1255 case GAIM_BLIST_BUDDY_NODE:
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1256 s1 = gaim_buddy_get_alias((GaimBuddy*)n1);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1257 s2 = gaim_buddy_get_alias((GaimBuddy*)n2);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1258 break;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1259 default:
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1260 return -1;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1261 }
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1262
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1263 us1 = g_utf8_strup(s1, -1);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1264 us2 = g_utf8_strup(s2, -1);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1265 ret = g_utf8_collate(us1, us2);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1266 g_free(us1);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1267 g_free(us2);
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1268
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1269 return ret;
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1270 }
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1271
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1272 void gg_blist_show()
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1273 {
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1274 if (ggblist)
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1275 return;
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1276
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
1277 ggblist = g_new0(GGBlist, 1);
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
1278
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
1279 gaim_get_blist()->ui_data = ggblist;
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1280
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1281 ggblist->window = gnt_vbox_new(FALSE);
13931
a0a91e17f899 [gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13927
diff changeset
1282 gnt_widget_set_name(ggblist->window, "buddylist");
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1283 gnt_box_set_toplevel(GNT_BOX(ggblist->window), TRUE);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1284 gnt_box_set_title(GNT_BOX(ggblist->window), _("Buddy List"));
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
1285 gnt_box_set_pad(GNT_BOX(ggblist->window), 0);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1286
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1287 ggblist->tree = gnt_tree_new();
14167
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14127
diff changeset
1288 gnt_tree_set_compare_func(GNT_TREE(ggblist->tree), (GCompareFunc)blist_node_compare);
13915
15a38b312abe [gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
1289 GNT_WIDGET_SET_FLAGS(ggblist->tree, GNT_WIDGET_NO_BORDER);
14026
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14021
diff changeset
1290 gnt_tree_set_col_width(GNT_TREE(ggblist->tree), 0, 25);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1291 gnt_widget_set_size(ggblist->tree, gaim_prefs_get_int(PREF_ROOT "/size/width"),
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1292 gaim_prefs_get_int(PREF_ROOT "/size/height"));
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1293 gnt_widget_set_position(ggblist->window, gaim_prefs_get_int(PREF_ROOT "/position/x"),
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1294 gaim_prefs_get_int(PREF_ROOT "/position/y"));
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1295
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1296 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->tree);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1297
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1298 ggblist->status = gnt_combo_box_new();
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1299 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->status);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1300 ggblist->statustext = gnt_entry_new(NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1301 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->statustext);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1302
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1303 populate_status_dropdown();
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1304
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1305 gnt_widget_show(ggblist->window);
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1306
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1307 gaim_signal_connect(gaim_blist_get_handle(), "buddy-status-changed", gg_blist_get_handle(),
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1308 GAIM_CALLBACK(buddy_status_changed), ggblist);
13993
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
1309 gaim_signal_connect(gaim_blist_get_handle(), "buddy-idle-changed", gg_blist_get_handle(),
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
1310 GAIM_CALLBACK(buddy_idle_changed), ggblist);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1311
13926
d2c1522276b3 [gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13923
diff changeset
1312 #if 0
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1313 gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-on", gg_blist_get_handle(),
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1314 GAIM_CALLBACK(buddy_signed_on), ggblist);
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1315 gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-off", gg_blist_get_handle(),
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1316 GAIM_CALLBACK(buddy_signed_off), ggblist);
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1317
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1318 /* These I plan to use to indicate unread-messages etc. */
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1319 gaim_signal_connect(gaim_conversations_get_handle(), "received-im-msg", gg_blist_get_handle(),
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1320 GAIM_CALLBACK(received_im_msg), list);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1321 gaim_signal_connect(gaim_conversations_get_handle(), "sent-im-msg", gg_blist_get_handle(),
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1322 GAIM_CALLBACK(sent_im_msg), NULL);
13919
94caf5dc02b4 [gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13915
diff changeset
1323
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1324 gaim_signal_connect(gaim_conversations_get_handle(), "received-chat-msg", gg_blist_get_handle(),
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1325 GAIM_CALLBACK(received_chat_msg), list);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1326 #endif
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1327
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1328 g_signal_connect(G_OBJECT(ggblist->tree), "selection_changed", G_CALLBACK(selection_changed), ggblist);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1329 g_signal_connect(G_OBJECT(ggblist->tree), "key_pressed", G_CALLBACK(key_pressed), ggblist);
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13920
diff changeset
1330 g_signal_connect(G_OBJECT(ggblist->tree), "activate", G_CALLBACK(selection_activate), ggblist);
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1331 g_signal_connect_data(G_OBJECT(ggblist->tree), "gained-focus", G_CALLBACK(draw_tooltip),
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1332 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
14020
d9a007b109be [gaim-migrate @ 16510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
1333 g_signal_connect_data(G_OBJECT(ggblist->tree), "lost-focus", G_CALLBACK(remove_peripherals),
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1334 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1335 g_signal_connect(G_OBJECT(ggblist->tree), "size_changed", G_CALLBACK(size_changed_cb), NULL);
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1336 g_signal_connect(G_OBJECT(ggblist->window), "position_set", G_CALLBACK(save_position_cb), NULL);
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1337 g_signal_connect(G_OBJECT(ggblist->window), "destroy", G_CALLBACK(reset_blist_window), NULL);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
1338
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1339 /* Status signals */
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1340 gaim_signal_connect(gaim_savedstatuses_get_handle(), "savedstatus-changed", gg_blist_get_handle(),
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1341 GAIM_CALLBACK(savedstatus_changed), NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1342 g_signal_connect(G_OBJECT(ggblist->status), "selection_changed",
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1343 G_CALLBACK(status_selection_changed), NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1344 g_signal_connect(G_OBJECT(ggblist->statustext), "key_pressed",
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1345 G_CALLBACK(status_text_changed), NULL);
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1346
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1347 populate_buddylist();
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1348
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
1349 savedstatus_changed(gaim_savedstatus_get_current(), NULL);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1350 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1351
13969
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1352 void gg_blist_uninit()
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1353 {
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1354 if (ggblist == NULL)
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1355 return;
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14082
diff changeset
1356
13969
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1357 gnt_widget_destroy(ggblist->window);
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1358 g_free(ggblist);
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1359 ggblist = NULL;
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1360 }
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1361
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1362 void gg_blist_get_position(int *x, int *y)
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1363 {
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1364 gnt_widget_get_position(ggblist->window, x, y);
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1365 }
13969
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1366
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1367 void gg_blist_set_position(int x, int y)
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1368 {
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1369 gnt_widget_set_position(ggblist->window, x, y);
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1370 }
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1371
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1372 void gg_blist_get_size(int *width, int *height)
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1373 {
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1374 gnt_widget_get_size(ggblist->window, width, height);
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1375 }
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1376
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1377 void gg_blist_set_size(int width, int height)
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1378 {
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1379 gnt_widget_set_size(ggblist->window, width, height);
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1380 }
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
1381

mercurial