pidgin/pidginaccountchooser.c

Wed, 05 Feb 2020 02:01:25 -0600

author
Koosha Khajehmoogahi <koosha@posteo.de>
date
Wed, 05 Feb 2020 02:01:25 -0600
changeset 40288
b72d9137eca7
parent 40249
a133a6fcc822
child 40439
e9838d634d5e
permissions
-rw-r--r--

Fix whitespace

Signed-off-by: Richard Laager <rlaager@pidgin.im>

39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
1 /* pidgin
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
2 *
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
3 * Pidgin is the legal property of its developers, whose names are too numerous
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
5 * source distribution.
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
6 *
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
10 * (at your option) any later version.
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
11 *
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
15 * GNU General Public License for more details.
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
16 *
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
20 */
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
21 #include "internal.h"
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
22 #include "pidgin.h"
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
23
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
24 #include "gtkutils.h"
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
25 #include "pidginaccountchooser.h"
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
26
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
27 /******************************************************************************
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
28 * Enums
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
29 *****************************************************************************/
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
30
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
31 enum
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
32 {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
33 AOP_ICON_COLUMN,
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
34 AOP_NAME_COLUMN,
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
35 AOP_DATA_COLUMN,
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
36 AOP_COLUMN_COUNT
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
37 };
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
38
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
39 enum
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
40 {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
41 PROP_0,
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
42 PROP_ACCOUNT,
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
43 PROP_SHOW_ALL,
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
44 PROP_LAST
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
45 };
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
46
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
47 /******************************************************************************
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
48 * Structs
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
49 *****************************************************************************/
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
50
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
51 struct _PidginAccountChooser {
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
52 GtkComboBox parent;
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
53
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
54 GtkListStore *model;
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
55
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
56 PurpleFilterAccountFunc filter_func;
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
57 gboolean show_all;
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
58 };
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
59
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
60 /******************************************************************************
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
61 * Code
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
62 *****************************************************************************/
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
63 static GParamSpec *properties[PROP_LAST] = {NULL};
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
64
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
65 G_DEFINE_TYPE(PidginAccountChooser, pidgin_account_chooser, GTK_TYPE_COMBO_BOX)
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
66
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
67 static gpointer
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
68 account_chooser_get_selected(PidginAccountChooser *chooser)
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
69 {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
70 gpointer data = NULL;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
71 GtkTreeIter iter;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
72
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
73 if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(chooser), &iter)) {
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
74 gtk_tree_model_get(
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
75 gtk_combo_box_get_model(GTK_COMBO_BOX(chooser)), &iter,
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
76 AOP_DATA_COLUMN, &data, -1);
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
77 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
78
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
79 return data;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
80 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
81
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
82 static void
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
83 account_chooser_select_by_data(GtkWidget *chooser, gpointer data)
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
84 {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
85 GtkTreeModel *model;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
86 GtkTreeIter iter;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
87 gpointer iter_data;
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
88 model = gtk_combo_box_get_model(GTK_COMBO_BOX(chooser));
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
89 if (gtk_tree_model_get_iter_first(model, &iter)) {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
90 do {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
91 gtk_tree_model_get(model, &iter, AOP_DATA_COLUMN,
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
92 &iter_data, -1);
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
93 if (iter_data == data) {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
94 gtk_combo_box_set_active_iter(
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
95 GTK_COMBO_BOX(chooser), &iter);
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
96 return;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
97 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
98 } while (gtk_tree_model_iter_next(model, &iter));
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
99 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
100 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
101
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
102 static void
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
103 set_account_menu(PidginAccountChooser *chooser, PurpleAccount *default_account)
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
104 {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
105 PurpleAccount *account;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
106 GdkPixbuf *pixbuf = NULL;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
107 GList *list;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
108 GList *p;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
109 GtkTreeIter iter;
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
110 gint default_item = 0;
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
111 gint i;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
112 gchar buf[256];
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
113
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
114 if (chooser->show_all) {
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
115 list = purple_accounts_get_all();
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
116 } else {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
117 list = purple_connections_get_all();
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
118 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
119
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
120 gtk_list_store_clear(chooser->model);
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
121 for (p = list, i = 0; p != NULL; p = p->next, i++) {
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
122 if (chooser->show_all) {
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
123 account = (PurpleAccount *)p->data;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
124 } else {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
125 PurpleConnection *gc = (PurpleConnection *)p->data;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
126
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
127 account = purple_connection_get_account(gc);
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
128 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
129
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
130 if (chooser->filter_func && !chooser->filter_func(account)) {
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
131 i--;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
132 continue;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
133 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
134
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
135 pixbuf = pidgin_create_protocol_icon(
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
136 account, PIDGIN_PROTOCOL_ICON_SMALL);
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
137
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
138 if (pixbuf) {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
139 if (purple_account_is_disconnected(account) &&
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
140 chooser->show_all && purple_connections_get_all()) {
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
141 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf,
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
142 0.0, FALSE);
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
143 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
144 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
145
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
146 if (purple_account_get_private_alias(account)) {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
147 g_snprintf(buf, sizeof(buf), "%s (%s) (%s)",
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
148 purple_account_get_username(account),
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
149 purple_account_get_private_alias(account),
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
150 purple_account_get_protocol_name(account));
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
151 } else {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
152 g_snprintf(buf, sizeof(buf), "%s (%s)",
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
153 purple_account_get_username(account),
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
154 purple_account_get_protocol_name(account));
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
155 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
156
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
157 gtk_list_store_append(chooser->model, &iter);
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
158 gtk_list_store_set(chooser->model, &iter, AOP_ICON_COLUMN,
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
159 pixbuf, AOP_NAME_COLUMN, buf,
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
160 AOP_DATA_COLUMN, account, -1);
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
161
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
162 if (pixbuf) {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
163 g_object_unref(pixbuf);
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
164 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
165
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
166 if (default_account && account == default_account) {
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
167 default_item = i;
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
168 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
169 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
170
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
171 gtk_combo_box_set_active(GTK_COMBO_BOX(chooser), default_item);
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
172 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
173
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
174 static void
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
175 regenerate_account_menu(PidginAccountChooser *chooser)
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
176 {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
177 PurpleAccount *account;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
178
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
179 account = (PurpleAccount *)account_chooser_get_selected(chooser);
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
180
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
181 set_account_menu(chooser, account);
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
182 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
183
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
184 static void
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
185 account_menu_sign_on_off_cb(PurpleConnection *gc, PidginAccountChooser *chooser)
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
186 {
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
187 regenerate_account_menu(chooser);
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
188 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
189
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
190 static void
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
191 account_menu_added_removed_cb(PurpleAccount *account,
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
192 PidginAccountChooser *chooser)
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
193 {
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
194 regenerate_account_menu(chooser);
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
195 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
196
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
197 static gboolean
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
198 account_menu_destroyed_cb(GtkWidget *chooser, GdkEvent *event, void *user_data)
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
199 {
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
200 purple_signals_disconnect_by_handle(chooser);
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
201
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
202 return FALSE;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
203 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
204
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
205 static void
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
206 pidgin_account_chooser_changed_cb(GtkComboBox *widget, gpointer user_data)
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
207 {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
208 g_object_notify_by_pspec(G_OBJECT(widget), properties[PROP_ACCOUNT]);
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
209 }
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
210
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
211 /******************************************************************************
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
212 * GObject implementation
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
213 *****************************************************************************/
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
214 static void
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
215 pidgin_account_chooser_get_property(GObject *object, guint prop_id,
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
216 GValue *value, GParamSpec *pspec)
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
217 {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
218 PidginAccountChooser *chooser = PIDGIN_ACCOUNT_CHOOSER(object);
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
219
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
220 switch (prop_id) {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
221 case PROP_ACCOUNT:
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
222 g_value_set_object(value, account_chooser_get_selected(chooser));
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
223 break;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
224 case PROP_SHOW_ALL:
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
225 g_value_set_boolean(value, chooser->show_all);
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
226 break;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
227 default:
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
228 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
229 break;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
230 }
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
231 }
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
232
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
233 static void
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
234 pidgin_account_chooser_set_property(GObject *object, guint prop_id,
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
235 const GValue *value, GParamSpec *pspec)
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
236 {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
237 PidginAccountChooser *chooser = PIDGIN_ACCOUNT_CHOOSER(object);
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
238
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
239 switch (prop_id) {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
240 case PROP_ACCOUNT:
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
241 account_chooser_select_by_data(GTK_WIDGET(chooser),
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
242 g_value_get_object(value));
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
243 break;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
244 case PROP_SHOW_ALL:
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
245 chooser->show_all = g_value_get_boolean(value);
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
246 break;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
247 default:
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
248 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
249 break;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
250 }
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
251 }
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
252
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
253 static void
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
254 pidgin_account_chooser_class_init(PidginAccountChooserClass *klass)
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
255 {
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
256 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
257 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
258
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
259 /* Properties */
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
260 obj_class->get_property = pidgin_account_chooser_get_property;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
261 obj_class->set_property = pidgin_account_chooser_set_property;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
262
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
263 properties[PROP_ACCOUNT] = g_param_spec_object(
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
264 "account", "Account", "The account that is currently selected.",
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
265 PURPLE_TYPE_ACCOUNT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
266
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
267 properties[PROP_SHOW_ALL] = g_param_spec_boolean(
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
268 "show-all", "Show all",
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
269 "Whether to show all accounts, or just online ones.", FALSE,
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
270 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
271 G_PARAM_STATIC_STRINGS);
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
272
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
273 g_object_class_install_properties(obj_class, PROP_LAST, properties);
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
274
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
275 /* Widget template */
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
276
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
277 gtk_widget_class_set_template_from_resource(
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
278 widget_class, "/im/pidgin/Pidgin/Accounts/chooser.ui");
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
279
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
280 gtk_widget_class_bind_template_child(widget_class, PidginAccountChooser,
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
281 model);
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
282
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
283 gtk_widget_class_bind_template_callback(widget_class,
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
284 account_menu_destroyed_cb);
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
285 }
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
286
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
287 static void
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
288 pidgin_account_chooser_init(PidginAccountChooser *chooser)
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
289 {
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
290 gtk_widget_init_template(GTK_WIDGET(chooser));
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
291
40249
a133a6fcc822 Fill PidginAccountChooser on init.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40248
diff changeset
292 set_account_menu(chooser, NULL);
a133a6fcc822 Fill PidginAccountChooser on init.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40248
diff changeset
293
a133a6fcc822 Fill PidginAccountChooser on init.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40248
diff changeset
294 g_signal_connect(chooser, "changed",
a133a6fcc822 Fill PidginAccountChooser on init.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40248
diff changeset
295 G_CALLBACK(pidgin_account_chooser_changed_cb), NULL);
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
296
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
297 /* Register the purple sign on/off event callbacks. */
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
298 purple_signal_connect(
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
299 purple_connections_get_handle(), "signed-on", chooser,
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
300 PURPLE_CALLBACK(account_menu_sign_on_off_cb), chooser);
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
301 purple_signal_connect(
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
302 purple_connections_get_handle(), "signed-off", chooser,
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
303 PURPLE_CALLBACK(account_menu_sign_on_off_cb), chooser);
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
304 purple_signal_connect(
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
305 purple_accounts_get_handle(), "account-added", chooser,
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
306 PURPLE_CALLBACK(account_menu_added_removed_cb), chooser);
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
307 purple_signal_connect(
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
308 purple_accounts_get_handle(), "account-removed", chooser,
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
309 PURPLE_CALLBACK(account_menu_added_removed_cb), chooser);
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
310 }
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
311
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
312 /******************************************************************************
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
313 * Public API
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
314 *****************************************************************************/
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
315 GtkWidget *
39793
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
316 pidgin_account_chooser_new(PurpleAccount *default_account, gboolean show_all)
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
317 {
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
318 PidginAccountChooser *chooser = NULL;
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
319
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
320 chooser = g_object_new(PIDGIN_TYPE_ACCOUNT_CHOOSER, "account",
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
321 default_account, "show-all", show_all, NULL);
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
322
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
323 return GTK_WIDGET(chooser);
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
324 }
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
325
39793
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
326 void
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
327 pidgin_account_chooser_set_filter_func(PidginAccountChooser *chooser,
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
328 PurpleFilterAccountFunc filter_func)
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
329 {
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
330 g_return_if_fail(PIDGIN_IS_ACCOUNT_CHOOSER(chooser));
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
331
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
332 chooser->filter_func = filter_func;
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
333 regenerate_account_menu(chooser);
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
334 }
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
335
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
336 PurpleAccount *
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
337 pidgin_account_chooser_get_selected(GtkWidget *chooser)
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
338 {
39792
23eb94ca54bd Add proper asserts in account chooser API.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39791
diff changeset
339 g_return_val_if_fail(PIDGIN_IS_ACCOUNT_CHOOSER(chooser), NULL);
23eb94ca54bd Add proper asserts in account chooser API.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39791
diff changeset
340
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
341 return (PurpleAccount *)account_chooser_get_selected(
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
342 PIDGIN_ACCOUNT_CHOOSER(chooser));
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
343 }
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
344
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
345 void
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
346 pidgin_account_chooser_set_selected(GtkWidget *chooser, PurpleAccount *account)
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
347 {
39792
23eb94ca54bd Add proper asserts in account chooser API.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39791
diff changeset
348 g_return_if_fail(PIDGIN_IS_ACCOUNT_CHOOSER(chooser));
23eb94ca54bd Add proper asserts in account chooser API.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39791
diff changeset
349
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
350 account_chooser_select_by_data(chooser, account);
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
351
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
352 /* NOTE: Property notification occurs in 'changed' signal callback. */
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
353 }
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
354
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
355 gboolean
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
356 pidgin_account_chooser_get_show_all(GtkWidget *chooser)
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
357 {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
358 g_return_val_if_fail(PIDGIN_IS_ACCOUNT_CHOOSER(chooser), FALSE);
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
359
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
360 return PIDGIN_ACCOUNT_CHOOSER(chooser)->show_all;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
361 }

mercurial