annotate console/gntblist.c @ 14126:b71bfeaaed58

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