finch/gntroomlist.c

Tue, 07 Apr 2020 02:27:08 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Tue, 07 Apr 2020 02:27:08 -0500
changeset 40385
c3e9a7d14e6f
parent 39901
253056947264
child 40359
ca141ea93b83
permissions
-rw-r--r--

Move the mood api to it's own files and remove the remaining bits of the old menu bar from gtkblist

39887
9c8f874c74a0 Clean up all of the license headers
Gary Kramlich <grim@reaperworld.com>
parents: 39759
diff changeset
1 /*
9c8f874c74a0 Clean up all of the license headers
Gary Kramlich <grim@reaperworld.com>
parents: 39759
diff changeset
2 * finch
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3 *
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
4 * 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
5 * 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
6 * source distribution.
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 * 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
9 * 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
10 * 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
11 * (at your option) any later version.
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
12 *
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
13 * 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
14 * 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
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
17 *
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
18 * 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
19 * 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
20 * 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
21 */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
22
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
23 #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
24 #include <internal.h>
22136
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 #include "gntrequest.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
27 #include "gntroomlist.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
28
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
29 #include "gntbox.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
30 #include "gntbutton.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
31 #include "gntcombobox.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
32 #include "gnttextview.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
33 #include "gnttree.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
34 #include "gntwindow.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
35
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
36 #include "debug.h"
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
37
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
38 #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
39
32218
f27b05250351 Some struct hiding. What a pain.
Mark Doliner <markdoliner@pidgin.im>
parents: 27829
diff changeset
40
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
41 /* 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
42 struct _FinchRoomlist
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
43 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
44 GntWidget *window;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
45
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
46 GntWidget *accounts;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
47 GntWidget *tree;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
48 GntWidget *details;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
49
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
50 GntWidget *getlist;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
51 GntWidget *add;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
52 GntWidget *join;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
53 GntWidget *stop;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
54 GntWidget *close;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
55
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
56 PurpleAccount *account;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
57 PurpleRoomlist *roomlist;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
58 } froomlist;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
59
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
60 typedef struct _FinchRoomlist FinchRoomlist;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
61
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
62 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
63 unset_roomlist(gpointer null)
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 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
66 if (froomlist.roomlist) {
34932
1b74e5c63144 Use g_object_{ref|unref} instead of purple_roomlist_{ref|unref}
Ankit Vani <a@nevitus.org>
parents: 32252
diff changeset
67 g_object_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
68 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
69 }
bed812105128 Unset some stuff to make sure Sylar can't kill us.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22147
diff changeset
70 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
71 froomlist.tree = NULL;
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
72 }
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 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
75 update_roomlist(PurpleRoomlist *list)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
76 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
77 if (froomlist.roomlist == list)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
78 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
79
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
80 if (froomlist.roomlist)
34932
1b74e5c63144 Use g_object_{ref|unref} instead of purple_roomlist_{ref|unref}
Ankit Vani <a@nevitus.org>
parents: 32252
diff changeset
81 g_object_unref(froomlist.roomlist);
22136
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 if ((froomlist.roomlist = list) != NULL)
34932
1b74e5c63144 Use g_object_{ref|unref} instead of purple_roomlist_{ref|unref}
Ankit Vani <a@nevitus.org>
parents: 32252
diff changeset
84 g_object_ref(list);
22136
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
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
87 static void fl_stop(GntWidget *button, gpointer null)
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_get_in_progress(froomlist.roomlist))
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
91 purple_roomlist_cancel_get_list(froomlist.roomlist);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
92 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
93
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
94 static void fl_get_list(GntWidget *button, gpointer null)
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 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
97 PurpleConnection *gc = purple_account_get_connection(account);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
98
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
99 if (!gc)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
100 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
101
22169
bed812105128 Unset some stuff to make sure Sylar can't kill us.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22147
diff changeset
102 update_roomlist(NULL);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
103 froomlist.roomlist = purple_roomlist_get_list(gc);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
104 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
105 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
106
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
107 static void fl_add_chat(GntWidget *button, gpointer null)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
108 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
109 char *name;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
110 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
111 PurpleConnection *gc = purple_account_get_connection(froomlist.account);
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36404
diff changeset
112 PurpleProtocol *protocol = NULL;
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
113
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
114 if (gc == NULL || room == NULL)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
115 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
116
36623
caaadef03507 Renamed purple_connection_get_protocol_info() to purple_connection_get_protocol()
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
117 protocol = purple_connection_get_protocol(gc);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
118
39901
253056947264 finch: Remove redundant checks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39887
diff changeset
119 if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, ROOMLIST, room_serialize)) {
36719
0d7682bdf828 Updated protocol iface calls
Ankit Vani <a@nevitus.org>
parents: 36690
diff changeset
120 name = purple_protocol_roomlist_iface_room_serialize(protocol, room);
39901
253056947264 finch: Remove redundant checks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39887
diff changeset
121 } else {
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
122 name = g_strdup(purple_roomlist_room_get_name(room));
39901
253056947264 finch: Remove redundant checks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39887
diff changeset
123 }
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
124
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
125 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
126
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
127 g_free(name);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
128 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
129
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
130 static void fl_close(GntWidget *button, gpointer null)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
131 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
132 gnt_widget_destroy(froomlist.window);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
133 }
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 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
136 roomlist_activated(GntWidget *widget)
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 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
139 if (!room)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
140 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
141
35021
eaf8156d3c5e Renamed purple_roomlist_room_get_type to *_get_room_type, purple_roomlist_field_get_type to *_get_field_type
Ankit Vani <a@nevitus.org>
parents: 34932
diff changeset
142 switch (purple_roomlist_room_get_room_type(room)) {
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
143 case PURPLE_ROOMLIST_ROOMTYPE_ROOM:
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
144 purple_roomlist_room_join(froomlist.roomlist, room);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
145 break;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
146 case PURPLE_ROOMLIST_ROOMTYPE_CATEGORY:
32218
f27b05250351 Some struct hiding. What a pain.
Mark Doliner <markdoliner@pidgin.im>
parents: 27829
diff changeset
147 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
148 purple_roomlist_expand_category(froomlist.roomlist, room);
32218
f27b05250351 Some struct hiding. What a pain.
Mark Doliner <markdoliner@pidgin.im>
parents: 27829
diff changeset
149 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
150 }
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
151 break;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
152 }
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
153 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
154 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
155
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
156 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
157 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
158 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
159 GList *iter, *field;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
160 PurpleRoomlistRoom *room = current;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
161 GntTextView *tv = GNT_TEXT_VIEW(froomlist.details);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
162 gboolean first = TRUE;
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 gnt_text_view_clear(tv);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
165
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
166 if (!room)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
167 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
168
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
169 for (iter = purple_roomlist_room_get_fields(room),
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
170 field = purple_roomlist_get_fields(froomlist.roomlist);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
171 iter && field;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
172 iter = iter->next, field = field->next) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
173 PurpleRoomlistField *f = field->data;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
174 char *label = NULL;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
175
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
176 if (purple_roomlist_field_get_hidden(f)) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
177 continue;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
178 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
179
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
180 if (!first)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
181 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
182
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
183 gnt_text_view_append_text_with_flags(tv,
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
184 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
185 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
186
35021
eaf8156d3c5e Renamed purple_roomlist_room_get_type to *_get_room_type, purple_roomlist_field_get_type to *_get_field_type
Ankit Vani <a@nevitus.org>
parents: 34932
diff changeset
187 switch (purple_roomlist_field_get_field_type(f)) {
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
188 case PURPLE_ROOMLIST_FIELD_BOOL:
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
189 label = g_strdup(iter->data ? "True" : "False");
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
190 break;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
191 case PURPLE_ROOMLIST_FIELD_INT:
26528
3820f77c89fa Fix Finch warnings when building on 64-bit
Paul Aurich <darkrain42@pidgin.im>
parents: 24863
diff changeset
192 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
193 break;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
194 case PURPLE_ROOMLIST_FIELD_STRING:
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
195 label = g_strdup(iter->data);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
196 break;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
197 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
198 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
199 g_free(label);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
200 first = FALSE;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
201 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
202
35021
eaf8156d3c5e Renamed purple_roomlist_room_get_type to *_get_room_type, purple_roomlist_field_get_type to *_get_field_type
Ankit Vani <a@nevitus.org>
parents: 34932
diff changeset
203 if (purple_roomlist_room_get_room_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
204 if (!first)
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
205 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
206 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
207 _("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
208 GNT_TEXT_FLAG_NORMAL);
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
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
212 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
213 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
214 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
215 if (froomlist.account == current) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
216 return;
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 froomlist.account = current;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
220 if (froomlist.roomlist) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
221 if (purple_roomlist_get_in_progress(froomlist.roomlist))
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
222 purple_roomlist_cancel_get_list(froomlist.roomlist);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
223 update_roomlist(NULL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
224 }
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 gnt_tree_remove_all(GNT_TREE(froomlist.tree));
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
227 gnt_widget_draw(froomlist.tree);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
228 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
229
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
230 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
231 reset_account_list(PurpleAccount *account)
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 GList *list;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
234 GntComboBox *accounts = GNT_COMBO_BOX(froomlist.accounts);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
235 gnt_combo_box_remove_all(accounts);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
236 for (list = purple_connections_get_all(); list; list = list->next) {
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36404
diff changeset
237 PurpleProtocol *protocol = NULL;
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
238 PurpleConnection *gc = list->data;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
239
36623
caaadef03507 Renamed purple_connection_get_protocol_info() to purple_connection_get_protocol()
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
240 protocol = purple_connection_get_protocol(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
241 if (PURPLE_CONNECTION_IS_CONNECTED(gc) &&
39759
ea1401483849 Rename *_GET_*_IFACE to more standard *_GET_IFACE.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37066
diff changeset
242 PURPLE_PROTOCOL_IMPLEMENTS(protocol, ROOMLIST, get_list)) {
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
243 PurpleAccount *account = purple_connection_get_account(gc);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
244 char *text = g_strdup_printf("%s (%s)",
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
245 purple_account_get_username(account),
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
246 purple_account_get_protocol_name(account));
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
247 gnt_combo_box_add_data(accounts, account, text);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
248 g_free(text);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
249 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
250 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
251 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
252
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
253 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
254 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
255 {
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
256 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
257 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
258 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
259 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
260 }
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
261
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
262 static void
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
263 setup_roomlist(PurpleAccount *account)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
264 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
265 GntWidget *window, *tree, *hbox, *accounts;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
266 int iter;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
267 struct {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
268 const char *label;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
269 GCallback callback;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
270 GntWidget **widget;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
271 } buttons[] = {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
272 {_("Stop"), G_CALLBACK(fl_stop), &froomlist.stop},
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
273 {_("Get"), G_CALLBACK(fl_get_list), &froomlist.getlist},
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
274 {_("Add"), G_CALLBACK(fl_add_chat), &froomlist.add},
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
275 {_("Close"), G_CALLBACK(fl_close), &froomlist.close},
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
276 {NULL, NULL, NULL}
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
277 };
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
278
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
279 if (froomlist.window)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
280 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
281
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
282 froomlist.window = window = gnt_window_new();
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
283 g_object_set(G_OBJECT(window), "vertical", TRUE, NULL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
284 gnt_box_set_pad(GNT_BOX(window), 0);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
285 gnt_box_set_title(GNT_BOX(window), _("Room List"));
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
286 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
287
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
288 froomlist.accounts = accounts = gnt_combo_box_new();
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
289 reset_account_list(account);
22212
5389776ad09f Fix CID #380 by using an assigned variable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22169
diff changeset
290 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
291 g_signal_connect(G_OBJECT(accounts), "selection-changed",
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
292 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
293 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
294
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
295 froomlist.tree = tree = gnt_tree_new_with_columns(2);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
296 gnt_tree_set_show_title(GNT_TREE(tree), TRUE);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
297 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
298 gnt_tree_set_column_titles(GNT_TREE(tree), _("Name"), "");
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
299 gnt_tree_set_show_separator(GNT_TREE(tree), FALSE);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
300 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
301 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
302 gnt_tree_set_search_column(GNT_TREE(tree), 0);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
303
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
304 gnt_box_add_widget(GNT_BOX(window), tree);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
305
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
306 froomlist.details = gnt_text_view_new();
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
307 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
308 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
309 gnt_widget_set_size(froomlist.details, -1, 8);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
310
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
311 hbox = gnt_hbox_new(FALSE);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
312 gnt_box_add_widget(GNT_BOX(window), hbox);
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 for (iter = 0; buttons[iter].label; iter++) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
315 GntWidget *button = gnt_button_new(buttons[iter].label);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
316 gnt_box_add_widget(GNT_BOX(hbox), button);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
317 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
318 *buttons[iter].widget = button;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
319 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
320 }
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 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
323
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
324 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
325 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
326
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
327 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
328 fl_show_with_account(PurpleAccount *account)
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 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
331 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
332 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
333 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
334 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
335 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
336 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
337 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
338 gnt_window_present(froomlist.window);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
339 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
340
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
341 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
342 fl_create(PurpleRoomlist *list)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
343 {
32252
2e532b3062eb Rather use the accessor functions directly.
Andrew Victor <andrew.victor@mxit.com>
parents: 32218
diff changeset
344 purple_roomlist_set_ui_data(list, &froomlist);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
345 setup_roomlist(NULL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
346 update_roomlist(list);
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_set_fields(PurpleRoomlist *list, GList *fields)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
351 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
352 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
353
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
354 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
355 fl_add_room(PurpleRoomlist *roomlist, PurpleRoomlistRoom *room)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
356 {
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
357 gboolean category;
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
358 if (froomlist.roomlist != roomlist)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
359 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
360
35021
eaf8156d3c5e Renamed purple_roomlist_room_get_type to *_get_room_type, purple_roomlist_field_get_type to *_get_field_type
Ankit Vani <a@nevitus.org>
parents: 34932
diff changeset
361 category = (purple_roomlist_room_get_room_type(room) == PURPLE_ROOMLIST_ROOMTYPE_CATEGORY);
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
362 gnt_tree_remove(GNT_TREE(froomlist.tree), room);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
363 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
364 gnt_tree_create_row(GNT_TREE(froomlist.tree),
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
365 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
366 category ? "<" : ""),
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
367 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
368 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
369 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
370
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
371 static void
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
372 fl_destroy(PurpleRoomlist *list)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
373 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
374 if (!froomlist.window)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
375 return;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
376
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
377 if (froomlist.roomlist == list) {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
378 froomlist.roomlist = NULL;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
379 gnt_tree_remove_all(GNT_TREE(froomlist.tree));
22146
c1fb24f33a22 Typo can cause crashes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22136
diff changeset
380 gnt_widget_draw(froomlist.tree);
22136
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 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
383
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
384 static PurpleRoomlistUiOps ui_ops =
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
385 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
386 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
387 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
388 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
389 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
390 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
391 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
392
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
393 NULL, /* void (*_purple_reserved1)(void); */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
394 NULL, /* void (*_purple_reserved2)(void); */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
395 NULL, /* void (*_purple_reserved3)(void); */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
396 NULL /* void (*_purple_reserved4)(void); */
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
397 };
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
398
22136
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
399 PurpleRoomlistUiOps *finch_roomlist_get_ui_ops(void)
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 return &ui_ops;
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
402 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
403
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
404 void finch_roomlist_show_all(void)
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
405 {
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
406 purple_roomlist_show_with_account(NULL);
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
407 }
9db77fc00a0e Implementation of the roomlist API.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
408
22147
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
409 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
410 {
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
411 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
412 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
413 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
414 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
415 }
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
416
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_uninit(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 }
08e54b0f86a3 Remember the size of the roomlist window. Handle the categories better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22146
diff changeset
420

mercurial