pidgin/pidginaccountchooser.c

Fri, 01 May 2020 12:13:35 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Fri, 01 May 2020 12:13:35 -0500
changeset 40439
e9838d634d5e
parent 40249
a133a6fcc822
child 40496
6941fece679b
permissions
-rw-r--r--

Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h

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 "pidgin.h"
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
22
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
23 #include "gtkutils.h"
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
24 #include "pidginaccountchooser.h"
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
25
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 * Enums
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
28 *****************************************************************************/
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 enum
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
31 {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
32 AOP_ICON_COLUMN,
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
33 AOP_NAME_COLUMN,
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
34 AOP_DATA_COLUMN,
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
35 AOP_COLUMN_COUNT
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
36 };
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
37
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
38 enum
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
39 {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
40 PROP_0,
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
41 PROP_ACCOUNT,
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
42 PROP_SHOW_ALL,
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
43 PROP_LAST
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
44 };
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
45
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
46 /******************************************************************************
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
47 * Structs
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
48 *****************************************************************************/
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
49
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
50 struct _PidginAccountChooser {
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
51 GtkComboBox parent;
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
52
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
53 GtkListStore *model;
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
54
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
55 PurpleFilterAccountFunc filter_func;
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
56 gboolean show_all;
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
57 };
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
58
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 * Code
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
61 *****************************************************************************/
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
62 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
63
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
64 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
65
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
66 static gpointer
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
67 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
68 {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
69 gpointer data = NULL;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
70 GtkTreeIter iter;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
71
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
72 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
73 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
74 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
75 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
76 }
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 return data;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
79 }
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 static void
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
82 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
83 {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
84 GtkTreeModel *model;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
85 GtkTreeIter iter;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
86 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
87 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
88 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
89 do {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
90 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
91 &iter_data, -1);
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
92 if (iter_data == data) {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
93 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
94 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
95 return;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
96 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
97 } 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
98 }
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
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
101 static void
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
102 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
103 {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
104 PurpleAccount *account;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
105 GdkPixbuf *pixbuf = NULL;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
106 GList *list;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
107 GList *p;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
108 GtkTreeIter iter;
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
109 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
110 gint i;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
111 gchar buf[256];
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
112
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
113 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
114 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
115 } else {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
116 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
117 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
118
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
119 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
120 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
121 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
122 account = (PurpleAccount *)p->data;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
123 } else {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
124 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
125
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
126 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
127 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
128
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
129 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
130 i--;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
131 continue;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
132 }
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 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
135 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
136
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
137 if (pixbuf) {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
138 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
139 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
140 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
141 0.0, FALSE);
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
142 }
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 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
146 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
147 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
148 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
149 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
150 } else {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
151 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
152 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
153 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
154 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
155
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
156 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
157 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
158 pixbuf, AOP_NAME_COLUMN, buf,
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
159 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
160
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
161 if (pixbuf) {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
162 g_object_unref(pixbuf);
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
163 }
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 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
166 default_item = i;
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
167 }
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
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
170 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
171 }
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 static void
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
174 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
175 {
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
176 PurpleAccount *account;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
177
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
178 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
179
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
180 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
181 }
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 static void
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
184 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
185 {
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
186 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
187 }
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 static void
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
190 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
191 PidginAccountChooser *chooser)
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
192 {
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
193 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
194 }
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 static gboolean
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
197 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
198 {
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
199 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
200
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
201 return FALSE;
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
202 }
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
203
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
204 static void
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
205 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
206 {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
207 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
208 }
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
209
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
210 /******************************************************************************
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
211 * GObject implementation
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
212 *****************************************************************************/
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
213 static void
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
214 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
215 GValue *value, GParamSpec *pspec)
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
216 {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
217 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
218
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
219 switch (prop_id) {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
220 case PROP_ACCOUNT:
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
221 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
222 break;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
223 case PROP_SHOW_ALL:
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
224 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
225 break;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
226 default:
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
227 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
228 break;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
229 }
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 static void
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
233 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
234 const GValue *value, GParamSpec *pspec)
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
235 {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
236 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
237
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
238 switch (prop_id) {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
239 case PROP_ACCOUNT:
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
240 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
241 g_value_get_object(value));
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
242 break;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
243 case PROP_SHOW_ALL:
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
244 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
245 break;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
246 default:
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
247 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
248 break;
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
249 }
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 static void
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
253 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
254 {
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
255 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
256 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
257
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
258 /* Properties */
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
259 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
260 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
261
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
262 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
263 "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
264 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
265
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
266 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
267 "show-all", "Show all",
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
268 "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
269 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
270 G_PARAM_STATIC_STRINGS);
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
271
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
272 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
273
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
274 /* Widget template */
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
275
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
276 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
277 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
278
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
279 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
280 model);
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
281
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
282 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
283 account_menu_destroyed_cb);
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
284 }
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 static void
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
287 pidgin_account_chooser_init(PidginAccountChooser *chooser)
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
288 {
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
289 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
290
40249
a133a6fcc822 Fill PidginAccountChooser on init.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40248
diff changeset
291 set_account_menu(chooser, NULL);
a133a6fcc822 Fill PidginAccountChooser on init.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40248
diff changeset
292
a133a6fcc822 Fill PidginAccountChooser on init.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40248
diff changeset
293 g_signal_connect(chooser, "changed",
a133a6fcc822 Fill PidginAccountChooser on init.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40248
diff changeset
294 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
295
39785
aa7e3b71802d Split pidgin_account_option_menu into its own files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
296 /* 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
297 purple_signal_connect(
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
298 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
299 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
300 purple_signal_connect(
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
301 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
302 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
303 purple_signal_connect(
39788
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
304 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
305 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
306 purple_signal_connect(
6e86cff44a34 Convert account chooser to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39787
diff changeset
307 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
308 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
309 }
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
310
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 * Public API
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
313 *****************************************************************************/
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
314 GtkWidget *
39793
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
315 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
316 {
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
317 PidginAccountChooser *chooser = NULL;
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
318
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
319 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
320 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
321
39790
dd3fd44f3abb Move account chooser data into its struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39789
diff changeset
322 return GTK_WIDGET(chooser);
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
323 }
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
324
39793
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
325 void
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
326 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
327 PurpleFilterAccountFunc filter_func)
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
328 {
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
329 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
330
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
331 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
332 regenerate_account_menu(chooser);
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
333 }
2a29bc06910b Move account chooser filter in a separate setter.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39792
diff changeset
334
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
335 PurpleAccount *
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
336 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
337 {
39792
23eb94ca54bd Add proper asserts in account chooser API.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39791
diff changeset
338 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
339
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
340 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
341 PIDGIN_ACCOUNT_CHOOSER(chooser));
39789
7d58eccb27de Group public API for account chooser together.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39788
diff changeset
342 }
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 void
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
345 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
346 {
39792
23eb94ca54bd Add proper asserts in account chooser API.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39791
diff changeset
347 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
348
39791
24c50cca1511 Rename account chooser bits in a more standard way.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39790
diff changeset
349 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
350
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
351 /* 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
352 }
40248
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
353
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
354 gboolean
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
355 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
356 {
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
357 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
358
0d975f80d020 Add account/show-all properties to PidginAccountChooser.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39793
diff changeset
359 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
360 }

mercurial