annotate finch/gntroomlist.c @ 22811:7883ed211f3e

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