pidgin/pidginaccounteditor.c

Sat, 09 Aug 2025 18:12:31 +0800

author
Gong Zhile <gongzl@stu.hebust.edu.cn>
date
Sat, 09 Aug 2025 18:12:31 +0800
branch
gir-dependency
changeset 43305
4ede49515766
parent 43300
0604c6839974
permissions
-rw-r--r--

Add builtin library dependency for introspection

Without specifying, gir defaults to the system pidgin/purple libraries by default,
which fails the build when new symbols were added and gir failed to link for them.

41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include <glib/gi18n-lib.h>
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
25 #include <adwaita.h>
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
26
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 #include "pidginaccounteditor.h"
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
29 #include "pidginprotocolchooser.h"
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 struct _PidginAccountEditor {
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
32 AdwPreferencesPage parent;
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 PurpleAccount *account;
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
36 gboolean valid;
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
37
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
38 /* Login Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
39 GtkWidget *login_options;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
40 GtkWidget *protocol;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
41 GtkWidget *username;
41776
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
42 GtkWidget *user_splits;
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
43 GtkWidget *require_password_row;
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
44 GtkWidget *require_password;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
45
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
46 GList *user_split_rows;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
47
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
48 /* User Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
49 GtkWidget *alias;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
50
42352
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42303
diff changeset
51 GtkFileDialog *avatar_dialog;
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
52 GdkTexture *avatar_texture;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
53 GtkWidget *avatar_row;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
54 GtkWidget *use_custom_avatar;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
55 GtkWidget *avatar;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
56
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
57 /* Advanced Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
58 GtkWidget *advanced_group;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
59 GtkWidget *advanced_toggle;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
60
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
61 GList *advanced_entries;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
62 GList *advanced_rows;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
63
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
64 /* Proxy Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
65 GtkWidget *proxy_type;
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 GtkWidget *proxy_options;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
67 GtkWidget *proxy_host;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
68 GtkWidget *proxy_port;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
69 GtkWidget *proxy_username;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
70 GtkWidget *proxy_password;
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 };
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 enum {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 PROP_0,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 PROP_ACCOUNT,
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
76 PROP_VALID,
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 N_PROPERTIES,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 };
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
81 /******************************************************************************
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
82 * Prototypes
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
83 *****************************************************************************/
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
84 static void pidgin_account_editor_connection_changed_cb(GObject *obj,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
85 GParamSpec *pspec,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
86 gpointer data);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
87
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 /******************************************************************************
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 * Helpers
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 *****************************************************************************/
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 static void
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
92 pidgin_account_editor_set_valid(PidginAccountEditor *editor, gboolean valid) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
93 g_return_if_fail(PIDGIN_IS_ACCOUNT_EDITOR(editor));
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
94
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
95 if(editor->valid != valid) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
96 editor->valid = valid;
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
97
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
98 g_object_notify_by_pspec(G_OBJECT(editor), properties[PROP_VALID]);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
99 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
100 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
101
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
102 static void
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
103 pidgin_account_editor_add_user_split(gpointer data, gpointer user_data) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
104 PurpleAccountUserSplit *split = data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
105 PidginAccountEditor *editor = user_data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
106
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
107 if(!purple_account_user_split_is_constant(split)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
108 GtkWidget *row = NULL;
42255
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
109 gboolean sensitive = TRUE;
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
110
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
111 if(PURPLE_IS_ACCOUNT(editor->account)) {
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
112 if(purple_account_is_connected(editor->account)) {
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
113 sensitive = FALSE;
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
114 }
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
115 }
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
116
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
117 row = adw_entry_row_new();
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
118 editor->user_split_rows = g_list_append(editor->user_split_rows, row);
41776
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
119 gtk_list_box_append(GTK_LIST_BOX(editor->user_splits), row);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
120
41780
1247cc856233 Remove extra focus targets from Account Editor
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41779
diff changeset
121 gtk_widget_set_focusable(row, FALSE);
42255
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
122 if(!sensitive) {
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
123 gtk_widget_set_sensitive(row, sensitive);
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
124 }
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
125
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
126 adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
127 purple_account_user_split_get_text(split));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
128 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
129 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
130
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
131 static gboolean
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
132 pidgin_account_editor_update_login_options(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
133 PurpleProtocol *protocol)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
134 {
41776
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
135 PurpleProtocolOptions options;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
136 GList *user_splits = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
137 GList *split_item = NULL;
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
138 GList *row_item = NULL;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
139 gchar *username = NULL;
41776
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
140 gboolean require_password = FALSE;
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
141 gboolean ret = FALSE;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
142
42255
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
143 /* Make the username field sensitive as it may have previously be made
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
144 * insensitive.
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
145 */
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
146 gtk_widget_set_sensitive(editor->username, TRUE);
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
147
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
148 /* If we have an account, populate its values. */
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
149 if(PURPLE_IS_ACCOUNT(editor->account)) {
42804
be8c8b5471ca Update pidgin to use get id and username directly on PurpleAccount
Gary Kramlich <grim@reaperworld.com>
parents: 42796
diff changeset
150 /* The username will be split apart below and eventually set as the
be8c8b5471ca Update pidgin to use get id and username directly on PurpleAccount
Gary Kramlich <grim@reaperworld.com>
parents: 42796
diff changeset
151 * text in the username entry.
42255
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
152 */
42804
be8c8b5471ca Update pidgin to use get id and username directly on PurpleAccount
Gary Kramlich <grim@reaperworld.com>
parents: 42796
diff changeset
153 username = g_strdup(purple_account_get_username(editor->account));
42255
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
154 require_password = purple_account_get_require_password(editor->account);
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
155
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
156 if(purple_account_is_connected(editor->account)) {
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
157 gtk_widget_set_sensitive(editor->username, FALSE);
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
158 }
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
159 }
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
160
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
161 /* Now remove the rows we added to the preference group for each non
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
162 * constant user split.
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
163 */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
164 while(editor->user_split_rows != NULL) {
41776
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
165 gtk_list_box_remove(GTK_LIST_BOX(editor->user_splits),
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
166 editor->user_split_rows->data);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
167
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
168 editor->user_split_rows = g_list_delete_link(editor->user_split_rows,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
169 editor->user_split_rows);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
170 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
171
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
172 /* Add the user splits for the protocol. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
173 user_splits = purple_protocol_get_user_splits(protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
174 g_list_foreach(user_splits, pidgin_account_editor_add_user_split, editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
175
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
176 /* Filling out the user splits is a pain. If we have an account, we created
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
177 * a copy of the username above. We then iterate the user splits backwards
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
178 * so we can insert a null terminator at the start of each split we find in
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
179 * the username.
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
180 */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
181 split_item = g_list_last(user_splits);
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
182 row_item = g_list_last(editor->user_split_rows);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
183 while(split_item != NULL && row_item != NULL) {
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
184 GtkWidget *row = row_item->data;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
185 PurpleAccountUserSplit *split = split_item->data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
186 gchar *ptr = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
187 const gchar *value = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
188
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
189 if(username != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
190 gchar sep = purple_account_user_split_get_separator(split);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
191
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
192 if(purple_account_user_split_get_reverse(split)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
193 ptr = strrchr(username, sep);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
194 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
195 ptr = strchr(username, sep);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
196 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
197
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
198 if(ptr != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
199 /* Insert a null terminator in place of the separator. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
200 *ptr = '\0';
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
201
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
202 /* Set the value to the first byte after the separator. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
203 value = ptr + 1;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
204 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
205 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
206
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
207 if(value == NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
208 value = purple_account_user_split_get_default_value(split);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
209 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
210
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
211 if(value != NULL && GTK_IS_EDITABLE(row)) {
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
212 gtk_editable_set_text(GTK_EDITABLE(row), value);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
213 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
214
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
215 split_item = split_item->prev;
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
216 row_item = row_item->prev;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
217 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
218
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
219 /* Free the user splits. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
220 g_list_free_full(user_splits,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
221 (GDestroyNotify)purple_account_user_split_destroy);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
222
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
223 /* Set the username entry to the remaining text in username and free our
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
224 * copy of said username.
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
225 */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
226 if(username != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
227 gtk_editable_set_text(GTK_EDITABLE(editor->username), username);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
228 g_free(username);
41776
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
229 ret = TRUE;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
230 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
231
41776
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
232 options = purple_protocol_get_options(protocol);
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
233 gtk_widget_set_visible(editor->require_password_row,
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
234 options & OPT_PROTO_PASSWORD_OPTIONAL);
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
235
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
236 gtk_switch_set_active(GTK_SWITCH(editor->require_password),
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
237 require_password);
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
238
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
239 return ret;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
240 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
241
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
242 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
243 pidgin_account_editor_update_user_options(PidginAccountEditor *editor,
42723
3761ba966eed Stop using PurpleBuddy in Pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 42700
diff changeset
244 G_GNUC_UNUSED PurpleProtocol *protocol)
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
245 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
246 PurpleImage *image = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
247 gboolean show_avatar_opts = TRUE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
248 const gchar *svalue = "";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
249 gboolean use_global = TRUE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
250
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
251 /* Check if the protocol supports avatars. */
42723
3761ba966eed Stop using PurpleBuddy in Pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 42700
diff changeset
252 show_avatar_opts = FALSE;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
253
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
254 gtk_widget_set_visible(editor->avatar_row, show_avatar_opts);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
255
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
256 /* Determine our values. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
257 if(editor->account != NULL) {
42804
be8c8b5471ca Update pidgin to use get id and username directly on PurpleAccount
Gary Kramlich <grim@reaperworld.com>
parents: 42796
diff changeset
258 PurpleContactInfo *info = NULL;
41971
b03ca9889e90 Fix some Pidgin account deprecations I missed on my first pass
Gary Kramlich <grim@reaperworld.com>
parents: 41962
diff changeset
259
42804
be8c8b5471ca Update pidgin to use get id and username directly on PurpleAccount
Gary Kramlich <grim@reaperworld.com>
parents: 42796
diff changeset
260 info = purple_account_get_contact_info(editor->account);
41971
b03ca9889e90 Fix some Pidgin account deprecations I missed on my first pass
Gary Kramlich <grim@reaperworld.com>
parents: 41962
diff changeset
261 svalue = purple_contact_info_get_alias(info);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
262 use_global = purple_account_get_bool(editor->account,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
263 "use-global-buddyicon", TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
264 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
265
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
266 if(svalue == NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
267 svalue = "";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
268 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
269
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
270 gtk_editable_set_text(GTK_EDITABLE(editor->alias), svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
271 gtk_switch_set_active(GTK_SWITCH(editor->use_custom_avatar), !use_global);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
272
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
273 g_clear_object(&editor->avatar_texture);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
274 if(PURPLE_IS_IMAGE(image)) {
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
275 GBytes *contents = NULL;
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
276 GError *error = NULL;
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
277
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
278 contents = purple_image_get_contents(image);
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
279 editor->avatar_texture = gdk_texture_new_from_bytes(contents, &error);
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
280 if(error != NULL) {
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
281 g_warning("Failed to create texture from file %s: %s",
43300
0604c6839974 Clean up and modernize PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 43072
diff changeset
282 purple_image_get_filename(image),
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
283 error->message);
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
284 g_clear_error(&error);
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
285 } else {
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
286 gtk_image_set_from_paintable(GTK_IMAGE(editor->avatar),
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
287 GDK_PAINTABLE(editor->avatar_texture));
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
288 }
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
289 g_bytes_unref(contents);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
290 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
291 gtk_image_set_from_icon_name(GTK_IMAGE(editor->avatar),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
292 "select-avatar");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
293 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
294 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
295
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
296 static gboolean
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
297 pidgin_account_editor_advanced_option_use_default(PidginAccountEditor *editor) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
298 PurpleProtocol *protocol = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
299
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
300 /* If this is the new dialog, use the default value. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
301 if(!PURPLE_IS_ACCOUNT(editor->account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
302 return TRUE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
303 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
304
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
305 /* If we have an existing account, check if the protocol has changed. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
306 protocol = pidgin_protocol_chooser_get_protocol(PIDGIN_PROTOCOL_CHOOSER(editor->protocol));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
307 if(protocol != purple_account_get_protocol(editor->account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
308 return TRUE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
309 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
310
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
311 return FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
312 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
313
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
314 static GtkWidget *
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
315 pidgin_account_editor_add_advanced_boolean(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
316 PurpleAccountOption *option)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
317 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
318 GtkWidget *row = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
319 GtkWidget *toggle = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
320 gboolean value = FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
321 gchar *title = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
322
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
323 if(pidgin_account_editor_advanced_option_use_default(editor)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
324 value = purple_account_option_get_default_bool(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
325 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
326 const gchar *setting = purple_account_option_get_setting(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
327 gboolean def_value = purple_account_option_get_default_bool(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
328
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
329 value = purple_account_get_bool(editor->account, setting, def_value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
330 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
331
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
332 /* Create the row and set its title with a mnemonic. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
333 row = adw_action_row_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
334 g_object_bind_property(editor->advanced_toggle, "active", row, "visible",
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
335 G_BINDING_SYNC_CREATE);
41780
1247cc856233 Remove extra focus targets from Account Editor
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41779
diff changeset
336 gtk_widget_set_focusable(row, FALSE);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
337 adw_preferences_row_set_use_underline(ADW_PREFERENCES_ROW(row), TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
338 title = g_strdup_printf("_%s", purple_account_option_get_text(option));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
339 adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row), title);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
340 g_free(title);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
341
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
342 adw_preferences_group_add(ADW_PREFERENCES_GROUP(editor->advanced_group),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
343 row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
344
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
345 /* Add the row to the editor's list of advanced rows. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
346 editor->advanced_rows = g_list_append(editor->advanced_rows, row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
347
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
348 /* Create the input widget. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
349 toggle = gtk_switch_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
350 gtk_switch_set_active(GTK_SWITCH(toggle), value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
351 gtk_widget_set_valign(toggle, GTK_ALIGN_CENTER);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
352 adw_action_row_add_suffix(ADW_ACTION_ROW(row), toggle);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
353 adw_action_row_set_activatable_widget(ADW_ACTION_ROW(row), toggle);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
354
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
355 return toggle;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
356 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
357
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
358 static GtkWidget *
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
359 pidgin_account_editor_add_advanced_int(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
360 PurpleAccountOption *option)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
361 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
362 GtkWidget *row = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
363 gint value = 0;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
364 gchar *title = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
365 gchar *svalue = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
366
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
367 if(pidgin_account_editor_advanced_option_use_default(editor)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
368 value = purple_account_option_get_default_int(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
369 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
370 const gchar *setting = purple_account_option_get_setting(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
371 gint def_value = purple_account_option_get_default_int(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
372
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
373 value = purple_account_get_int(editor->account, setting, def_value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
374 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
375
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
376 /* Create the row and set its title with a mnemonic. */
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
377 row = adw_entry_row_new();
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
378 g_object_bind_property(editor->advanced_toggle, "active", row, "visible",
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
379 G_BINDING_SYNC_CREATE);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
380 gtk_widget_set_focusable(row, FALSE);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
381 adw_preferences_row_set_use_underline(ADW_PREFERENCES_ROW(row), TRUE);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
382 adw_entry_row_set_input_purpose(ADW_ENTRY_ROW(row),
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
383 GTK_INPUT_PURPOSE_NUMBER);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
384 title = g_strdup_printf("_%s", purple_account_option_get_text(option));
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
385 adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row), title);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
386 g_free(title);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
387
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
388 adw_preferences_group_add(ADW_PREFERENCES_GROUP(editor->advanced_group),
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
389 row);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
390
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
391 /* Add the row to the editor's list of advanced rows. */
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
392 editor->advanced_rows = g_list_append(editor->advanced_rows, row);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
393
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
394 /* Set the default value. */
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
395 svalue = g_strdup_printf("%d", value);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
396 gtk_editable_set_text(GTK_EDITABLE(row), svalue);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
397 g_free(svalue);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
398
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
399 return row;
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
400 }
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
401
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
402 static GtkWidget *
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
403 pidgin_account_editor_add_advanced_string(PidginAccountEditor *editor,
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
404 PurpleAccountOption *option)
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
405 {
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
406 GtkWidget *row = NULL;
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
407 gchar *title = NULL;
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
408 const gchar *value = NULL;
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
409
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
410 if(pidgin_account_editor_advanced_option_use_default(editor)) {
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
411 value = purple_account_option_get_default_string(option);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
412 } else {
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
413 const gchar *setting = purple_account_option_get_setting(option);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
414 const gchar *def_value = NULL;
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
415
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
416 def_value = purple_account_option_get_default_string(option);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
417
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
418 value = purple_account_get_string(editor->account, setting, def_value);
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
419 }
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
420
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
421 /* Create the row depending on the masked hint. */
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
422 if(purple_account_option_string_get_masked(option)) {
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
423 row = adw_password_entry_row_new();
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
424 } else {
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
425 row = adw_entry_row_new();
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
426 }
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
427
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
428 g_object_bind_property(editor->advanced_toggle, "active", row, "visible",
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
429 G_BINDING_SYNC_CREATE);
41780
1247cc856233 Remove extra focus targets from Account Editor
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41779
diff changeset
430 gtk_widget_set_focusable(row, FALSE);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
431 adw_preferences_row_set_use_underline(ADW_PREFERENCES_ROW(row), TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
432 title = g_strdup_printf("_%s", purple_account_option_get_text(option));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
433 adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row), title);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
434 g_free(title);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
435
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
436 adw_preferences_group_add(ADW_PREFERENCES_GROUP(editor->advanced_group),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
437 row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
438
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
439 /* Add the row to the editor's list of advanced rows. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
440 editor->advanced_rows = g_list_append(editor->advanced_rows, row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
441
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
442 if(value != NULL) {
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
443 gtk_editable_set_text(GTK_EDITABLE(row), value);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
444 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
445
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
446 return row;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
447 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
448
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
449 static GtkWidget *
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
450 pidgin_account_editor_add_advanced_list(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
451 PurpleAccountOption *option)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
452 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
453 GtkWidget *row = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
454 GtkStringList *model = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
455 GList *data = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
456 GList *items = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
457 gchar *title = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
458 const gchar *value = FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
459 guint index = 0;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
460 guint position = 0;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
461
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
462 if(pidgin_account_editor_advanced_option_use_default(editor)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
463 value = purple_account_option_get_default_list_value(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
464 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
465 const gchar *setting = purple_account_option_get_setting(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
466 const gchar *def_value = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
467
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
468 def_value = purple_account_option_get_default_list_value(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
469
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
470 value = purple_account_get_string(editor->account, setting, def_value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
471 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
472
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
473 /* Create the row and set its title with a mnemonic. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
474 row = adw_combo_row_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
475 g_object_bind_property(editor->advanced_toggle, "active", row, "visible",
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
476 G_BINDING_SYNC_CREATE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
477 adw_preferences_row_set_use_underline(ADW_PREFERENCES_ROW(row), TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
478 adw_combo_row_set_use_subtitle(ADW_COMBO_ROW(row), TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
479 title = g_strdup_printf("_%s", purple_account_option_get_text(option));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
480 adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row), title);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
481 g_free(title);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
482
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
483 adw_preferences_group_add(ADW_PREFERENCES_GROUP(editor->advanced_group),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
484 row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
485
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
486 /* Add the row to the editor's list of advanced rows. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
487 editor->advanced_rows = g_list_append(editor->advanced_rows, row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
488
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
489 /* Create the model and data for the expression. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
490 items = purple_account_option_get_list(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
491 model = gtk_string_list_new(NULL);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
492
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
493 for(GList *l = items; l != NULL; l = l->next) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
494 PurpleKeyValuePair *kvp = l->data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
495
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
496 if(kvp != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
497 if(purple_strequal(kvp->value, value)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
498 position = index;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
499 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
500
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
501 data = g_list_append(data, kvp->value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
502 gtk_string_list_append(model, kvp->key);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
503 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
504
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
505 index++;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
506 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
507
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
508 adw_combo_row_set_model(ADW_COMBO_ROW(row), G_LIST_MODEL(model));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
509 adw_combo_row_set_selected(ADW_COMBO_ROW(row), position);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
510 g_object_set_data_full(G_OBJECT(row), "keys", data,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
511 (GDestroyNotify)g_list_free);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
512
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
513 return row;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
514 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
515
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
516 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
517 pidgin_account_editor_add_advanced_option(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
518 PurpleAccountOption *option)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
519 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
520 PurplePrefType type;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
521 GtkWidget *widget = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
522
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
523 type = purple_account_option_get_pref_type(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
524 switch(type) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
525 case PURPLE_PREF_BOOLEAN:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
526 widget = pidgin_account_editor_add_advanced_boolean(editor, option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
527 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
528 case PURPLE_PREF_INT:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
529 widget = pidgin_account_editor_add_advanced_int(editor, option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
530 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
531 case PURPLE_PREF_STRING:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
532 widget = pidgin_account_editor_add_advanced_string(editor, option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
533 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
534 case PURPLE_PREF_STRING_LIST:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
535 widget = pidgin_account_editor_add_advanced_list(editor, option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
536 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
537 default:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
538 purple_debug_error("PidginAccountEditor",
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
539 "Invalid Account Option pref type (%d)", type);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
540 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
541 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
542
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
543 if(GTK_IS_WIDGET(widget)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
544 g_object_set_data_full(G_OBJECT(widget), "option", option,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
545 (GDestroyNotify)purple_account_option_destroy);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
546
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
547 editor->advanced_entries = g_list_append(editor->advanced_entries,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
548 widget);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
549 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
550 purple_account_option_destroy(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
551 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
552 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
553
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
554 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
555 pidgin_account_editor_update_advanced_options(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
556 PurpleProtocol *protocol)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
557 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
558 GList *options = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
559
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
560 g_clear_pointer(&editor->advanced_entries, g_list_free);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
561 while(editor->advanced_rows != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
562 adw_preferences_group_remove(ADW_PREFERENCES_GROUP(editor->advanced_group),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
563 GTK_WIDGET(editor->advanced_rows->data));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
564
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
565 editor->advanced_rows = g_list_delete_link(editor->advanced_rows,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
566 editor->advanced_rows);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
567 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
568
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
569 if(!PURPLE_IS_PROTOCOL(protocol)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
570 gtk_widget_set_visible(editor->advanced_group, FALSE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
571
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
572 return;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
573 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
574
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
575 options = purple_protocol_get_account_options(protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
576 if(options == NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
577 gtk_widget_set_visible(editor->advanced_group, FALSE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
578
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
579 return;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
580 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
581
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
582 /* Iterate the options and call our helper which will take ownership of the
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
583 * option itself, but we'll delete the list item as we go.
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
584 */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
585 while(options != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
586 pidgin_account_editor_add_advanced_option(editor, options->data);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
587
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
588 options = g_list_delete_link(options, options);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
589 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
590
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
591 gtk_widget_set_visible(editor->advanced_group, TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
592 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
593
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
594 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
595 pidgin_account_editor_update_proxy_options(PidginAccountEditor *editor) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
596 PurpleProxyInfo *info = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
597 GListModel *model = NULL;
41858
38e61d11b89f Migrate the static fields in PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41816
diff changeset
598 char *str = NULL;
41816
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
599 const char *type = "global";
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
600 const char *hostname = NULL;
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
601 const char *username = NULL;
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
602 const char *password = NULL;
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
603 int port = 8080;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
604 guint position = 0;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
605
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
606 if(!PURPLE_IS_ACCOUNT(editor->account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
607 return;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
608 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
609
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
610 info = purple_account_get_proxy_info(editor->account);
41816
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
611 if(PURPLE_IS_PROXY_INFO(info)) {
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
612 switch(purple_proxy_info_get_proxy_type(info)) {
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
613 case PURPLE_PROXY_TYPE_USE_GLOBAL:
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
614 type = "global";
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
615 break;
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
616 case PURPLE_PROXY_TYPE_NONE:
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
617 type = "none";
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
618 break;
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
619 case PURPLE_PROXY_TYPE_SOCKS4:
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
620 type = "socks4";
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
621 break;
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
622 case PURPLE_PROXY_TYPE_SOCKS5:
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
623 type = "socks5";
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
624 break;
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
625 case PURPLE_PROXY_TYPE_TOR:
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
626 type = "tor";
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
627 break;
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
628 case PURPLE_PROXY_TYPE_HTTP:
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
629 type = "http";
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
630 break;
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
631 case PURPLE_PROXY_TYPE_USE_ENVVAR:
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
632 type = "envvar";
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
633 break;
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
634 }
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
635
41816
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
636 hostname = purple_proxy_info_get_hostname(info);
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
637 port = purple_proxy_info_get_port(info);
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
638 username = purple_proxy_info_get_username(info);
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
639 password = purple_proxy_info_get_password(info);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
640 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
641
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
642 model = adw_combo_row_get_model(ADW_COMBO_ROW(editor->proxy_type));
42179
b8bb444799a4 Fix leaks from g_list_model_get_item
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42174
diff changeset
643 for(guint index = 0; index < g_list_model_get_n_items(model); index++) {
b8bb444799a4 Fix leaks from g_list_model_get_item
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42174
diff changeset
644 const char *value = gtk_string_list_get_string(GTK_STRING_LIST(model),
b8bb444799a4 Fix leaks from g_list_model_get_item
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42174
diff changeset
645 index);
b8bb444799a4 Fix leaks from g_list_model_get_item
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42174
diff changeset
646
b8bb444799a4 Fix leaks from g_list_model_get_item
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42174
diff changeset
647 if(purple_strequal(type, value)) {
b8bb444799a4 Fix leaks from g_list_model_get_item
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42174
diff changeset
648 position = index;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
649 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
650 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
651 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
652 adw_combo_row_set_selected(ADW_COMBO_ROW(editor->proxy_type), position);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
653
41816
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
654 if(hostname == NULL) {
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
655 hostname = "";
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
656 }
41816
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
657 gtk_editable_set_text(GTK_EDITABLE(editor->proxy_host), hostname);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
658
41858
38e61d11b89f Migrate the static fields in PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41816
diff changeset
659
38e61d11b89f Migrate the static fields in PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41816
diff changeset
660 str = g_strdup_printf("%d", port);
38e61d11b89f Migrate the static fields in PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41816
diff changeset
661 gtk_editable_set_text(GTK_EDITABLE(editor->proxy_port), str);
38e61d11b89f Migrate the static fields in PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41816
diff changeset
662 g_free(str);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
663
41816
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
664 if(username == NULL) {
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
665 username = "";
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
666 }
41816
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
667 gtk_editable_set_text(GTK_EDITABLE(editor->proxy_username), username);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
668
41816
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
669 if(password == NULL) {
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
670 password = "";
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
671 }
41816
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
672 gtk_editable_set_text(GTK_EDITABLE(editor->proxy_password), password);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
673 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
674
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
675 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
676 pidgin_account_editor_update(PidginAccountEditor *editor) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
677 PurpleProtocol *protocol = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
678 gboolean sensitive = FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
679
42255
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
680 /* Reset the sensitivity of the protocol chooser to sensitive. */
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
681 gtk_widget_set_sensitive(editor->protocol, TRUE);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
682 if(PURPLE_IS_ACCOUNT(editor->account)) {
42255
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
683 if(purple_account_is_connected(editor->account)) {
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42246
diff changeset
684 /* If the account is connected, disable the protocol chooser. */
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
685 gtk_widget_set_sensitive(editor->protocol, FALSE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
686 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
687 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
689 protocol = pidgin_protocol_chooser_get_protocol(PIDGIN_PROTOCOL_CHOOSER(editor->protocol));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
690
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
691 sensitive = pidgin_account_editor_update_login_options(editor, protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
692 pidgin_account_editor_update_user_options(editor, protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
693 pidgin_account_editor_update_advanced_options(editor, protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
694 pidgin_account_editor_update_proxy_options(editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
695
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
696 pidgin_account_editor_set_valid(editor, sensitive);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
697 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
698
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
699 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
700 pidgin_account_editor_login_options_update_editable(PidginAccountEditor *editor)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
701 {
41779
4e2314e70a03 Fix warnings when adding new account
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41776
diff changeset
702 PidginProtocolChooser *chooser = NULL;
4e2314e70a03 Fix warnings when adding new account
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41776
diff changeset
703 PurpleProtocol *selected_protocol = NULL;
41776
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
704 PurpleProtocolOptions options;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
705 gboolean editable = TRUE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
706
41779
4e2314e70a03 Fix warnings when adding new account
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41776
diff changeset
707 chooser = PIDGIN_PROTOCOL_CHOOSER(editor->protocol);
4e2314e70a03 Fix warnings when adding new account
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41776
diff changeset
708 selected_protocol = pidgin_protocol_chooser_get_protocol(chooser);
4e2314e70a03 Fix warnings when adding new account
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41776
diff changeset
709
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
710 if(PURPLE_IS_ACCOUNT(editor->account)) {
41779
4e2314e70a03 Fix warnings when adding new account
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41776
diff changeset
711 PurpleConnection *connection = NULL;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
712
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
713 connection = purple_account_get_connection(editor->account);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
714
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
715 /* If we have an active connection, we need to disable everything
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
716 * related to the protocol and username.
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
717 */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
718 if(PURPLE_IS_CONNECTION(connection)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
719 PurpleProtocol *connected_protocol = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
720 editable = FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
721
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
722 /* Check if the user changed the protocol. If they did, switch it
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
723 * back and update the editor to reflect what settings are active.
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
724 */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
725 connected_protocol = purple_connection_get_protocol(connection);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
726
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
727 if(connected_protocol != selected_protocol) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
728 pidgin_protocol_chooser_set_protocol(chooser, connected_protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
729 pidgin_account_editor_update(editor);
41779
4e2314e70a03 Fix warnings when adding new account
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41776
diff changeset
730 selected_protocol = connected_protocol;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
731 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
732 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
733 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
734
41779
4e2314e70a03 Fix warnings when adding new account
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41776
diff changeset
735 options = purple_protocol_get_options(selected_protocol);
41776
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
736 gtk_widget_set_visible(editor->require_password_row,
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
737 options & OPT_PROTO_PASSWORD_OPTIONAL);
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
738
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
739 gtk_widget_set_sensitive(editor->protocol, editable);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
740 gtk_editable_set_editable(GTK_EDITABLE(editor->username), editable);
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
741 for(GList *l = editor->user_split_rows; l != NULL; l = l->next) {
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
742 GtkWidget *row = l->data;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
743
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
744 gtk_editable_set_editable(GTK_EDITABLE(row), editable);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
745 }
41776
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
746 gtk_widget_set_sensitive(editor->require_password, editable);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
747 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
748
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
749 static gboolean
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
750 pidgin_account_editor_save_login_options(PidginAccountEditor *editor) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
751 PurpleProtocol *protocol = NULL;
42796
96d1ed6df91c Fix memory leak when creating an IRCv3 account
Markus Fischer <ivanhoe@fiscari.de>
parents: 42788
diff changeset
752 GList *user_splits = NULL;
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
753 GList *split_item = NULL;
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
754 GList *row_item = NULL;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
755 GString *username = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
756 const gchar *protocol_id = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
757 gboolean new_account = FALSE;
41776
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
758 gboolean require_password = FALSE;
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
759
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
760 protocol = pidgin_protocol_chooser_get_protocol(PIDGIN_PROTOCOL_CHOOSER(editor->protocol));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
761 protocol_id = purple_protocol_get_id(protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
762
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
763 username = g_string_new(gtk_editable_get_text(GTK_EDITABLE(editor->username)));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
764
42796
96d1ed6df91c Fix memory leak when creating an IRCv3 account
Markus Fischer <ivanhoe@fiscari.de>
parents: 42788
diff changeset
765 user_splits = purple_protocol_get_user_splits(protocol);
96d1ed6df91c Fix memory leak when creating an IRCv3 account
Markus Fischer <ivanhoe@fiscari.de>
parents: 42788
diff changeset
766 split_item = g_list_first(user_splits);
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
767 row_item = editor->user_split_rows;
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
768 while(split_item != NULL && row_item != NULL) {
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
769 PurpleAccountUserSplit *split = split_item->data;
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
770 GtkWidget *row = row_item->data;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
771 const gchar *value = "";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
772 gchar sep = '\0';
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
773
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
774 sep = purple_account_user_split_get_separator(split);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
775 g_string_append_c(username, sep);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
776
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
777 if(GTK_IS_EDITABLE(row)) {
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
778 value = gtk_editable_get_text(GTK_EDITABLE(row));
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
779 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
780
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
781 if(value == NULL || *value == '\0') {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
782 value = purple_account_user_split_get_default_value(split);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
783 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
784
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
785 g_string_append(username, value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
786
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
787 split_item = split_item->next;
41863
0067a0ff5b74 Convert the dynamic fields of PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41858
diff changeset
788 row_item = row_item->next;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
789 }
42796
96d1ed6df91c Fix memory leak when creating an IRCv3 account
Markus Fischer <ivanhoe@fiscari.de>
parents: 42788
diff changeset
790 g_list_free_full(user_splits,
96d1ed6df91c Fix memory leak when creating an IRCv3 account
Markus Fischer <ivanhoe@fiscari.de>
parents: 42788
diff changeset
791 (GDestroyNotify)purple_account_user_split_destroy);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
792
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
793 if(!PURPLE_IS_ACCOUNT(editor->account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
794 editor->account = purple_account_new(username->str, protocol_id);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
795 new_account = TRUE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
796 } else {
42804
be8c8b5471ca Update pidgin to use get id and username directly on PurpleAccount
Gary Kramlich <grim@reaperworld.com>
parents: 42796
diff changeset
797 purple_account_set_username(editor->account, username->str);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
798 purple_account_set_protocol_id(editor->account, protocol_id);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
799 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
800
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
801 g_string_free(username, TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
802
41776
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
803 require_password = gtk_switch_get_active(GTK_SWITCH(editor->require_password));
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
804 purple_account_set_require_password(editor->account, require_password);
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
805
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
806 return new_account;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
807 }
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
808
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
809 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
810 pidgin_account_editor_save_user_options(PidginAccountEditor *editor) {
42804
be8c8b5471ca Update pidgin to use get id and username directly on PurpleAccount
Gary Kramlich <grim@reaperworld.com>
parents: 42796
diff changeset
811 PurpleContactInfo *info = NULL;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
812 const gchar *svalue = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
813 gboolean bvalue = FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
814
41946
0fb3b0e7122f Add a setting-changed signal to PurpleAccount and propagate it from PurpleAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41928
diff changeset
815 purple_account_freeze_notify_settings(editor->account);
0fb3b0e7122f Add a setting-changed signal to PurpleAccount and propagate it from PurpleAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41928
diff changeset
816
42804
be8c8b5471ca Update pidgin to use get id and username directly on PurpleAccount
Gary Kramlich <grim@reaperworld.com>
parents: 42796
diff changeset
817 info = purple_account_get_contact_info(editor->account);
be8c8b5471ca Update pidgin to use get id and username directly on PurpleAccount
Gary Kramlich <grim@reaperworld.com>
parents: 42796
diff changeset
818
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
819 /* Set the alias. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
820 svalue = gtk_editable_get_text(GTK_EDITABLE(editor->alias));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
821 if(*svalue == '\0') {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
822 svalue = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
823 }
41971
b03ca9889e90 Fix some Pidgin account deprecations I missed on my first pass
Gary Kramlich <grim@reaperworld.com>
parents: 41962
diff changeset
824 purple_contact_info_set_alias(info, svalue);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
825
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
826 /* Set whether or not to use the global avatar. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
827 bvalue = gtk_switch_get_active(GTK_SWITCH(editor->use_custom_avatar));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
828 purple_account_set_bool(editor->account, "use-global-buddyicon", !bvalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
829
42724
2794bb8587d3 Remove buddy icons from Pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 42723
diff changeset
830 #pragma message("implement this when buddy icons do not suck so bad.")
41946
0fb3b0e7122f Add a setting-changed signal to PurpleAccount and propagate it from PurpleAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41928
diff changeset
831
0fb3b0e7122f Add a setting-changed signal to PurpleAccount and propagate it from PurpleAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41928
diff changeset
832 purple_account_thaw_notify_settings(editor->account);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
833 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
834
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
835 static void
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
836 pidgin_account_editor_save_advanced_options(PidginAccountEditor *editor) {
41946
0fb3b0e7122f Add a setting-changed signal to PurpleAccount and propagate it from PurpleAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41928
diff changeset
837 purple_account_freeze_notify_settings(editor->account);
0fb3b0e7122f Add a setting-changed signal to PurpleAccount and propagate it from PurpleAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41928
diff changeset
838
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
839 for(GList *l = editor->advanced_entries; l != NULL; l = l->next) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
840 GtkWidget *widget = l->data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
841 PurpleAccountOption *option = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
842 GList *keys = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
843 const gchar *setting = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
844 const gchar *svalue = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
845 gboolean bvalue = FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
846 gint ivalue = 0;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
847 guint selected = 0;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
848
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
849 option = g_object_get_data(G_OBJECT(widget), "option");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
850 setting = purple_account_option_get_setting(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
851
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
852 switch(purple_account_option_get_pref_type(option)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
853 case PURPLE_PREF_STRING:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
854 svalue = gtk_editable_get_text(GTK_EDITABLE(widget));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
855 purple_account_set_string(editor->account, setting, svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
856 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
857 case PURPLE_PREF_INT:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
858 svalue = gtk_editable_get_text(GTK_EDITABLE(widget));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
859 ivalue = atoi(svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
860 purple_account_set_int(editor->account, setting, ivalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
861 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
862 case PURPLE_PREF_BOOLEAN:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
863 bvalue = gtk_switch_get_active(GTK_SWITCH(widget));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
864 purple_account_set_bool(editor->account, setting, bvalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
865 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
866 case PURPLE_PREF_STRING_LIST:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
867 keys = g_object_get_data(G_OBJECT(widget), "keys");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
868 selected = adw_combo_row_get_selected(ADW_COMBO_ROW(widget));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
869 svalue = g_list_nth_data(keys, selected);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
870 purple_account_set_string(editor->account, setting, svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
871 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
872 default:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
873 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
874 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
875 }
41946
0fb3b0e7122f Add a setting-changed signal to PurpleAccount and propagate it from PurpleAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41928
diff changeset
876
0fb3b0e7122f Add a setting-changed signal to PurpleAccount and propagate it from PurpleAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41928
diff changeset
877 purple_account_thaw_notify_settings(editor->account);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
878 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
879
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
880 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
881 pidgin_account_editor_save_proxy(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
882 gboolean new_account)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
883 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
884 PurpleProxyInfo *info = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
885 PurpleProxyType type = PURPLE_PROXY_TYPE_NONE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
886 GObject *item = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
887 const gchar *svalue = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
888
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
889 /* Build the ProxyInfo object */
41816
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
890 if(!new_account) {
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
891 info = purple_account_get_proxy_info(editor->account);
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
892 }
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
893
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
894 /* If this is a new account, or the account's proxy info is null, create a
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
895 * new instance, and set it on the account.
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
896 */
f6baa88826a7 Fix a bunch of g_warnings in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 41780
diff changeset
897 if(new_account || !PURPLE_IS_PROXY_INFO(info)) {
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
898 info = purple_proxy_info_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
899 purple_account_set_proxy_info(editor->account, info);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
900 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
901
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
902 item = adw_combo_row_get_selected_item(ADW_COMBO_ROW(editor->proxy_type));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
903 svalue = gtk_string_object_get_string(GTK_STRING_OBJECT(item));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
904 if(purple_strequal(svalue, "global")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
905 type = PURPLE_PROXY_TYPE_USE_GLOBAL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
906 } else if(purple_strequal(svalue, "none")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
907 type = PURPLE_PROXY_TYPE_NONE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
908 } else if(purple_strequal(svalue, "socks4")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
909 type = PURPLE_PROXY_TYPE_SOCKS4;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
910 } else if(purple_strequal(svalue, "socks5")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
911 type = PURPLE_PROXY_TYPE_SOCKS5;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
912 } else if(purple_strequal(svalue, "tor")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
913 type = PURPLE_PROXY_TYPE_TOR;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
914 } else if(purple_strequal(svalue, "http")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
915 type = PURPLE_PROXY_TYPE_HTTP;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
916 } else if(purple_strequal(svalue, "envvar")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
917 type = PURPLE_PROXY_TYPE_USE_ENVVAR;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
918 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
919 purple_proxy_info_set_proxy_type(info, type);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
920
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
921 svalue = gtk_editable_get_text(GTK_EDITABLE(editor->proxy_host));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
922 purple_proxy_info_set_hostname(info, svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
923
41858
38e61d11b89f Migrate the static fields in PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41816
diff changeset
924 svalue = gtk_editable_get_text(GTK_EDITABLE(editor->proxy_port));
38e61d11b89f Migrate the static fields in PidginAccountEditor to AdwEntryRow
Gary Kramlich <grim@reaperworld.com>
parents: 41816
diff changeset
925 purple_proxy_info_set_port(info, atoi(svalue));
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
926
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
927 svalue = gtk_editable_get_text(GTK_EDITABLE(editor->proxy_username));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
928 purple_proxy_info_set_username(info, svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
929
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
930 svalue = gtk_editable_get_text(GTK_EDITABLE(editor->proxy_password));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
931 purple_proxy_info_set_password(info, svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
932 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
933
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
934 /******************************************************************************
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
935 * Callbacks
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
936 *****************************************************************************/
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
937 static void
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
938 pidgin_account_editor_connection_changed_cb(G_GNUC_UNUSED GObject *obj,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
939 G_GNUC_UNUSED GParamSpec *pspec,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
940 gpointer data)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
941 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
942 PidginAccountEditor *editor = data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
943
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
944 pidgin_account_editor_login_options_update_editable(editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
945 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
946
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
947 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
948 pidgin_account_editor_protocol_changed_cb(G_GNUC_UNUSED GObject *obj,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
949 G_GNUC_UNUSED GParamSpec *pspec,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
950 gpointer data)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
951 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
952 pidgin_account_editor_update(data);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
953 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
954
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
955 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
956 pidgin_account_editor_username_changed_cb(GtkEditable *self, gpointer data) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
957 PidginAccountEditor *editor = data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
958 const gchar *text = gtk_editable_get_text(self);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
959 gboolean sensitive = FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
960
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
961 if(text != NULL && *text != '\0') {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
962 sensitive = TRUE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
963 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
964
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
965 pidgin_account_editor_set_valid(editor, sensitive);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
966 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
967
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
968 static void
42352
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42303
diff changeset
969 pidgin_account_editor_avatar_response_cb(GObject *obj, GAsyncResult *result,
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42303
diff changeset
970 gpointer data)
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
971 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
972 PidginAccountEditor *editor = data;
42352
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42303
diff changeset
973 GFile *file = NULL;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
974
42352
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42303
diff changeset
975 file = gtk_file_dialog_open_finish(GTK_FILE_DIALOG(obj), result, NULL);
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42303
diff changeset
976 if(file != NULL) {
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
977 GError *error = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
978
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
979 g_clear_object(&editor->avatar_texture);
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
980 editor->avatar_texture = gdk_texture_new_from_file(file, &error);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
981 if(error != NULL) {
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
982 char *filename = g_file_get_path(file);
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
983 g_warning("Failed to create texture from file %s: %s", filename,
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
984 error->message);
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
985 g_free(filename);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
986 g_clear_error(&error);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
987 } else {
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
988 gtk_image_set_from_paintable(GTK_IMAGE(editor->avatar),
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
989 GDK_PAINTABLE(editor->avatar_texture));
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
990 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
991
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
992 g_object_unref(file);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
993 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
994
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
995 g_clear_object(&editor->avatar_dialog);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
996 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
997
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
998 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
999 pidgin_account_editor_avatar_set_clicked_cb(G_GNUC_UNUSED GtkButton *self,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1000 gpointer data)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1001 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1002 PidginAccountEditor *editor = data;
42352
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42303
diff changeset
1003 GtkRoot *root = NULL;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1004
42352
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42303
diff changeset
1005 root = gtk_widget_get_root(GTK_WIDGET(editor));
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42303
diff changeset
1006 editor->avatar_dialog = gtk_file_dialog_new();
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42303
diff changeset
1007 gtk_file_dialog_set_title(editor->avatar_dialog, _("Buddy Icon"));
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42303
diff changeset
1008 gtk_file_dialog_set_modal(editor->avatar_dialog, TRUE);
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42303
diff changeset
1009 gtk_file_dialog_open(editor->avatar_dialog, GTK_WINDOW(root), NULL,
1c53950f9052 Migrate from GtkFileChooserNative to GtkFileDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42303
diff changeset
1010 pidgin_account_editor_avatar_response_cb, editor);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1011 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1012
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1013 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1014 pidgin_account_editor_avatar_remove_clicked_cb(G_GNUC_UNUSED GtkButton *self,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1015 gpointer data)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1016 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1017 PidginAccountEditor *editor = data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1018
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1019 gtk_image_set_from_icon_name(GTK_IMAGE(editor->avatar), "select-avatar");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1020
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
1021 g_clear_object(&editor->avatar_texture);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1022 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1023
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1024 static gchar *
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1025 pidgin_account_editor_proxy_type_expression_cb(GObject *self,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1026 G_GNUC_UNUSED gpointer data)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1027 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1028 const gchar *text = "";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1029 const gchar *value = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1030
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1031 value = gtk_string_object_get_string(GTK_STRING_OBJECT(self));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1032 if(purple_strequal(value, "global")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1033 text = _("Use Global Proxy Settings");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1034 } else if(purple_strequal(value, "none")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1035 text = _("No proxy");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1036 } else if(purple_strequal(value, "socks4")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1037 text = _("SOCKS 4");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1038 } else if(purple_strequal(value, "socks5")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1039 text = _("SOCKS 5");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1040 } else if(purple_strequal(value, "tor")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1041 text = _("Tor/Privacy (SOCKS 5)");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1042 } else if(purple_strequal(value, "http")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1043 text = _("HTTP");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1044 } else if(purple_strequal(value, "envvar")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1045 text = _("Use Environmental Settings");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1046 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1047
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1048 return g_strdup(text);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1049 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1050
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1051 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1052 pidgin_account_editor_proxy_type_changed_cb(G_GNUC_UNUSED GObject *obj,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1053 G_GNUC_UNUSED GParamSpec *pspec,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1054 gpointer data)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1055 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1056 PidginAccountEditor *editor = data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1057 GObject *selected = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1058 gboolean show_options = TRUE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1059 const gchar *value = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1060
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1061 selected = adw_combo_row_get_selected_item(ADW_COMBO_ROW(editor->proxy_type));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1062 value = gtk_string_object_get_string(GTK_STRING_OBJECT(selected));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1063
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1064 if(purple_strequal(value, "global") || purple_strequal(value, "none") ||
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1065 purple_strequal(value, "envvar"))
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1066 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1067 show_options = FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1068 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1069
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1070 gtk_widget_set_visible(editor->proxy_options, show_options);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1071 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1072
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1073 /******************************************************************************
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1074 * GObject Implementation
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1075 *****************************************************************************/
42575
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42440
diff changeset
1076 G_DEFINE_FINAL_TYPE(PidginAccountEditor, pidgin_account_editor,
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42440
diff changeset
1077 ADW_TYPE_PREFERENCES_PAGE)
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1078
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1079 static void
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1080 pidgin_account_editor_get_property(GObject *obj, guint param_id, GValue *value,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1081 GParamSpec *pspec)
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1082 {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1083 PidginAccountEditor *editor = PIDGIN_ACCOUNT_EDITOR(obj);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1084
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1085 switch(param_id) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1086 case PROP_ACCOUNT:
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1087 g_value_set_object(value,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1088 pidgin_account_editor_get_account(editor));
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1089 break;
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1090 case PROP_VALID:
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1091 g_value_set_boolean(value,
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1092 pidgin_account_editor_get_is_valid(editor));
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1093 break;
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1094 default:
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1095 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1096 break;
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1097 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1098 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1099
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1100 static void
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1101 pidgin_account_editor_set_property(GObject *obj, guint param_id,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1102 const GValue *value, GParamSpec *pspec)
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1103 {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1104 PidginAccountEditor *editor = PIDGIN_ACCOUNT_EDITOR(obj);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1105
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1106 switch(param_id) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1107 case PROP_ACCOUNT:
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1108 pidgin_account_editor_set_account(editor,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1109 g_value_get_object(value));
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1110 break;
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1111 default:
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1112 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1113 break;
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1114 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1115 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1116
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1117 static void
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1118 pidgin_account_editor_dispose(GObject *obj) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1119 PidginAccountEditor *editor = PIDGIN_ACCOUNT_EDITOR(obj);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1120
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1121 g_clear_object(&editor->account);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1122 g_clear_object(&editor->avatar_dialog);
42979
d9f973ac3afd Use GdkTexture to wrap GdkPixbuf
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42804
diff changeset
1123 g_clear_object(&editor->avatar_texture);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1124
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1125 G_OBJECT_CLASS(pidgin_account_editor_parent_class)->dispose(obj);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1126 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1127
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1128 static void
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1129 pidgin_account_editor_init(PidginAccountEditor *editor) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1130 GtkWidget *widget = GTK_WIDGET(editor);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1131
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1132 gtk_widget_init_template(widget);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1133
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1134 pidgin_account_editor_proxy_type_changed_cb(NULL, NULL, editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1135 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1136
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1137 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1138 pidgin_account_editor_constructed(GObject *obj) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1139 PidginAccountEditor *editor = PIDGIN_ACCOUNT_EDITOR(obj);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1140
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1141 G_OBJECT_CLASS(pidgin_account_editor_parent_class)->constructed(obj);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1142
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1143 if(PURPLE_IS_ACCOUNT(editor->account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1144 pidgin_protocol_chooser_set_protocol(PIDGIN_PROTOCOL_CHOOSER(editor->protocol),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1145 purple_account_get_protocol(editor->account));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1146 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1147
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1148 pidgin_account_editor_update(editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1149 pidgin_account_editor_login_options_update_editable(editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1150 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1151
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1152 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1153 pidgin_account_editor_finalize(GObject *obj) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1154 PidginAccountEditor *editor = PIDGIN_ACCOUNT_EDITOR(obj);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1155
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1156 g_clear_pointer(&editor->user_split_rows, g_list_free);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1157
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1158 g_clear_pointer(&editor->advanced_entries, g_list_free);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1159 g_clear_pointer(&editor->advanced_rows, g_list_free);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1160
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1161 G_OBJECT_CLASS(pidgin_account_editor_parent_class)->finalize(obj);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1162 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1163
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1164 static void
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1165 pidgin_account_editor_class_init(PidginAccountEditorClass *klass) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1166 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1167 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1168
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1169 obj_class->get_property = pidgin_account_editor_get_property;
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1170 obj_class->set_property = pidgin_account_editor_set_property;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1171 obj_class->constructed = pidgin_account_editor_constructed;
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1172 obj_class->dispose = pidgin_account_editor_dispose;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1173 obj_class->finalize = pidgin_account_editor_finalize;
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1174
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1175 /**
42303
52c26807d91a Fix a number of issues with the documentation for properties
Gary Kramlich <grim@reaperworld.com>
parents: 42261
diff changeset
1176 * PidginAccountEditor:account:
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1177 *
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1178 * The account that this editor is modifying.
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1179 *
42620
72178a341eb8 Remove minor versions from Since tags in Pidgin
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
1180 * Since: 3.0
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1181 */
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1182 properties[PROP_ACCOUNT] = g_param_spec_object(
43072
a59a119b74f5 Remove nick and blurb from Pidgin properties
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42979
diff changeset
1183 "account", NULL, NULL,
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1184 PURPLE_TYPE_ACCOUNT,
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1185 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1186
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1187 /**
42303
52c26807d91a Fix a number of issues with the documentation for properties
Gary Kramlich <grim@reaperworld.com>
parents: 42261
diff changeset
1188 * PidginAccountEditor:valid:
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1189 *
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1190 * Whether or not the account settings are valid and it is okay to save the
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1191 * account.
42303
52c26807d91a Fix a number of issues with the documentation for properties
Gary Kramlich <grim@reaperworld.com>
parents: 42261
diff changeset
1192 *
42620
72178a341eb8 Remove minor versions from Since tags in Pidgin
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
1193 * Since: 3.0
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1194 */
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1195 properties[PROP_VALID] = g_param_spec_boolean(
43072
a59a119b74f5 Remove nick and blurb from Pidgin properties
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42979
diff changeset
1196 "valid", NULL, NULL,
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1197 FALSE,
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1198 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1199
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1200 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1201
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1202 gtk_widget_class_set_template_from_resource(widget_class,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1203 "/im/pidgin/Pidgin3/Accounts/editor.ui");
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1204
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1205 /* Login Options */
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1206 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1207 login_options);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1208 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1209 protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1210 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1211 username);
41776
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
1212 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
1213 user_splits);
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
1214 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
1215 require_password_row);
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
1216 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
3dc254c25eeb Add the require password option to PidginAccountEditor
Gary Kramlich <grim@reaperworld.com>
parents: 41688
diff changeset
1217 require_password);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1218
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1219 gtk_widget_class_bind_template_callback(widget_class,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1220 pidgin_account_editor_protocol_changed_cb);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1221 gtk_widget_class_bind_template_callback(widget_class,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1222 pidgin_account_editor_username_changed_cb);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1223
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1224 /* User Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1225 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1226 alias);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1227 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1228 avatar_row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1229 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1230 use_custom_avatar);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1231 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1232 avatar);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1233
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1234 gtk_widget_class_bind_template_callback(widget_class,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1235 pidgin_account_editor_avatar_set_clicked_cb);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1236 gtk_widget_class_bind_template_callback(widget_class,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1237 pidgin_account_editor_avatar_remove_clicked_cb);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1238
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1239 /* Advanced Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1240 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1241 advanced_group);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1242 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1243 advanced_toggle);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1244
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1245 /* Proxy Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1246 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1247 proxy_type);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1248 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1249 proxy_options);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1250 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1251 proxy_host);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1252 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1253 proxy_port);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1254 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1255 proxy_username);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1256 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1257 proxy_password);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1258
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1259 gtk_widget_class_bind_template_callback(widget_class,
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1260 pidgin_account_editor_proxy_type_expression_cb);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1261 gtk_widget_class_bind_template_callback(widget_class,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1262 pidgin_account_editor_proxy_type_changed_cb);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1263 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1264
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1265 /******************************************************************************
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1266 * API
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1267 *****************************************************************************/
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1268 GtkWidget *
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1269 pidgin_account_editor_new(PurpleAccount *account) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1270 return g_object_new(PIDGIN_TYPE_ACCOUNT_EDITOR, "account", account, NULL);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1271 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1272
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1273 PurpleAccount *
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1274 pidgin_account_editor_get_account(PidginAccountEditor *editor) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1275 g_return_val_if_fail(PIDGIN_IS_ACCOUNT_EDITOR(editor), NULL);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1276
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1277 return editor->account;
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1278 }
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1279
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1280 void
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1281 pidgin_account_editor_set_account(PidginAccountEditor *editor,
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1282 PurpleAccount *account)
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1283 {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1284 g_return_if_fail(PIDGIN_IS_ACCOUNT_EDITOR(editor));
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1285
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1286 /* Disconnect the notify handler from the previous account. */
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1287 if(PURPLE_IS_ACCOUNT(editor->account)) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1288 g_signal_handlers_disconnect_by_func(editor->account,
42246
3230f1a1fb8f Remove unnecessary casting from g_signal_handlers_disconnect
Gary Kramlich <grim@reaperworld.com>
parents: 42179
diff changeset
1289 pidgin_account_editor_connection_changed_cb,
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1290 editor);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1291 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1292
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1293 if(g_set_object(&editor->account, account)) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1294 if(PURPLE_IS_ACCOUNT(account)) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1295 pidgin_protocol_chooser_set_protocol(PIDGIN_PROTOCOL_CHOOSER(editor->protocol),
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1296 purple_account_get_protocol(editor->account));
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1297
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1298 g_signal_connect_object(account, "notify::connection",
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1299 G_CALLBACK(pidgin_account_editor_connection_changed_cb),
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1300 editor, 0);
42261
d5651ee577d8 Fix creating new accounts
Gary Kramlich <grim@reaperworld.com>
parents: 42255
diff changeset
1301 } else {
d5651ee577d8 Fix creating new accounts
Gary Kramlich <grim@reaperworld.com>
parents: 42255
diff changeset
1302 /* If we don't have an account reset the fields that are static. */
d5651ee577d8 Fix creating new accounts
Gary Kramlich <grim@reaperworld.com>
parents: 42255
diff changeset
1303 pidgin_protocol_chooser_set_protocol(PIDGIN_PROTOCOL_CHOOSER(editor->protocol),
d5651ee577d8 Fix creating new accounts
Gary Kramlich <grim@reaperworld.com>
parents: 42255
diff changeset
1304 NULL);
d5651ee577d8 Fix creating new accounts
Gary Kramlich <grim@reaperworld.com>
parents: 42255
diff changeset
1305 gtk_editable_set_text(GTK_EDITABLE(editor->username), "");
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1306 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1307
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1308 g_object_notify_by_pspec(G_OBJECT(editor), properties[PROP_ACCOUNT]);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1309 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1310
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1311 pidgin_account_editor_update(editor);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1312 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1313
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1314 gboolean
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1315 pidgin_account_editor_get_is_valid(PidginAccountEditor *editor) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1316 g_return_val_if_fail(PIDGIN_IS_ACCOUNT_EDITOR(editor), FALSE);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1317
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1318 return editor->valid;
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1319 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1320
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1321 void
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1322 pidgin_account_editor_save(PidginAccountEditor *editor) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1323 gboolean new_account = FALSE;
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1324
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1325 g_return_if_fail(PIDGIN_IS_ACCOUNT_EDITOR(editor));
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1326 g_return_if_fail(editor->valid == TRUE);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1327
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1328 new_account = pidgin_account_editor_save_login_options(editor);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1329 pidgin_account_editor_save_user_options(editor);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1330 pidgin_account_editor_save_advanced_options(editor);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1331 pidgin_account_editor_save_proxy(editor, new_account);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1332
42700
3e480ee2d7ee Move Pidgin to the presence API
Gary Kramlich <grim@reaperworld.com>
parents: 42620
diff changeset
1333 /* If this is a new account, enable it, and add it to the account manager.
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1334 */
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1335 if(new_account) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1336 PurpleAccountManager *manager = NULL;
42700
3e480ee2d7ee Move Pidgin to the presence API
Gary Kramlich <grim@reaperworld.com>
parents: 42620
diff changeset
1337
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1338 manager = purple_account_manager_get_default();
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1339 purple_account_manager_add(manager, editor->account);
42788
33f25c732a0b Fix problem that the enabled-accounts menu is empty when creating a new account
Markus Fischer <ivanhoe@fiscari.de>
parents: 42724
diff changeset
1340
33f25c732a0b Fix problem that the enabled-accounts menu is empty when creating a new account
Markus Fischer <ivanhoe@fiscari.de>
parents: 42724
diff changeset
1341 purple_account_set_enabled(editor->account, TRUE);
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1342 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 41971
diff changeset
1343 }

mercurial