finch/plugins/grouping.c

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 25911
f22097dc8413
child 28323
2b57e78c5d32
permissions
-rw-r--r--

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1 /**
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
2 * @file grouping.c Provides different grouping options.
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3 *
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
4 * Copyright (C) 2008 Sadrul Habib Chowdhury <sadrul@users.sourceforge.net>
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
5 *
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
9 * (at your option) any later version.
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
10 *
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
14 * GNU General Public License for more details.
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
15 *
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
19 */
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
20
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
21 #define PURPLE_PLUGIN
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
22
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
23 #include "internal.h"
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
24 #include "purple.h"
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
25
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
26 #include "gntblist.h"
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
27 #include "gntplugin.h"
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
28
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
29 #include "gnttree.h"
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
30
24226
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
31 static FinchBlistManager *default_manager;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
32
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
33 /**
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
34 * Online/Offline
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
35 */
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
36 static PurpleBlistNode online = {.type = PURPLE_BLIST_OTHER_NODE},
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
37 offline = {.type = PURPLE_BLIST_OTHER_NODE};
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
38
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
39 static gboolean on_offline_init()
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
40 {
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
41 GntTree *tree = finch_blist_get_tree();
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
42
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
43 gnt_tree_add_row_after(tree, &online,
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
44 gnt_tree_create_row(tree, _("Online")), NULL, NULL);
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
45 gnt_tree_add_row_after(tree, &offline,
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
46 gnt_tree_create_row(tree, _("Offline")), NULL, &online);
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
47
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
48 return TRUE;
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
49 }
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
50
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
51 static gboolean on_offline_can_add_node(PurpleBlistNode *node)
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
52 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
53 switch (purple_blist_node_get_type(node)) {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
54 case PURPLE_BLIST_CONTACT_NODE:
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
55 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
56 PurpleContact *contact = (PurpleContact*)node;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
57 if (contact->currentsize > 0)
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
58 return TRUE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
59 return FALSE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
60 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
61 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
62 case PURPLE_BLIST_BUDDY_NODE:
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
63 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
64 PurpleBuddy *buddy = (PurpleBuddy*)node;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
65 if (PURPLE_BUDDY_IS_ONLINE(buddy))
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
66 return TRUE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
67 if (purple_prefs_get_bool("/finch/blist/showoffline") &&
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
68 purple_account_is_connected(purple_buddy_get_account(buddy)))
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
69 return TRUE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
70 return FALSE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
71 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
72 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
73 case PURPLE_BLIST_CHAT_NODE:
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
74 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
75 PurpleChat *chat = (PurpleChat*)node;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
76 return purple_account_is_connected(purple_chat_get_account(chat));
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
77 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
78 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
79 default:
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
80 return FALSE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
81 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
82 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
83
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
84 static gpointer on_offline_find_parent(PurpleBlistNode *node)
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
85 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
86 gpointer ret = NULL;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
87
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
88 switch (purple_blist_node_get_type(node)) {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
89 case PURPLE_BLIST_CONTACT_NODE:
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24226
diff changeset
90 node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
91 ret = PURPLE_BUDDY_IS_ONLINE((PurpleBuddy*)node) ? &online : &offline;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
92 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
93 case PURPLE_BLIST_BUDDY_NODE:
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
94 ret = purple_blist_node_get_parent(node);
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
95 finch_blist_manager_add_node(ret);
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
96 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
97 case PURPLE_BLIST_CHAT_NODE:
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
98 ret = &online;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
99 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
100 default:
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
101 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
102 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
103 return ret;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
104 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
105
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
106 static gboolean on_offline_create_tooltip(gpointer selected_row, GString **body, char **tool_title)
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
107 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
108 PurpleBlistNode *node = selected_row;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
109
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
110 if (purple_blist_node_get_type(node) == PURPLE_BLIST_OTHER_NODE) {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
111 /* There should be some easy way of getting the total online count,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
112 * or total number of chats. Doing a loop here will probably be pretty
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
113 * expensive. */
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
114 if (body)
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
115 *body = g_string_new(node == &online ? _("Online Buddies") : _("Offline Buddies"));
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
116 return TRUE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
117 } else {
24226
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
118 return default_manager ? default_manager->create_tooltip(selected_row, body, tool_title) : FALSE;
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
119 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
120 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
121
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
122 static FinchBlistManager on_offline =
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
123 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
124 "on-offline",
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
125 N_("Online/Offline"),
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
126 on_offline_init,
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
127 NULL,
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
128 on_offline_can_add_node,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
129 on_offline_find_parent,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
130 on_offline_create_tooltip,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
131 {NULL, NULL, NULL, NULL}
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
132 };
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
133
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
134 /**
22309
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
135 * Meebo-like Grouping.
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
136 */
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
137 static PurpleBlistNode meebo = {.type = PURPLE_BLIST_OTHER_NODE};
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
138 static gboolean meebo_init()
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
139 {
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
140 GntTree *tree = finch_blist_get_tree();
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
141 if (!g_list_find(gnt_tree_get_rows(tree), &meebo)) {
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
142 gnt_tree_add_row_last(tree, &meebo,
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
143 gnt_tree_create_row(tree, _("Offline")), NULL);
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
144 }
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
145 return TRUE;
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
146 }
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
147
22309
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
148 static gpointer meebo_find_parent(PurpleBlistNode *node)
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
149 {
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
150 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
151 PurpleBuddy *buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
152 if (buddy && !PURPLE_BUDDY_IS_ONLINE(buddy)) {
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
153 return &meebo;
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
154 }
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
155 }
24226
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
156 return default_manager->find_parent(node);
22309
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
157 }
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
158
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
159 static FinchBlistManager meebo_group =
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
160 {
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
161 "meebo",
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
162 N_("Meebo"),
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
163 meebo_init,
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
164 NULL,
22309
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
165 NULL,
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
166 meebo_find_parent,
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
167 NULL,
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
168 {NULL, NULL, NULL, NULL}
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
169 };
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
170
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
171 /**
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
172 * No Grouping.
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
173 */
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
174 static gboolean no_group_init()
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
175 {
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
176 GntTree *tree = finch_blist_get_tree();
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
177 g_object_set(G_OBJECT(tree), "expander-level", 0, NULL);
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
178 return TRUE;
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
179 }
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
180
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
181 static gboolean no_group_uninit()
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
182 {
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
183 GntTree *tree = finch_blist_get_tree();
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
184 g_object_set(G_OBJECT(tree), "expander-level", 1, NULL);
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
185 return TRUE;
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
186 }
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
187
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
188 static gboolean no_group_can_add_node(PurpleBlistNode *node)
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
189 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
190 return on_offline_can_add_node(node); /* These happen to be the same */
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
191 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
192
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
193 static gpointer no_group_find_parent(PurpleBlistNode *node)
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
194 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
195 gpointer ret = NULL;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
196
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
197 switch (purple_blist_node_get_type(node)) {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
198 case PURPLE_BLIST_BUDDY_NODE:
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
199 ret = purple_blist_node_get_parent(node);
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
200 finch_blist_manager_add_node(ret);
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
201 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
202 default:
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
203 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
204 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
205 return ret;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
206 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
207
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
208 static FinchBlistManager no_group =
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
209 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
210 "no-group",
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
211 N_("No Grouping"),
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
212 no_group_init,
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
213 no_group_uninit,
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
214 no_group_can_add_node,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
215 no_group_find_parent,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
216 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
217 {NULL, NULL, NULL, NULL}
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
218 };
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
219
24226
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
220 /**
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
221 * Nested Grouping
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
222 */
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
223 static GHashTable *groups;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
224
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
225 static gboolean
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
226 nested_group_init(void)
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
227 {
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
228 groups = g_hash_table_new_full(g_str_hash, g_str_equal,
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
229 g_free, g_free);
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
230 return TRUE;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
231 }
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
232
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
233 static gboolean
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
234 nested_group_uninit(void)
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
235 {
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
236 g_hash_table_destroy(groups);
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
237 groups = NULL;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
238 return TRUE;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
239 }
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
240
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
241 static gpointer
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
242 nested_group_find_parent(PurpleBlistNode *node)
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
243 {
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
244 char *name;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
245 PurpleGroup *group;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
246 char *sep;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
247 PurpleBlistNode *ret, *parent;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
248 GntTree *tree;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
249
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
250 if (!PURPLE_BLIST_NODE_IS_GROUP(node))
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
251 return default_manager->find_parent(node);
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
252
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
253 group = (PurpleGroup *)node;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
254 name = g_strdup(purple_group_get_name(group));
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
255 if (!(sep = strchr(name, '/'))) {
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
256 g_free(name);
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
257 return default_manager->find_parent(node);
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
258 }
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
259
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
260 tree = finch_blist_get_tree();
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
261 parent = NULL;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
262
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
263 while (sep) {
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
264 *sep = 0;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
265 if (*(sep + 1) && (ret = (PurpleBlistNode *)purple_find_group(name))) {
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
266 finch_blist_manager_add_node(ret);
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
267 parent = ret;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
268 } else if (!(ret = g_hash_table_lookup(groups, name))) {
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
269 ret = g_new0(PurpleBlistNode, 1);
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
270 g_hash_table_insert(groups, g_strdup(name), ret);
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
271 ret->type = PURPLE_BLIST_OTHER_NODE;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
272 gnt_tree_add_row_last(tree, ret,
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
273 gnt_tree_create_row(tree, name), parent);
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
274 parent = ret;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
275 }
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
276 *sep = '/';
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
277 sep = strchr(sep + 1, '/');
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
278 }
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
279
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
280 g_free(name);
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
281 return ret;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
282 }
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
283
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
284 static gboolean
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
285 nested_group_create_tooltip(gpointer selected_row, GString **body, char **title)
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
286 {
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
287 PurpleBlistNode *node = selected_row;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
288 if (!node ||
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
289 purple_blist_node_get_type(node) != PURPLE_BLIST_OTHER_NODE)
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
290 return default_manager->create_tooltip(selected_row, body, title);
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
291 if (body)
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
292 *body = g_string_new(_("Nested Subgroup")); /* Perhaps list the child groups/subgroups? */
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
293 return TRUE;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
294 }
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
295
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
296 static gboolean
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
297 nested_group_can_add_node(PurpleBlistNode *node)
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
298 {
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
299 PurpleBlistNode *group;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
300 int len;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
301
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
302 if (!PURPLE_BLIST_NODE_IS_GROUP(node))
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
303 return default_manager->can_add_node(node);
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
304
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
305 if (default_manager->can_add_node(node))
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
306 return TRUE;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
307
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
308 len = strlen(purple_group_get_name((PurpleGroup*)node));
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
309 group = purple_blist_get_root();
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
310 for (; group; group = purple_blist_node_get_sibling_next(group)) {
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
311 if (group == node)
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
312 continue;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
313 if (strncmp(purple_group_get_name((PurpleGroup *)node),
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
314 purple_group_get_name((PurpleGroup *)group), len) == 0 &&
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
315 default_manager->can_add_node(group))
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
316 return TRUE;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
317 }
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
318 return FALSE;
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
319 }
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
320
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
321 static FinchBlistManager nested_group =
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
322 {
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
323 "nested",
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
324 N_("Nested Grouping (experimental)"),
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
325 .init = nested_group_init,
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
326 .uninit = nested_group_uninit,
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
327 .find_parent = nested_group_find_parent,
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
328 .create_tooltip = nested_group_create_tooltip,
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
329 .can_add_node = nested_group_can_add_node,
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
330 };
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
331
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
332 static gboolean
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
333 plugin_load(PurplePlugin *plugin)
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
334 {
24226
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
335 default_manager = finch_blist_manager_find("default");
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
336
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
337 finch_blist_install_manager(&on_offline);
22309
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
338 finch_blist_install_manager(&meebo_group);
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
339 finch_blist_install_manager(&no_group);
24226
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
340 finch_blist_install_manager(&nested_group);
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
341 return TRUE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
342 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
343
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
344 static gboolean
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
345 plugin_unload(PurplePlugin *plugin)
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
346 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
347 finch_blist_uninstall_manager(&on_offline);
22309
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
348 finch_blist_uninstall_manager(&meebo_group);
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
349 finch_blist_uninstall_manager(&no_group);
24226
516c279cefea Add 'Nested Grouping' option in the grouping plugin
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22312
diff changeset
350 finch_blist_uninstall_manager(&nested_group);
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
351 return TRUE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
352 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
353
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
354 static PurplePluginInfo info =
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
355 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
356 PURPLE_PLUGIN_MAGIC,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
357 PURPLE_MAJOR_VERSION,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
358 PURPLE_MINOR_VERSION,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
359 PURPLE_PLUGIN_STANDARD,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
360 FINCH_PLUGIN_TYPE,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
361 0,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
362 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
363 PURPLE_PRIORITY_DEFAULT,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
364 "grouping",
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
365 N_("Grouping"),
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
366 VERSION,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
367 N_("Provides alternate buddylist grouping options."),
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
368 N_("Provides alternate buddylist grouping options."),
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
369 "Sadrul H Chowdhury <sadrul@users.sourceforge.net>",
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
370 PURPLE_WEBSITE,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
371 plugin_load,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
372 plugin_unload,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
373 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
374 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
375 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
376 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
377 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
378 NULL,NULL,NULL,NULL
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
379 };
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
380
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
381 static void
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
382 init_plugin(PurplePlugin *plugin)
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
383 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
384 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
385
25633
feee0c7e503f Fix some more mis-identified plugins, like 3b3526a0...
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24226
diff changeset
386 PURPLE_INIT_PLUGIN(grouping, init_plugin, info)
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
387
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
388

mercurial