pidgin/gtkroomlist.c

Fri, 14 Sep 2007 17:55:05 +0000

author
Daniel Atallah <datallah@pidgin.im>
date
Fri, 14 Sep 2007 17:55:05 +0000
changeset 20073
dbea205441ea
parent 19859
71d37b57eff2
child 20147
66f05a854eee
permissions
-rw-r--r--

Fix proxy settings to be loaded correctly when libpurple is initialized. This was broken because it relied on the prefs being loaded after proxy initialization so that the pref callbacks would be triggered and I changed the prefs loading to happen right at the beginning to fix other issues. Fixes #3092.

8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
1 /**
8939
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
2 * @file gtkroomlist.c GTK+ Room List UI
16254
eeb2bba4dc94 Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents: 15931
diff changeset
3 * @ingroup pidgin
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
4 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
5 * pidgin
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
6 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
7 * Pidgin is the legal property of its developers, whose names are too numerous
8146
4961c9c5fd61 [gaim-migrate @ 8854]
John Silvestri <john.silvestri@gmail.com>
parents: 8143
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
4961c9c5fd61 [gaim-migrate @ 8854]
John Silvestri <john.silvestri@gmail.com>
parents: 8143
diff changeset
9 * source distribution.
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
10 *
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
14 * (at your option) any later version.
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
15 *
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
19 * GNU General Public License for more details.
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
20 *
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18122
diff changeset
23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
24 */
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
25
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9606
diff changeset
26 #include "internal.h"
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15570
diff changeset
27 #include "pidgin.h"
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
28 #include "gtkutils.h"
15883
969b74a3e27a According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
29 #include "pidginstock.h"
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
30 #include "debug.h"
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
31 #include "account.h"
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
32 #include "connection.h"
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
33 #include "notify.h"
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
34
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
35 #include "gtkroomlist.h"
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
36
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
37 typedef struct _PidginRoomlistDialog {
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
38 GtkWidget *window;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
39 GtkWidget *account_widget;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
40 GtkWidget *progress;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
41 GtkWidget *sw;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
42
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
43 GtkWidget *stop_button;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
44 GtkWidget *list_button;
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
45 GtkWidget *add_button;
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
46 GtkWidget *join_button;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
47 GtkWidget *close_button;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
48
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
49 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
50 PurpleRoomlist *roomlist;
8230
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
51
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
52 gboolean pg_needs_pulse;
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
53 gboolean pg_to_active;
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
54 guint pg_update_to;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
55 } PidginRoomlistDialog;
14649
38e6b75e6769 [gaim-migrate @ 17311]
Etan Reisner <deryni@pidgin.im>
parents: 14253
diff changeset
56
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
57 typedef struct _PidginRoomlist {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
58 PidginRoomlistDialog *dialog;
14649
38e6b75e6769 [gaim-migrate @ 17311]
Etan Reisner <deryni@pidgin.im>
parents: 14253
diff changeset
59 GtkTreeStore *model;
38e6b75e6769 [gaim-migrate @ 17311]
Etan Reisner <deryni@pidgin.im>
parents: 14253
diff changeset
60 GtkWidget *tree;
38e6b75e6769 [gaim-migrate @ 17311]
Etan Reisner <deryni@pidgin.im>
parents: 14253
diff changeset
61 GHashTable *cats; /**< Meow. */
38e6b75e6769 [gaim-migrate @ 17311]
Etan Reisner <deryni@pidgin.im>
parents: 14253
diff changeset
62 gint num_rooms, total_rooms;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
63 } PidginRoomlist;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
64
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
65 enum {
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
66 NAME_COLUMN = 0,
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
67 ROOM_COLUMN,
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
68 NUM_OF_COLUMNS,
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
69 };
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
70
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
71 static GList *roomlists = NULL;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
72
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
73 static gint delete_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
74 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
75 PidginRoomlistDialog *dialog;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
76
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
77 dialog = (PidginRoomlistDialog *) d;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
78
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
79 if (dialog->roomlist && purple_roomlist_get_in_progress(dialog->roomlist))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
80 purple_roomlist_cancel_get_list(dialog->roomlist);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
81
8230
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
82 if (dialog->roomlist) {
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
83 if (dialog->pg_to_active) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
84 purple_timeout_remove(dialog->pg_update_to);
8230
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
85 dialog->pg_to_active = FALSE;
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
86 /* yes, that's right, unref it twice. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
87 purple_roomlist_unref(dialog->roomlist);
8230
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
88 }
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
89 }
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
90
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
91 /* free stuff here */
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
92 if (dialog->roomlist)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
93 purple_roomlist_unref(dialog->roomlist);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
94 g_free(dialog);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
95
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
96 return FALSE;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
97 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
98
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
99 static void dialog_select_account_cb(GObject *w, PurpleAccount *account,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
100 PidginRoomlistDialog *dialog)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
101 {
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
102 dialog->account = account;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
103 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
104
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
105 static void list_button_cb(GtkButton *button, PidginRoomlistDialog *dialog)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
106 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
107 PurpleConnection *gc;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
108 PidginRoomlist *rl;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
109
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
110 gc = purple_account_get_connection(dialog->account);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
111 if (!gc)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
112 return;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
113
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
114 if (dialog->roomlist != NULL) {
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
115 rl = dialog->roomlist->ui_data;
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
116 gtk_widget_destroy(rl->tree);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
117 purple_roomlist_unref(dialog->roomlist);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
118 }
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
119
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
120 dialog->roomlist = purple_roomlist_get_list(gc);
9159
53c79c8258ee [gaim-migrate @ 9943]
Tim Ringenbach <marv@pidgin.im>
parents: 9067
diff changeset
121 if (!dialog->roomlist)
53c79c8258ee [gaim-migrate @ 9943]
Tim Ringenbach <marv@pidgin.im>
parents: 9067
diff changeset
122 return;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
123 purple_roomlist_ref(dialog->roomlist);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
124 rl = dialog->roomlist->ui_data;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
125 rl->dialog = dialog;
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
126
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
127 if (dialog->account_widget)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
128 gtk_widget_set_sensitive(dialog->account_widget, FALSE);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
129
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
130 gtk_container_add(GTK_CONTAINER(dialog->sw), rl->tree);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
131
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
132 /* some protocols (not bundled with libpurple) finish getting their
15350
9bf3d19afa95 [gaim-migrate @ 18078]
Nathan Walp <nwalp@pidgin.im>
parents: 15185
diff changeset
133 * room list immediately */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
134 if(purple_roomlist_get_in_progress(dialog->roomlist)) {
15350
9bf3d19afa95 [gaim-migrate @ 18078]
Nathan Walp <nwalp@pidgin.im>
parents: 15185
diff changeset
135 gtk_widget_set_sensitive(dialog->stop_button, TRUE);
9bf3d19afa95 [gaim-migrate @ 18078]
Nathan Walp <nwalp@pidgin.im>
parents: 15185
diff changeset
136 gtk_widget_set_sensitive(dialog->list_button, FALSE);
9bf3d19afa95 [gaim-migrate @ 18078]
Nathan Walp <nwalp@pidgin.im>
parents: 15185
diff changeset
137 } else {
9bf3d19afa95 [gaim-migrate @ 18078]
Nathan Walp <nwalp@pidgin.im>
parents: 15185
diff changeset
138 gtk_widget_set_sensitive(dialog->stop_button, FALSE);
9bf3d19afa95 [gaim-migrate @ 18078]
Nathan Walp <nwalp@pidgin.im>
parents: 15185
diff changeset
139 gtk_widget_set_sensitive(dialog->list_button, TRUE);
9bf3d19afa95 [gaim-migrate @ 18078]
Nathan Walp <nwalp@pidgin.im>
parents: 15185
diff changeset
140 }
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
141 gtk_widget_set_sensitive(dialog->add_button, FALSE);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
142 gtk_widget_set_sensitive(dialog->join_button, FALSE);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
143 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
144
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
145 static void stop_button_cb(GtkButton *button, PidginRoomlistDialog *dialog)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
146 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
147 purple_roomlist_cancel_get_list(dialog->roomlist);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
148
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
149 if (dialog->account_widget)
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
150 gtk_widget_set_sensitive(dialog->account_widget, TRUE);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
151
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
152 gtk_widget_set_sensitive(dialog->stop_button, FALSE);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
153 gtk_widget_set_sensitive(dialog->list_button, TRUE);
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
154 gtk_widget_set_sensitive(dialog->add_button, FALSE);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
155 gtk_widget_set_sensitive(dialog->join_button, FALSE);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
156 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
157
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
158 static void close_button_cb(GtkButton *button, PidginRoomlistDialog *dialog)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
159 {
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
160 GtkWidget *window = dialog->window;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
161
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
162 delete_win_cb(NULL, NULL, dialog);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
163 gtk_widget_destroy(window);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
164 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
165
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
166 struct _menu_cb_info {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
167 PurpleRoomlist *list;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
168 PurpleRoomlistRoom *room;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
169 };
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
170
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
171 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
172 selection_changed_cb(GtkTreeSelection *selection, PidginRoomlist *grl) {
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
173 GtkTreeIter iter;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
174 GValue val;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
175 PurpleRoomlistRoom *room;
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
176 static struct _menu_cb_info *info;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
177 PidginRoomlistDialog *dialog;
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
178
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
179 dialog = grl->dialog;
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
180
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
181 if (gtk_tree_selection_get_selected(selection, NULL, &iter)) {
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
182 val.g_type = 0;
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
183 gtk_tree_model_get_value(GTK_TREE_MODEL(grl->model), &iter, ROOM_COLUMN, &val);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
184 room = g_value_get_pointer(&val);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
185 if (!room || !(room->type & PURPLE_ROOMLIST_ROOMTYPE_ROOM)) {
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
186 gtk_widget_set_sensitive(dialog->join_button, FALSE);
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
187 gtk_widget_set_sensitive(dialog->add_button, FALSE);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
188 return;
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
189 }
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
190
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
191 info = g_new0(struct _menu_cb_info, 1);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
192 info->list = dialog->roomlist;
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
193 info->room = room;
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
194
8377
b9d009068760 [gaim-migrate @ 9104]
Tim Ringenbach <marv@pidgin.im>
parents: 8352
diff changeset
195 g_object_set_data_full(G_OBJECT(dialog->join_button), "room-info",
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
196 info, g_free);
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
197 g_object_set_data(G_OBJECT(dialog->add_button), "room-info", info);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
198
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
199 gtk_widget_set_sensitive(dialog->add_button, TRUE);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
200 gtk_widget_set_sensitive(dialog->join_button, TRUE);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
201 } else {
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
202 gtk_widget_set_sensitive(dialog->add_button, FALSE);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
203 gtk_widget_set_sensitive(dialog->join_button, FALSE);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
204 }
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
205 }
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
206
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
207 static void do_add_room_cb(GtkWidget *w, struct _menu_cb_info *info)
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
208 {
15185
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 14649
diff changeset
209 char *name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
210 PurpleConnection *gc = purple_account_get_connection(info->list->account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
211 PurplePluginProtocolInfo *prpl_info = NULL;
15185
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 14649
diff changeset
212
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 14649
diff changeset
213 if(gc != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
214 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl);
15185
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 14649
diff changeset
215
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 14649
diff changeset
216 if(prpl_info != NULL && prpl_info->roomlist_room_serialize)
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 14649
diff changeset
217 name = prpl_info->roomlist_room_serialize(info->room);
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 14649
diff changeset
218 else
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 14649
diff changeset
219 name = g_strdup(info->room->name);
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 14649
diff changeset
220
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
221 purple_blist_request_add_chat(info->list->account, NULL, NULL, name);
15185
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 14649
diff changeset
222
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 14649
diff changeset
223 g_free(name);
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
224 }
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
225
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
226 static void add_room_to_blist_cb(GtkButton *button, PidginRoomlistDialog *dialog)
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
227 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
228 PurpleRoomlist *rl = dialog->roomlist;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
229 PidginRoomlist *grl = rl->ui_data;
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
230 struct _menu_cb_info *info;
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
231
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
232 info = (struct _menu_cb_info*)g_object_get_data(G_OBJECT(button), "room-info");
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
233
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
234 if(info != NULL)
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
235 do_add_room_cb(grl->tree, info);
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
236 }
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
237
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
238 static void do_join_cb(GtkWidget *w, struct _menu_cb_info *info)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
239 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
240 purple_roomlist_room_join(info->list, info->room);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
241 }
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
242
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
243 static void join_button_cb(GtkButton *button, PidginRoomlistDialog *dialog)
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
244 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
245 PurpleRoomlist *rl = dialog->roomlist;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
246 PidginRoomlist *grl = rl->ui_data;
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
247 struct _menu_cb_info *info;
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
248
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
249 info = (struct _menu_cb_info*)g_object_get_data(G_OBJECT(button), "room-info");
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
250
8377
b9d009068760 [gaim-migrate @ 9104]
Tim Ringenbach <marv@pidgin.im>
parents: 8352
diff changeset
251 if(info != NULL)
b9d009068760 [gaim-migrate @ 9104]
Tim Ringenbach <marv@pidgin.im>
parents: 8352
diff changeset
252 do_join_cb(grl->tree, info);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
253 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
254
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
255 static void row_activated_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *arg2,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
256 PurpleRoomlist *list)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
257 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
258 PidginRoomlist *grl = list->ui_data;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
259 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
260 PurpleRoomlistRoom *room;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
261 GValue val;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
262 struct _menu_cb_info info;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
263
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
264 gtk_tree_model_get_iter(GTK_TREE_MODEL(grl->model), &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
265 val.g_type = 0;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
266 gtk_tree_model_get_value(GTK_TREE_MODEL(grl->model), &iter, ROOM_COLUMN, &val);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
267 room = g_value_get_pointer(&val);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
268 if (!room || !(room->type & PURPLE_ROOMLIST_ROOMTYPE_ROOM))
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
269 return;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
270
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
271 info.list = list;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
272 info.room = room;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
273
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
274 do_join_cb(GTK_WIDGET(tv), &info);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
275 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
276
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
277 static gboolean room_click_cb(GtkWidget *tv, GdkEventButton *event, PurpleRoomlist *list)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
278 {
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
279 GtkTreePath *path;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
280 PidginRoomlist *grl = list->ui_data;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
281 GValue val;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
282 PurpleRoomlistRoom *room;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
283 GtkTreeIter iter;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
284 GtkWidget *menu;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
285 static struct _menu_cb_info info; /* XXX? */
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
286
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
287 if (event->button != 3 || event->type != GDK_BUTTON_PRESS)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
288 return FALSE;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
289
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
290 /* Here we figure out which room was clicked */
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
291 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), event->x, event->y, &path, NULL, NULL, NULL))
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
292 return FALSE;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
293 gtk_tree_model_get_iter(GTK_TREE_MODEL(grl->model), &iter, path);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
294 gtk_tree_path_free(path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
295 val.g_type = 0;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
296 gtk_tree_model_get_value (GTK_TREE_MODEL(grl->model), &iter, ROOM_COLUMN, &val);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
297 room = g_value_get_pointer(&val);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
298
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
299 if (!room || !(room->type & PURPLE_ROOMLIST_ROOMTYPE_ROOM))
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
300 return FALSE;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
301
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
302 info.list = list;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
303 info.room = room;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
304
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
305 menu = gtk_menu_new();
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
306 pidgin_new_item_from_stock(menu, _("_Join"), PIDGIN_STOCK_CHAT,
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
307 G_CALLBACK(do_join_cb), &info, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
308 pidgin_new_item_from_stock(menu, _("_Add"), GTK_STOCK_ADD,
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
309 G_CALLBACK(do_add_room_cb), &info, 0, 0, NULL);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
310
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
311 gtk_widget_show_all(menu);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
312 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3, event->time);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
313
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
314 return FALSE;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
315 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
316
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
317 static void row_expanded_cb(GtkTreeView *treeview, GtkTreeIter *arg1, GtkTreePath *arg2, gpointer user_data)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
318 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
319 PurpleRoomlist *list = user_data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
320 PurpleRoomlistRoom *category;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
321 GValue val;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
322
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12286
diff changeset
323 val.g_type = 0;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
324 gtk_tree_model_get_value(gtk_tree_view_get_model(treeview), arg1, ROOM_COLUMN, &val);
8584
871f67e4aa3c [gaim-migrate @ 9334]
Daniel Atallah <datallah@pidgin.im>
parents: 8425
diff changeset
325 category = g_value_get_pointer(&val);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
326
8584
871f67e4aa3c [gaim-migrate @ 9334]
Daniel Atallah <datallah@pidgin.im>
parents: 8425
diff changeset
327 if (!category->expanded_once) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
328 purple_roomlist_expand_category(list, category);
8584
871f67e4aa3c [gaim-migrate @ 9334]
Daniel Atallah <datallah@pidgin.im>
parents: 8425
diff changeset
329 category->expanded_once = TRUE;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
330 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
331 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
332
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
333 static gboolean account_filter_func(PurpleAccount *account)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
334 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
335 PurpleConnection *gc = purple_account_get_connection(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
336 PurplePluginProtocolInfo *prpl_info = NULL;
8939
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
337
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
338 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl);
8939
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
339
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
340 return (prpl_info->roomlist_get_list != NULL);
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
341 }
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
342
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
343 gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
344 pidgin_roomlist_is_showable()
8939
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
345 {
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
346 GList *c;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
347 PurpleConnection *gc;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
348
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
349 for (c = purple_connections_get_all(); c != NULL; c = c->next) {
8939
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
350 gc = c->data;
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
351
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
352 if (account_filter_func(purple_connection_get_account(gc)))
8939
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
353 return TRUE;
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
354 }
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
355
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
356 return FALSE;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
357 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
358
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
359 static PidginRoomlistDialog *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
360 pidgin_roomlist_dialog_new_with_account(PurpleAccount *account)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
361 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
362 PidginRoomlistDialog *dialog;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
363 GtkWidget *window;
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
364 GtkWidget *vbox;
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
365 GtkWidget *vbox2;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
366 GtkWidget *account_hbox;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
367 GtkWidget *bbox;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
368 GtkWidget *label;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
369
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
370 dialog = g_new0(PidginRoomlistDialog, 1);
8937
b436e9cbd701 [gaim-migrate @ 9707]
Mark Doliner <markdoliner@pidgin.im>
parents: 8584
diff changeset
371 dialog->account = account;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
372
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
373 /* Create the window. */
17213
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 16752
diff changeset
374 dialog->window = window = pidgin_create_window(_("Room List"), PIDGIN_HIG_BORDER, "room list", TRUE);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
375
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
376 g_signal_connect(G_OBJECT(window), "delete_event",
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
377 G_CALLBACK(delete_win_cb), dialog);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
378
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
379 /* Create the parent vbox for everything. */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
380 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
381 gtk_container_add(GTK_CONTAINER(window), vbox);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
382 gtk_widget_show(vbox);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
383
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
384 vbox2 = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
385 gtk_container_add(GTK_CONTAINER(vbox), vbox2);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
386 gtk_widget_show(vbox2);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
387
8352
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
388 /* accounts dropdown list */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
389 account_hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
8352
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
390 gtk_box_pack_start(GTK_BOX(vbox2), account_hbox, FALSE, FALSE, 0);
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
391 gtk_widget_show(account_hbox);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
392
8352
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
393 label = gtk_label_new(NULL);
8425
ef1267a8ba9f [gaim-migrate @ 9155]
Christian Hammond <chipx86@chipx86.com>
parents: 8377
diff changeset
394 gtk_box_pack_start(GTK_BOX(account_hbox), label, FALSE, FALSE, 0);
8352
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
395 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Account:"));
8425
ef1267a8ba9f [gaim-migrate @ 9155]
Christian Hammond <chipx86@chipx86.com>
parents: 8377
diff changeset
396 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
8352
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
397 gtk_widget_show(label);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
398
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
399 dialog->account_widget = pidgin_account_option_menu_new(dialog->account, FALSE,
8939
ec2ecc652447 [gaim-migrate @ 9709]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
400 G_CALLBACK(dialog_select_account_cb), account_filter_func, dialog);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
401
9067
5c76bda4091f [gaim-migrate @ 9843]
Tim Ringenbach <marv@pidgin.im>
parents: 8940
diff changeset
402 if (!dialog->account) /* this is normally null, and we normally don't care what the first selected item is */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
403 dialog->account = pidgin_account_option_menu_get_selected(dialog->account_widget);
9067
5c76bda4091f [gaim-migrate @ 9843]
Tim Ringenbach <marv@pidgin.im>
parents: 8940
diff changeset
404
8352
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
405 gtk_box_pack_start(GTK_BOX(account_hbox), dialog->account_widget, TRUE, TRUE, 0);
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
406 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(dialog->account_widget));
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
407 gtk_widget_show(dialog->account_widget);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
408
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
409 /* scrolled window */
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
410 dialog->sw = gtk_scrolled_window_new(NULL, NULL);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
411 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(dialog->sw),
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
412 GTK_SHADOW_IN);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
413 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dialog->sw),
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
414 GTK_POLICY_AUTOMATIC,
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
415 GTK_POLICY_AUTOMATIC);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
416 gtk_box_pack_start(GTK_BOX(vbox2), dialog->sw, TRUE, TRUE, 0);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
417 gtk_widget_set_size_request(dialog->sw, -1, 250);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
418 gtk_widget_show(dialog->sw);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
419
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
420 /* progress bar */
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
421 dialog->progress = gtk_progress_bar_new();
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
422 gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(dialog->progress), 0.1);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
423 gtk_box_pack_start(GTK_BOX(vbox2), dialog->progress, FALSE, FALSE, 0);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
424 gtk_widget_show(dialog->progress);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
425
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
426 /* button box */
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
427 bbox = gtk_hbutton_box_new();
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
428 gtk_box_set_spacing(GTK_BOX(bbox), PIDGIN_HIG_BOX_SPACE);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
429 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
430 gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
431 gtk_widget_show(bbox);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
432
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
433 /* stop button */
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
434 dialog->stop_button = gtk_button_new_from_stock(GTK_STOCK_STOP);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
435 gtk_box_pack_start(GTK_BOX(bbox), dialog->stop_button, FALSE, FALSE, 0);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
436 g_signal_connect(G_OBJECT(dialog->stop_button), "clicked",
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
437 G_CALLBACK(stop_button_cb), dialog);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
438 gtk_widget_set_sensitive(dialog->stop_button, FALSE);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
439 gtk_widget_show(dialog->stop_button);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
440
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
441 /* list button */
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
442 dialog->list_button = pidgin_pixbuf_button_from_stock(_("_Get List"), GTK_STOCK_REFRESH,
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
443 PIDGIN_BUTTON_HORIZONTAL);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
444 gtk_box_pack_start(GTK_BOX(bbox), dialog->list_button, FALSE, FALSE, 0);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
445 g_signal_connect(G_OBJECT(dialog->list_button), "clicked",
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
446 G_CALLBACK(list_button_cb), dialog);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
447 gtk_widget_show(dialog->list_button);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
448
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
449 /* add button */
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
450 dialog->add_button = pidgin_pixbuf_button_from_stock(_("_Add Chat"), GTK_STOCK_ADD,
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
451 PIDGIN_BUTTON_HORIZONTAL);
12896
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
452 gtk_box_pack_start(GTK_BOX(bbox), dialog->add_button, FALSE, FALSE, 0);
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
453 g_signal_connect(G_OBJECT(dialog->add_button), "clicked",
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
454 G_CALLBACK(add_room_to_blist_cb), dialog);
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
455 gtk_widget_set_sensitive(dialog->add_button, FALSE);
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
456 gtk_widget_show(dialog->add_button);
d368037a2bb7 [gaim-migrate @ 15249]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12600
diff changeset
457
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
458 /* join button */
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
459 dialog->join_button = pidgin_pixbuf_button_from_stock(_("_Join"), PIDGIN_STOCK_CHAT,
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
460 PIDGIN_BUTTON_HORIZONTAL);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
461 gtk_box_pack_start(GTK_BOX(bbox), dialog->join_button, FALSE, FALSE, 0);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
462 g_signal_connect(G_OBJECT(dialog->join_button), "clicked",
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
463 G_CALLBACK(join_button_cb), dialog);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
464 gtk_widget_set_sensitive(dialog->join_button, FALSE);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
465 gtk_widget_show(dialog->join_button);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
466
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
467 /* close button */
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
468 dialog->close_button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
469 gtk_box_pack_start(GTK_BOX(bbox), dialog->close_button, FALSE, FALSE, 0);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
470 g_signal_connect(G_OBJECT(dialog->close_button), "clicked",
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
471 G_CALLBACK(close_button_cb), dialog);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
472 gtk_widget_show(dialog->close_button);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
473
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
474 /* show the dialog window and return the dialog */
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
475 gtk_widget_show(dialog->window);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
476
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
477 return dialog;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
478 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
479
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
480 void pidgin_roomlist_dialog_show_with_account(PurpleAccount *account)
8352
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
481 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
482 PidginRoomlistDialog *dialog;
8352
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
483
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
484 dialog = pidgin_roomlist_dialog_new_with_account(account);
8352
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
485 if (!dialog)
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
486 return;
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
487
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
488 list_button_cb(GTK_BUTTON(dialog->list_button), dialog);
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
489 }
cf7ca701b213 [gaim-migrate @ 9076]
Tim Ringenbach <marv@pidgin.im>
parents: 8287
diff changeset
490
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
491 void pidgin_roomlist_dialog_show(void)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
492 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
493 pidgin_roomlist_dialog_new_with_account(NULL);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
494 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
495
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
496 static void pidgin_roomlist_new(PurpleRoomlist *list)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
497 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
498 PidginRoomlist *rl;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
499
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
500 rl = g_new0(PidginRoomlist, 1);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
501
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
502 list->ui_data = rl;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
503
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
504 rl->cats = g_hash_table_new_full(NULL, NULL, NULL, (GDestroyNotify)gtk_tree_row_reference_free);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
505
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
506 roomlists = g_list_append(roomlists, list);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
507 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
508
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
509 static void int_cell_data_func(GtkTreeViewColumn *col, GtkCellRenderer *renderer,
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
510 GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
511 {
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
512 gchar buf[16];
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
513 int myint;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
514
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
515 gtk_tree_model_get(model, iter, GPOINTER_TO_INT(user_data), &myint, -1);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
516
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
517 if (myint)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
518 g_snprintf(buf, sizeof(buf), "%d", myint);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
519 else
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
520 buf[0] = '\0';
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
521
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
522 g_object_set(renderer, "text", buf, NULL);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
523 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
524
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
525 /* this sorts backwards on purpose, so that clicking name sorts a-z, while clicking users sorts
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
526 infinity-0. you can still click again to reverse it on any of them. */
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
527 static gint int_sort_func(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
528 {
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
529 int c, d;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
530
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
531 c = d = 0;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
532
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
533 gtk_tree_model_get(model, a, GPOINTER_TO_INT(user_data), &c, -1);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
534 gtk_tree_model_get(model, b, GPOINTER_TO_INT(user_data), &d, -1);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
535
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
536 if (c == d)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
537 return 0;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
538 else if (c > d)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
539 return -1;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
540 else
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
541 return 1;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
542 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
543
11490
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
544 static gboolean
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
545 _search_func(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer search_data)
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
546 {
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
547 gboolean result;
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
548 gchar *name, *fold, *fkey;
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
549
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
550 gtk_tree_model_get(model, iter, column, &name, -1);
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
551 fold = g_utf8_casefold(name, -1);
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
552 fkey = g_utf8_casefold(key, -1);
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
553
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
554 result = (g_strstr_len(fold, strlen(fold), fkey) == NULL);
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
555
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
556 g_free(fold);
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
557 g_free(fkey);
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
558 g_free(name);
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
559
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
560 return result;
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
561 }
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
562
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
563 static void pidgin_roomlist_set_fields(PurpleRoomlist *list, GList *fields)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
564 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
565 PidginRoomlist *grl = list->ui_data;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
566 gint columns = NUM_OF_COLUMNS;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
567 int j;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
568 GtkTreeStore *model;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
569 GtkWidget *tree;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
570 GtkCellRenderer *renderer;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
571 GtkTreeViewColumn *column;
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
572 GtkTreeSelection *selection;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
573 GList *l;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
574 GType *types;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
575
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
576 g_return_if_fail(grl != NULL);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
577
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
578 columns += g_list_length(fields);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
579 types = g_new(GType, columns);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
580
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
581 types[NAME_COLUMN] = G_TYPE_STRING;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
582 types[ROOM_COLUMN] = G_TYPE_POINTER;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
583
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
584 for (j = NUM_OF_COLUMNS, l = fields; l; l = l->next, j++) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
585 PurpleRoomlistField *f = l->data;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
586
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
587 switch (f->type) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
588 case PURPLE_ROOMLIST_FIELD_BOOL:
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
589 types[j] = G_TYPE_BOOLEAN;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
590 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
591 case PURPLE_ROOMLIST_FIELD_INT:
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
592 types[j] = G_TYPE_INT;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
593 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
594 case PURPLE_ROOMLIST_FIELD_STRING:
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
595 types[j] = G_TYPE_STRING;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
596 break;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
597 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
598 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
599
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
600 model = gtk_tree_store_newv(columns, types);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
601 g_free(types);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
602
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
603 tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model));
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
604 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(tree), TRUE);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
605
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
606 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
607 g_signal_connect(G_OBJECT(selection), "changed",
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
608 G_CALLBACK(selection_changed_cb), grl);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13448
diff changeset
609
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
610 g_object_unref(model);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
611
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
612 grl->model = model;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
613 grl->tree = tree;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
614 gtk_widget_show(grl->tree);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
615
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
616 renderer = gtk_cell_renderer_text_new();
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
617 column = gtk_tree_view_column_new_with_attributes(_("Name"), renderer,
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
618 "text", NAME_COLUMN, NULL);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
619 gtk_tree_view_column_set_sizing(GTK_TREE_VIEW_COLUMN(column),
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
620 GTK_TREE_VIEW_COLUMN_GROW_ONLY);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
621 gtk_tree_view_column_set_resizable(GTK_TREE_VIEW_COLUMN(column), TRUE);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
622 gtk_tree_view_column_set_sort_column_id(GTK_TREE_VIEW_COLUMN(column), NAME_COLUMN);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
623 gtk_tree_view_column_set_reorderable(GTK_TREE_VIEW_COLUMN(column), TRUE);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
624 gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
625
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
626 for (j = NUM_OF_COLUMNS, l = fields; l; l = l->next, j++) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
627 PurpleRoomlistField *f = l->data;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
628
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
629 if (f->hidden)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
630 continue;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
631
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
632 renderer = gtk_cell_renderer_text_new();
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
633 column = gtk_tree_view_column_new_with_attributes(f->label, renderer,
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
634 "text", j, NULL);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
635 gtk_tree_view_column_set_sizing(GTK_TREE_VIEW_COLUMN(column),
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
636 GTK_TREE_VIEW_COLUMN_GROW_ONLY);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
637 gtk_tree_view_column_set_resizable(GTK_TREE_VIEW_COLUMN(column), TRUE);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
638 gtk_tree_view_column_set_sort_column_id(GTK_TREE_VIEW_COLUMN(column), j);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
639 gtk_tree_view_column_set_reorderable(GTK_TREE_VIEW_COLUMN(column), TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
640 if (f->type == PURPLE_ROOMLIST_FIELD_INT) {
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
641 gtk_tree_view_column_set_cell_data_func(column, renderer, int_cell_data_func,
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
642 GINT_TO_POINTER(j), NULL);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
643 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(model), j, int_sort_func,
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
644 GINT_TO_POINTER(j), NULL);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
645 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
646 gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
647 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
648
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
649 g_signal_connect(G_OBJECT(tree), "button-press-event", G_CALLBACK(room_click_cb), list);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
650 g_signal_connect(G_OBJECT(tree), "row-expanded", G_CALLBACK(row_expanded_cb), list);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
651 g_signal_connect(G_OBJECT(tree), "row-activated", G_CALLBACK(row_activated_cb), list);
11490
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
652
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
653 /* Enable CTRL+F searching */
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
654 gtk_tree_view_set_search_column(GTK_TREE_VIEW(tree), NAME_COLUMN);
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
655 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(tree), _search_func, NULL, NULL);
7a4f16625f66 [gaim-migrate @ 13733]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11243
diff changeset
656
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
657 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
658
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
659 static gboolean pidgin_progress_bar_pulse(gpointer data)
8230
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
660 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
661 PurpleRoomlist *list = data;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
662 PidginRoomlist *rl = list->ui_data;
8230
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
663
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
664 if (!rl || !rl->dialog || !rl->dialog->pg_needs_pulse) {
13448
27832a91b988 [gaim-migrate @ 15822]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12896
diff changeset
665 if (rl && rl->dialog)
27832a91b988 [gaim-migrate @ 15822]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12896
diff changeset
666 rl->dialog->pg_to_active = FALSE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
667 purple_roomlist_unref(list);
8230
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
668 return FALSE;
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
669 }
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
670
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
671 gtk_progress_bar_pulse(GTK_PROGRESS_BAR(rl->dialog->progress));
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
672 rl->dialog->pg_needs_pulse = FALSE;
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
673 return TRUE;
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
674 }
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
675
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
676 static void pidgin_roomlist_add_room(PurpleRoomlist *list, PurpleRoomlistRoom *room)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
677 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
678 PidginRoomlist *rl = list->ui_data;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
679 GtkTreeRowReference *rr, *parentrr = NULL;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
680 GtkTreePath *path;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
681 GtkTreeIter iter, parent, child;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
682 GList *l, *k;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
683 int j;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
684 gboolean append = TRUE;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
685
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
686 rl->total_rooms++;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
687 if (room->type == PURPLE_ROOMLIST_ROOMTYPE_ROOM)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
688 rl->num_rooms++;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
689
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
690 if (rl->dialog) {
8230
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
691 if (!rl->dialog->pg_to_active) {
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
692 rl->dialog->pg_to_active = TRUE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
693 purple_roomlist_ref(list);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
694 rl->dialog->pg_update_to = g_timeout_add(100, pidgin_progress_bar_pulse, list);
8230
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
695 gtk_progress_bar_pulse(GTK_PROGRESS_BAR(rl->dialog->progress));
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
696 } else {
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
697 rl->dialog->pg_needs_pulse = TRUE;
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
698 }
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
699 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
700 if (room->parent) {
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
701 parentrr = g_hash_table_lookup(rl->cats, room->parent);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
702 path = gtk_tree_row_reference_get_path(parentrr);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
703 if (path) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
704 PurpleRoomlistRoom *tmproom = NULL;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
705
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
706 gtk_tree_model_get_iter(GTK_TREE_MODEL(rl->model), &parent, path);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
707 gtk_tree_path_free(path);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
708
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
709 if (gtk_tree_model_iter_children(GTK_TREE_MODEL(rl->model), &child, &parent)) {
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
710 gtk_tree_model_get(GTK_TREE_MODEL(rl->model), &child, ROOM_COLUMN, &tmproom, -1);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
711 if (!tmproom)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
712 append = FALSE;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
713 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
714 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
715 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
716
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
717 if (append)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
718 gtk_tree_store_append(rl->model, &iter, (parentrr ? &parent : NULL));
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
719 else
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
720 iter = child;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
721
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
722 if (room->type & PURPLE_ROOMLIST_ROOMTYPE_CATEGORY)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
723 gtk_tree_store_append(rl->model, &child, &iter);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
724
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
725 path = gtk_tree_model_get_path(GTK_TREE_MODEL(rl->model), &iter);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
726
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
727 if (room->type & PURPLE_ROOMLIST_ROOMTYPE_CATEGORY) {
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
728 rr = gtk_tree_row_reference_new(GTK_TREE_MODEL(rl->model), path);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
729 g_hash_table_insert(rl->cats, room, rr);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
730 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
731
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
732 gtk_tree_path_free(path);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
733
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
734 gtk_tree_store_set(rl->model, &iter, NAME_COLUMN, room->name, -1);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
735 gtk_tree_store_set(rl->model, &iter, ROOM_COLUMN, room, -1);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
736
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
737 for (j = NUM_OF_COLUMNS, l = room->fields, k = list->fields; l && k; j++, l = l->next, k = k->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
738 PurpleRoomlistField *f = k->data;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
739 if (f->hidden)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
740 continue;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
741 gtk_tree_store_set(rl->model, &iter, j, l->data, -1);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
742 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
743 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
744
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
745 static void pidgin_roomlist_in_progress(PurpleRoomlist *list, gboolean flag)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
746 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
747 PidginRoomlist *rl = list->ui_data;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
748
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
749 if (!rl || !rl->dialog)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
750 return;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
751
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
752 if (flag) {
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
753 if (rl->dialog->account_widget)
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
754 gtk_widget_set_sensitive(rl->dialog->account_widget, FALSE);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
755 gtk_widget_set_sensitive(rl->dialog->stop_button, TRUE);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
756 gtk_widget_set_sensitive(rl->dialog->list_button, FALSE);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
757 } else {
8230
0241cfde5c03 [gaim-migrate @ 8953]
Tim Ringenbach <marv@pidgin.im>
parents: 8199
diff changeset
758 rl->dialog->pg_needs_pulse = FALSE;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
759 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(rl->dialog->progress), 0.0);
8199
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
760 if (rl->dialog->account_widget)
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
761 gtk_widget_set_sensitive(rl->dialog->account_widget, TRUE);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
762 gtk_widget_set_sensitive(rl->dialog->stop_button, FALSE);
43d585355720 [gaim-migrate @ 8922]
Tim Ringenbach <marv@pidgin.im>
parents: 8146
diff changeset
763 gtk_widget_set_sensitive(rl->dialog->list_button, TRUE);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
764 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
765 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
766
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
767 static void pidgin_roomlist_destroy(PurpleRoomlist *list)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
768 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
769 PidginRoomlist *rl;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
770
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
771 roomlists = g_list_remove(roomlists, list);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
772
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
773 rl = list->ui_data;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
774
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
775 g_return_if_fail(rl != NULL);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
776
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
777 g_hash_table_destroy(rl->cats);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
778 g_free(rl);
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
779 list->ui_data = NULL;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
780 }
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
781
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
782 static PurpleRoomlistUiOps ops = {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
783 pidgin_roomlist_dialog_show_with_account,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
784 pidgin_roomlist_new,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
785 pidgin_roomlist_set_fields,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
786 pidgin_roomlist_add_room,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
787 pidgin_roomlist_in_progress,
16752
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16254
diff changeset
788 pidgin_roomlist_destroy,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16254
diff changeset
789 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16254
diff changeset
790 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16254
diff changeset
791 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16254
diff changeset
792 NULL
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
793 };
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
794
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
795
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
796 void pidgin_roomlist_init(void)
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
797 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
798 purple_roomlist_set_ui_ops(&ops);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
799 }

mercurial