finch/plugins/grouping.c

Wed, 23 Jan 2008 21:46:54 +0000

author
Sadrul Habib Chowdhury <sadrul@pidgin.im>
date
Wed, 23 Jan 2008 21:46:54 +0000
changeset 22312
dae4ed366fcb
parent 22309
2a55a6e3d4b0
child 24226
516c279cefea
permissions
-rw-r--r--

Init and uninit the buddylist managers at appropriate times.

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
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
31 /**
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
32 * Online/Offline
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 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
35 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
36
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
37 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
38 {
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
39 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
40
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
41 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
42 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
43 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
44 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
45
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
46 return TRUE;
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
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
49 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
50 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
51 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
52 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
53 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
54 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
55 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
56 return TRUE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
57 return FALSE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
58 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
59 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
60 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
61 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
62 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
63 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
64 return TRUE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
65 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
66 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
67 return TRUE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
68 return FALSE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
69 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
70 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
71 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
72 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
73 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
74 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
75 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
76 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
77 default:
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
78 return FALSE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
79 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
80 }
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 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
83 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
84 gpointer ret = NULL;
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 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
87 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
88 node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node);
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
89 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
90 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
91 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
92 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
93 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
94 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
95 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
96 ret = &online;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
97 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
98 default:
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 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
101 return ret;
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
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
104 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
105 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
106 static FinchBlistManager *def = NULL;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
107 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
108
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
109 if (def == NULL)
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
110 def = finch_blist_manager_find("default");
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
111
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
112 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
113 /* 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
114 * 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
115 * expensive. */
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
116 if (body)
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
117 *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
118 return TRUE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
119 } else {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
120 return def ? def->create_tooltip(selected_row, body, tool_title) : FALSE;
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 }
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 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
125 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
126 "on-offline",
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
127 N_("Online/Offline"),
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
128 on_offline_init,
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
129 NULL,
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
130 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
131 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
132 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
133 {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
134 };
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
135
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
136 /**
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
137 * 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
138 */
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
139 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
140 static gboolean meebo_init()
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
141 {
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
142 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
143 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
144 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
145 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
146 }
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
147 return TRUE;
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
148 }
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
149
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
150 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
151 {
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 static FinchBlistManager *def = 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
153 if (def == 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
154 def = finch_blist_manager_find("default");
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
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
156 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
157 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
158 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
159 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
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 }
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 return def->find_parent(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
163 }
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
164
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 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
166 {
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 "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
168 N_("Meebo"),
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
169 meebo_init,
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
170 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
171 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
172 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
173 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
174 {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
175 };
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
176
2a55a6e3d4b0 Add a meebo-like grouping, where online contacts show up under the default
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22287
diff changeset
177 /**
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
178 * No Grouping.
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
179 */
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
180 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
181 {
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
182 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
183 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
184 return TRUE;
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
185 }
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 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
188 {
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
189 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
190 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
191 return TRUE;
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
192 }
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
193
22287
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
194 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
195 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
196 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
197 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
198
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
199 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
200 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
201 gpointer ret = NULL;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
202
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
203 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
204 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
205 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
206 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
207 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
208 default:
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
209 break;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
210 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
211 return ret;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
212 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
213
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
214 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
215 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
216 "no-group",
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
217 N_("No Grouping"),
22312
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
218 no_group_init,
dae4ed366fcb Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22309
diff changeset
219 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
220 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
221 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
222 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
223 {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
224 };
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
225
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
226 static gboolean
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
227 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
228 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
229 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
230 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
231 finch_blist_install_manager(&no_group);
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
232 return TRUE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
233 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
234
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
235 static gboolean
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
236 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
237 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
238 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
239 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
240 finch_blist_uninstall_manager(&no_group);
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
241 return TRUE;
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
242 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
243
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
244 static PurplePluginInfo info =
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
245 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
246 PURPLE_PLUGIN_MAGIC,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
247 PURPLE_MAJOR_VERSION,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
248 PURPLE_MINOR_VERSION,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
249 PURPLE_PLUGIN_STANDARD,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
250 FINCH_PLUGIN_TYPE,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
251 0,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
252 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
253 PURPLE_PRIORITY_DEFAULT,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
254 "grouping",
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
255 N_("Grouping"),
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
256 VERSION,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
257 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
258 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
259 "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
260 PURPLE_WEBSITE,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
261 plugin_load,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
262 plugin_unload,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
263 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
264 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
265 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
266 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
267 NULL,
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
268 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
269 };
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
270
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
271 static void
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
272 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
273 {
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
274 }
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
275
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
276 PURPLE_INIT_PLUGIN(ignore, init_plugin, info)
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
277
f4d9dcb92863 Add a plugin to provide 'Online/Offline' grouping and no grouping.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
278

mercurial