Wed, 13 May 2009 20:29:03 +0000
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 |