Mercurial > pidgin
annotate finch/gntroomlist.c @ 22750:4040c4ee1f44
Clicking on the buddyicon in the conversation window toggles the size of
the icon between small (32px) and large (96px). The size can also be
changed from the context menu for the icon.
I initially tried to make double-click change the size, instead of a
single-click. But something was going wrong with tab-dragging. If single
clicking is massively unpopular, I can look at getting the double-click
to work.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Sat, 26 Apr 2008 23:14:00 +0000 |
parents | ad357ca94de9 |
children | c1f954e51389 |
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 |