finch/gntroomlist.c

Tue, 23 Aug 2011 05:43:51 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Tue, 23 Aug 2011 05:43:51 +0000
changeset 32218
f27b05250351
parent 27829
94b279f7c38c
child 32252
2e532b3062eb
permissions
-rw-r--r--

Some struct hiding. What a pain.

22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1 /**
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
2 * @file gntroomlist.c GNT Room List API
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3 * @ingroup finch
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
4 */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
5
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
6 /* finch
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
7 *
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
8 * Finch is the legal property of its developers, whose names are too numerous
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
10 * source distribution.
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
11 *
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
15 * (at your option) any later version.
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
16 *
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
20 * GNU General Public License for more details.
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
21 *
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
25 */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
26
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
27 #include "finch.h"
27829
94b279f7c38c Don't include an internal header in the public finch headers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26528
diff changeset
28 #include <internal.h>
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
29
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
30 #include "gntrequest.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
31 #include "gntroomlist.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
32
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
33 #include "gntbox.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
34 #include "gntbutton.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
35 #include "gntcombobox.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
36 #include "gnttextview.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
37 #include "gnttree.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
38 #include "gntwindow.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
39
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
40 #include "debug.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
41
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
42 #define PREF_ROOT "/finch/roomlist"
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
43
32218
f27b05250351 Some struct hiding. What a pain.
Mark Doliner <markdoliner@pidgin.im>
parents: 27829
diff changeset
44 #undef FINCH_GET_DATA
f27b05250351 Some struct hiding. What a pain.
Mark Doliner <markdoliner@pidgin.im>
parents: 27829
diff changeset
45 #undef FINCH_SET_DATA
f27b05250351 Some struct hiding. What a pain.
Mark Doliner <markdoliner@pidgin.im>
parents: 27829
diff changeset
46 #define FINCH_GET_DATA(obj) purple_roomlist_get_ui_data(obj)
f27b05250351 Some struct hiding. What a pain.
Mark Doliner <markdoliner@pidgin.im>
parents: 27829
diff changeset
47 #define FINCH_SET_DATA(obj, data) purple_roomlist_set_ui_data(obj, data)
f27b05250351 Some struct hiding. What a pain.
Mark Doliner <markdoliner@pidgin.im>
parents: 27829
diff changeset
48
f27b05250351 Some struct hiding. What a pain.
Mark Doliner <markdoliner@pidgin.im>
parents: 27829
diff changeset
49
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
50 /* Yes, just one roomlist at a time. Let's not get greedy. Aight? */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
51 struct _FinchRoomlist
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
52 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
53 GntWidget *window;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
54
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
55 GntWidget *accounts;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
56 GntWidget *tree;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
57 GntWidget *details;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
58
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
59 GntWidget *getlist;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
60 GntWidget *add;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
61 GntWidget *join;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
62 GntWidget *stop;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
63 GntWidget *close;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
64
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
65 PurpleAccount *account;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
66 PurpleRoomlist *roomlist;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
67 } froomlist;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
68
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
69 typedef struct _FinchRoomlist FinchRoomlist;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
70
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
71 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
72 unset_roomlist(gpointer null)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
73 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
74 froomlist.window = NULL;
22169
bed812105128 Unset some stuff to make sure Sylar can't kill us.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22147
diff changeset
75 if (froomlist.roomlist) {
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
76 purple_roomlist_unref(froomlist.roomlist);
22169
bed812105128 Unset some stuff to make sure Sylar can't kill us.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22147
diff changeset
77 froomlist.roomlist = NULL;
bed812105128 Unset some stuff to make sure Sylar can't kill us.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22147
diff changeset
78 }
bed812105128 Unset some stuff to make sure Sylar can't kill us.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22147
diff changeset
79 froomlist.account = NULL;
bed812105128 Unset some stuff to make sure Sylar can't kill us.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22147
diff changeset
80 froomlist.tree = NULL;
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
81 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
82
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
83 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
84 update_roomlist(PurpleRoomlist *list)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
85 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
86 if (froomlist.roomlist == list)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
87 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
88
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
89 if (froomlist.roomlist)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
90 purple_roomlist_unref(froomlist.roomlist);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
91
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
92 if ((froomlist.roomlist = list) != NULL)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
93 purple_roomlist_ref(list);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
94 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
95
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
96 static void fl_stop(GntWidget *button, gpointer null)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
97 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
98 if (froomlist.roomlist &&
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
99 purple_roomlist_get_in_progress(froomlist.roomlist))
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
100 purple_roomlist_cancel_get_list(froomlist.roomlist);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
101 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
102
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
103 static void fl_get_list(GntWidget *button, gpointer null)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
104 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
105 PurpleAccount *account = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(froomlist.accounts));
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
106 PurpleConnection *gc = purple_account_get_connection(account);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
107
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
108 if (!gc)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
109 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
110
22169
bed812105128 Unset some stuff to make sure Sylar can't kill us.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22147
diff changeset
111 update_roomlist(NULL);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
112 froomlist.roomlist = purple_roomlist_get_list(gc);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
113 gnt_box_give_focus_to_child(GNT_BOX(froomlist.window), froomlist.tree);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
114 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
115
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
116 static void fl_add_chat(GntWidget *button, gpointer null)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
117 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
118 char *name;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
119 PurpleRoomlistRoom *room = gnt_tree_get_selection_data(GNT_TREE(froomlist.tree));
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
120 PurpleConnection *gc = purple_account_get_connection(froomlist.account);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
121 PurplePluginProtocolInfo *prpl_info = NULL;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
122
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
123 if (gc == NULL || room == NULL)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
124 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
125
22336
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22212
diff changeset
126 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
127
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
128 if(prpl_info != NULL && prpl_info->roomlist_room_serialize)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
129 name = prpl_info->roomlist_room_serialize(room);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
130 else
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
131 name = g_strdup(purple_roomlist_room_get_name(room));
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
132
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
133 purple_blist_request_add_chat(froomlist.account, NULL, NULL, name);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
134
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
135 g_free(name);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
136 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
137
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
138 static void fl_close(GntWidget *button, gpointer null)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
139 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
140 gnt_widget_destroy(froomlist.window);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
141 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
142
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
143 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
144 roomlist_activated(GntWidget *widget)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
145 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
146 PurpleRoomlistRoom *room = gnt_tree_get_selection_data(GNT_TREE(widget));
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
147 if (!room)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
148 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
149
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
150 switch (purple_roomlist_room_get_type(room)) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
151 case PURPLE_ROOMLIST_ROOMTYPE_ROOM:
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
152 purple_roomlist_room_join(froomlist.roomlist, room);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
153 break;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
154 case PURPLE_ROOMLIST_ROOMTYPE_CATEGORY:
32218
f27b05250351 Some struct hiding. What a pain.
Mark Doliner <markdoliner@pidgin.im>
parents: 27829
diff changeset
155 if (!purple_roomlist_room_get_expanded_once(room)) {
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
156 purple_roomlist_expand_category(froomlist.roomlist, room);
32218
f27b05250351 Some struct hiding. What a pain.
Mark Doliner <markdoliner@pidgin.im>
parents: 27829
diff changeset
157 purple_roomlist_room_set_expanded_once(room, TRUE);
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
158 }
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
159 break;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
160 }
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
161 gnt_tree_set_expanded(GNT_TREE(widget), room, TRUE);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
162 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
163
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
164 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
165 roomlist_selection_changed(GntWidget *widget, gpointer old, gpointer current, gpointer null)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
166 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
167 GList *iter, *field;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
168 PurpleRoomlistRoom *room = current;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
169 GntTextView *tv = GNT_TEXT_VIEW(froomlist.details);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
170 gboolean first = TRUE;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
171
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
172 gnt_text_view_clear(tv);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
173
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
174 if (!room)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
175 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
176
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
177 for (iter = purple_roomlist_room_get_fields(room),
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
178 field = purple_roomlist_get_fields(froomlist.roomlist);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
179 iter && field;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
180 iter = iter->next, field = field->next) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
181 PurpleRoomlistField *f = field->data;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
182 char *label = NULL;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
183
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
184 if (purple_roomlist_field_get_hidden(f)) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
185 continue;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
186 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
187
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
188 if (!first)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
189 gnt_text_view_append_text_with_flags(tv, "\n", GNT_TEXT_FLAG_NORMAL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
190
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
191 gnt_text_view_append_text_with_flags(tv,
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
192 purple_roomlist_field_get_label(f), GNT_TEXT_FLAG_BOLD);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
193 gnt_text_view_append_text_with_flags(tv, ": ", GNT_TEXT_FLAG_BOLD);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
194
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
195 switch (purple_roomlist_field_get_type(f)) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
196 case PURPLE_ROOMLIST_FIELD_BOOL:
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
197 label = g_strdup(iter->data ? "True" : "False");
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
198 break;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
199 case PURPLE_ROOMLIST_FIELD_INT:
26528
3820f77c89fa Fix Finch warnings when building on 64-bit
Paul Aurich <darkrain42@pidgin.im>
parents: 24863
diff changeset
200 label = g_strdup_printf("%d", GPOINTER_TO_INT(iter->data));
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
201 break;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
202 case PURPLE_ROOMLIST_FIELD_STRING:
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
203 label = g_strdup(iter->data);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
204 break;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
205 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
206 gnt_text_view_append_text_with_flags(tv, label, GNT_TEXT_FLAG_NORMAL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
207 g_free(label);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
208 first = FALSE;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
209 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
210
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
211 if (purple_roomlist_room_get_type(room) == PURPLE_ROOMLIST_ROOMTYPE_CATEGORY) {
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
212 if (!first)
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
213 gnt_text_view_append_text_with_flags(tv, "\n", GNT_TEXT_FLAG_NORMAL);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
214 gnt_text_view_append_text_with_flags(tv,
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
215 _("Hit 'Enter' to find more rooms of this category."),
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
216 GNT_TEXT_FLAG_NORMAL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
217 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
218 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
219
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
220 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
221 roomlist_account_changed(GntWidget *widget, gpointer old, gpointer current, gpointer null)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
222 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
223 if (froomlist.account == current) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
224 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
225 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
226
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
227 froomlist.account = current;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
228 if (froomlist.roomlist) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
229 if (purple_roomlist_get_in_progress(froomlist.roomlist))
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
230 purple_roomlist_cancel_get_list(froomlist.roomlist);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
231 update_roomlist(NULL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
232 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
233
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
234 gnt_tree_remove_all(GNT_TREE(froomlist.tree));
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
235 gnt_widget_draw(froomlist.tree);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
236 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
237
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
238 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
239 reset_account_list(PurpleAccount *account)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
240 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
241 GList *list;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
242 GntComboBox *accounts = GNT_COMBO_BOX(froomlist.accounts);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
243 gnt_combo_box_remove_all(accounts);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
244 for (list = purple_connections_get_all(); list; list = list->next) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
245 PurplePluginProtocolInfo *prpl_info = NULL;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
246 PurpleConnection *gc = list->data;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
247
22336
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22212
diff changeset
248 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
24863
68c109ca0089 Fix a crash that happens when accessing the roomlist for an account that's
Paul Aurich <darkrain42@pidgin.im>
parents: 22339
diff changeset
249 if (PURPLE_CONNECTION_IS_CONNECTED(gc) &&
68c109ca0089 Fix a crash that happens when accessing the roomlist for an account that's
Paul Aurich <darkrain42@pidgin.im>
parents: 22339
diff changeset
250 prpl_info->roomlist_get_list != NULL) {
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
251 PurpleAccount *account = purple_connection_get_account(gc);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
252 char *text = g_strdup_printf("%s (%s)",
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
253 purple_account_get_username(account),
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
254 purple_account_get_protocol_name(account));
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
255 gnt_combo_box_add_data(accounts, account, text);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
256 g_free(text);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
257 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
258 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
259 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
260
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
261 static void
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
262 size_changed_cb(GntWidget *widget, int oldw, int oldh)
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
263 {
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
264 int w, h;
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
265 gnt_widget_get_size(widget, &w, &h);
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
266 purple_prefs_set_int(PREF_ROOT "/size/width", w);
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
267 purple_prefs_set_int(PREF_ROOT "/size/height", h);
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
268 }
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
269
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
270 static void
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
271 setup_roomlist(PurpleAccount *account)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
272 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
273 GntWidget *window, *tree, *hbox, *accounts;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
274 int iter;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
275 struct {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
276 const char *label;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
277 GCallback callback;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
278 GntWidget **widget;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
279 } buttons[] = {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
280 {_("Stop"), G_CALLBACK(fl_stop), &froomlist.stop},
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
281 {_("Get"), G_CALLBACK(fl_get_list), &froomlist.getlist},
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
282 {_("Add"), G_CALLBACK(fl_add_chat), &froomlist.add},
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
283 {_("Close"), G_CALLBACK(fl_close), &froomlist.close},
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
284 {NULL, NULL, NULL}
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
285 };
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
286
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
287 if (froomlist.window)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
288 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
289
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
290 froomlist.window = window = gnt_window_new();
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
291 g_object_set(G_OBJECT(window), "vertical", TRUE, NULL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
292 gnt_box_set_pad(GNT_BOX(window), 0);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
293 gnt_box_set_title(GNT_BOX(window), _("Room List"));
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
294 gnt_box_set_alignment(GNT_BOX(window), GNT_ALIGN_MID);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
295
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
296 froomlist.accounts = accounts = gnt_combo_box_new();
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
297 reset_account_list(account);
22212
5389776ad09f Fix CID #380 by using an assigned variable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22169
diff changeset
298 gnt_box_add_widget(GNT_BOX(window), accounts);
5389776ad09f Fix CID #380 by using an assigned variable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22169
diff changeset
299 g_signal_connect(G_OBJECT(accounts), "selection-changed",
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
300 G_CALLBACK(roomlist_account_changed), NULL);
22212
5389776ad09f Fix CID #380 by using an assigned variable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22169
diff changeset
301 froomlist.account = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(accounts));
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
302
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
303 froomlist.tree = tree = gnt_tree_new_with_columns(2);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
304 gnt_tree_set_show_title(GNT_TREE(tree), TRUE);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
305 g_signal_connect(G_OBJECT(tree), "activate", G_CALLBACK(roomlist_activated), NULL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
306 gnt_tree_set_column_titles(GNT_TREE(tree), _("Name"), "");
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
307 gnt_tree_set_show_separator(GNT_TREE(tree), FALSE);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
308 gnt_tree_set_col_width(GNT_TREE(tree), 1, 1);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
309 gnt_tree_set_column_resizable(GNT_TREE(tree), 1, FALSE);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
310 gnt_tree_set_search_column(GNT_TREE(tree), 0);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
311
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
312 gnt_box_add_widget(GNT_BOX(window), tree);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
313
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
314 froomlist.details = gnt_text_view_new();
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
315 gnt_text_view_set_flag(GNT_TEXT_VIEW(froomlist.details), GNT_TEXT_VIEW_TOP_ALIGN);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
316 gnt_box_add_widget(GNT_BOX(window), froomlist.details);
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
317 gnt_widget_set_size(froomlist.details, -1, 8);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
318
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
319 hbox = gnt_hbox_new(FALSE);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
320 gnt_box_add_widget(GNT_BOX(window), hbox);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
321
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
322 for (iter = 0; buttons[iter].label; iter++) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
323 GntWidget *button = gnt_button_new(buttons[iter].label);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
324 gnt_box_add_widget(GNT_BOX(hbox), button);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
325 g_signal_connect(G_OBJECT(button), "activate", buttons[iter].callback, NULL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
326 *buttons[iter].widget = button;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
327 gnt_text_view_attach_scroll_widget(GNT_TEXT_VIEW(froomlist.details), button);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
328 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
329
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
330 g_signal_connect(G_OBJECT(tree), "selection-changed", G_CALLBACK(roomlist_selection_changed), NULL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
331
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
332 g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(unset_roomlist), NULL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
333 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
334
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
335 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
336 fl_show_with_account(PurpleAccount *account)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
337 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
338 setup_roomlist(account);
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
339 g_signal_handlers_disconnect_matched(G_OBJECT(froomlist.window), G_SIGNAL_MATCH_FUNC,
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
340 0, 0, NULL, G_CALLBACK(size_changed_cb), NULL);
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
341 gnt_widget_show(froomlist.window);
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
342 gnt_screen_resize_widget(froomlist.window,
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
343 purple_prefs_get_int(PREF_ROOT "/size/width"),
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
344 purple_prefs_get_int(PREF_ROOT "/size/height"));
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
345 g_signal_connect(G_OBJECT(froomlist.window), "size_changed", G_CALLBACK(size_changed_cb), NULL);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
346 gnt_window_present(froomlist.window);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
347 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
348
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
349 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
350 fl_create(PurpleRoomlist *list)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
351 {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
352 FINCH_SET_DATA(list, &froomlist);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
353 setup_roomlist(NULL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
354 update_roomlist(list);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
355 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
356
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
357 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
358 fl_set_fields(PurpleRoomlist *list, GList *fields)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
359 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
360 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
361
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
362 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
363 fl_add_room(PurpleRoomlist *roomlist, PurpleRoomlistRoom *room)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
364 {
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
365 gboolean category;
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
366 if (froomlist.roomlist != roomlist)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
367 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
368
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
369 category = (purple_roomlist_room_get_type(room) == PURPLE_ROOMLIST_ROOMTYPE_CATEGORY);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
370 gnt_tree_remove(GNT_TREE(froomlist.tree), room);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
371 gnt_tree_add_row_after(GNT_TREE(froomlist.tree), room,
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
372 gnt_tree_create_row(GNT_TREE(froomlist.tree),
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
373 purple_roomlist_room_get_name(room),
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
374 category ? "<" : ""),
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
375 purple_roomlist_room_get_parent(room), NULL);
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
376 gnt_tree_set_expanded(GNT_TREE(froomlist.tree), room, !category);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
377 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
378
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
379 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
380 fl_destroy(PurpleRoomlist *list)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
381 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
382 if (!froomlist.window)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
383 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
384
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
385 if (froomlist.roomlist == list) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
386 froomlist.roomlist = NULL;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
387 gnt_tree_remove_all(GNT_TREE(froomlist.tree));
22146
c1fb24f33a22 Typo can cause crashes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22136
diff changeset
388 gnt_widget_draw(froomlist.tree);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
389 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
390 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
391
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
392 static PurpleRoomlistUiOps ui_ops =
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
393 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
394 fl_show_with_account, /* void (*show_with_account)(PurpleAccount *account); **< Force the ui to pop up a dialog and get the list */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
395 fl_create, /* void (*create)(PurpleRoomlist *list); **< A new list was created. */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
396 fl_set_fields, /* void (*set_fields)(PurpleRoomlist *list, GList *fields); **< Sets the columns. */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
397 fl_add_room, /* void (*add_room)(PurpleRoomlist *list, PurpleRoomlistRoom *room); **< Add a room to the list. */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
398 NULL, /* void (*in_progress)(PurpleRoomlist *list, gboolean flag); **< Are we fetching stuff still? */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
399 fl_destroy, /* void (*destroy)(PurpleRoomlist *list); **< We're destroying list. */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
400
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
401 NULL, /* void (*_purple_reserved1)(void); */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
402 NULL, /* void (*_purple_reserved2)(void); */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
403 NULL, /* void (*_purple_reserved3)(void); */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
404 NULL /* void (*_purple_reserved4)(void); */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
405 };
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
406
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
407 PurpleRoomlistUiOps *finch_roomlist_get_ui_ops(void)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
408 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
409 return &ui_ops;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
410 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
411
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
412 void finch_roomlist_show_all(void)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
413 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
414 purple_roomlist_show_with_account(NULL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
415 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
416
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
417 void finch_roomlist_init(void)
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
418 {
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
419 purple_prefs_add_none(PREF_ROOT);
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
420 purple_prefs_add_none(PREF_ROOT "/size");
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
421 purple_prefs_add_int(PREF_ROOT "/size/width", 60);
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
422 purple_prefs_add_int(PREF_ROOT "/size/height", 15);
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
423 }
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
424
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
425 void finch_roomlist_uninit(void)
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
426 {
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
427 }
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
428

mercurial