finch/gntroomlist.c

Tue, 03 May 2016 14:04:15 -0400

author
Youness Alaoui <kakaroto@kakaroto.homelinux.net>
date
Tue, 03 May 2016 14:04:15 -0400
changeset 37759
35e8677c6ce5
parent 37066
1ebce1f4993b
child 39759
ea1401483849
permissions
-rw-r--r--

oscar: Prepend server option instead of appending it

This allows server/port to be together and appear on top of the
advanced settings instead of having port on top and server at the bottom

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

mercurial