pidgin/pidginaccounteditor.c

Fri, 16 Sep 2022 01:54:11 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Fri, 16 Sep 2022 01:54:11 -0500
changeset 41694
83e6692c76a3
parent 41688
6ccdb4116ca2
child 41776
3dc254c25eeb
permissions
-rw-r--r--

Change the credential provider row active indicator to a CheckButton

Because I noticed that Adw has a style that is for this sort of thing.

Testing Done:
Opened Credential prefs, and changed selected provider. Also checked that clicking the check button didn't accidentally change its state without changing the row, and that it could not be selected by keyboard separately from the row.

Reviewed at https://reviews.imfreedom.org/r/1775/

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 {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 GtkDialog parent;
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
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
36 /* Login Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
37 GtkWidget *login_options;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
38 GtkWidget *protocol;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
39 GtkWidget *username;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
40
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
41 GList *user_split_entries;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
42 GList *user_split_rows;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
43
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
44 /* User Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
45 GtkWidget *alias;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
46
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
47 GtkFileChooserNative *avatar_dialog;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
48 GdkPixbuf *avatar_pixbuf;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
49 GtkWidget *avatar_row;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
50 GtkWidget *use_custom_avatar;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
51 GtkWidget *avatar;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
52
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
53 /* Advanced Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
54 GtkWidget *advanced_group;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
55 GtkWidget *advanced_toggle;
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 GList *advanced_entries;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
58 GList *advanced_rows;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
59
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
60 /* Proxy Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
61 GtkWidget *proxy_type;
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 GtkWidget *proxy_options;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
63 GtkWidget *proxy_host;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
64 GtkWidget *proxy_port;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
65 GtkWidget *proxy_username;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
66 GtkWidget *proxy_password;
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 };
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 enum {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 PROP_0,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 PROP_ACCOUNT,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 N_PROPERTIES,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 };
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
76
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
77 /******************************************************************************
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
78 * Prototypes
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
79 *****************************************************************************/
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
80 static void pidgin_account_editor_connection_changed_cb(GObject *obj,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
81 GParamSpec *pspec,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
82 gpointer data);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
83
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 /******************************************************************************
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 * Helpers
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 *****************************************************************************/
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 static void
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
88 pidgin_account_editor_add_user_split(gpointer data, gpointer user_data) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
89 PurpleAccountUserSplit *split = data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
90 PidginAccountEditor *editor = user_data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
91 GtkWidget *entry = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
92
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
93 if(!purple_account_user_split_is_constant(split)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
94 GtkWidget *row = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
95
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
96 row = adw_action_row_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
97 editor->user_split_rows = g_list_append(editor->user_split_rows, row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
98 adw_preferences_group_add(ADW_PREFERENCES_GROUP(editor->login_options),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
99 row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
100
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
101 adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
102 purple_account_user_split_get_text(split));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
103
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
104 entry = gtk_entry_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
105 gtk_widget_set_hexpand(entry, TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
106 gtk_widget_set_valign(entry, GTK_ALIGN_CENTER);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
107 adw_action_row_add_suffix(ADW_ACTION_ROW(row), entry);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
108 adw_action_row_set_activatable_widget(ADW_ACTION_ROW(row), entry);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
109 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
110
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
111 editor->user_split_entries = g_list_append(editor->user_split_entries,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
112 entry);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
113 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
114
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
115 static gboolean
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
116 pidgin_account_editor_update_login_options(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
117 PurpleProtocol *protocol)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
118 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
119 GList *user_splits = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
120 GList *split_item = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
121 GList *entry_item = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
122 gchar *username = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
123
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
124 /* Clear out the old user splits from our list. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
125 g_clear_pointer(&editor->user_split_entries, g_list_free);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
126
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
127 /* 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
128 * constant user split.
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 while(editor->user_split_rows != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
131 adw_preferences_group_remove(ADW_PREFERENCES_GROUP(editor->login_options),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
132 editor->user_split_rows->data);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
133
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
134 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
135 editor->user_split_rows);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
136 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
137
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
138 /* Add the user splits for the protocol. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
139 user_splits = purple_protocol_get_user_splits(protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
140 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
141
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
142 /* If we have an account, populate its values. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
143 if(PURPLE_IS_ACCOUNT(editor->account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
144 /* The username will be split apart below and eventually set as the text
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
145 * in the username entry.
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
146 */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
147 username = g_strdup(purple_account_get_username(editor->account));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
148 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
149
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
150 /* 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
151 * 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
152 * 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
153 * the username.
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
154 */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
155 split_item = g_list_last(user_splits);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
156 entry_item = g_list_last(editor->user_split_entries);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
157 while(split_item != NULL && entry_item != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
158 GtkWidget *entry = entry_item->data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
159 PurpleAccountUserSplit *split = split_item->data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
160 gchar *ptr = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
161 const gchar *value = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
162
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
163 if(username != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
164 gchar sep = purple_account_user_split_get_separator(split);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
165
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
166 if(purple_account_user_split_get_reverse(split)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
167 ptr = strrchr(username, sep);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
168 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
169 ptr = strchr(username, sep);
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 if(ptr != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
173 /* Insert a null terminator in place of the separator. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
174 *ptr = '\0';
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 /* Set the value to the first byte after the separator. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
177 value = ptr + 1;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
178 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
179 }
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 if(value == NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
182 value = purple_account_user_split_get_default_value(split);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
183 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
184
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
185 if(value != NULL && GTK_IS_ENTRY(entry)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
186 gtk_editable_set_text(GTK_EDITABLE(entry), value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
187 }
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 split_item = split_item->prev;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
190 entry_item = entry_item->prev;
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
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
193 /* Free the user splits. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
194 g_list_free_full(user_splits,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
195 (GDestroyNotify)purple_account_user_split_destroy);
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 /* 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
198 * copy of said username.
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
199 */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
200 if(username != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
201 gtk_editable_set_text(GTK_EDITABLE(editor->username), username);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
202 g_free(username);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
203 return TRUE;
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 return FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
207 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
208
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
209 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
210 pidgin_account_editor_update_user_options(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
211 PurpleProtocol *protocol)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
212 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
213 PurpleBuddyIconSpec *icon_spec = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
214 PurpleImage *image = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
215 gboolean show_avatar_opts = TRUE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
216 const gchar *svalue = "";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
217 gboolean use_global = TRUE;
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 /* Check if the protocol supports avatars. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
220 icon_spec = purple_protocol_get_icon_spec(protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
221 show_avatar_opts = (icon_spec != NULL && icon_spec->format != NULL);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
222 purple_buddy_icon_spec_free(icon_spec);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
223
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
224 gtk_widget_set_visible(editor->avatar_row, show_avatar_opts);
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 /* Determine our values. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
227 if(editor->account != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
228 svalue = purple_account_get_private_alias(editor->account);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
229 image = purple_buddy_icons_find_account_icon(editor->account);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
230 use_global = purple_account_get_bool(editor->account,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
231 "use-global-buddyicon", TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
232 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
233
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
234 if(svalue == NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
235 svalue = "";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
236 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
237
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
238 gtk_editable_set_text(GTK_EDITABLE(editor->alias), svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
239 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
240
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
241 g_clear_object(&editor->avatar_pixbuf);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
242 if(PURPLE_IS_IMAGE(image)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
243 editor->avatar_pixbuf = purple_gdk_pixbuf_from_image(image);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
244 gtk_image_set_from_pixbuf(GTK_IMAGE(editor->avatar),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
245 editor->avatar_pixbuf);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
246 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
247 gtk_image_set_from_icon_name(GTK_IMAGE(editor->avatar),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
248 "select-avatar");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
249 }
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
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
252 static gboolean
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
253 pidgin_account_editor_advanced_option_use_default(PidginAccountEditor *editor) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
254 PurpleProtocol *protocol = NULL;
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 /* If this is the new dialog, use the default value. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
257 if(!PURPLE_IS_ACCOUNT(editor->account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
258 return TRUE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
259 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
260
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
261 /* 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
262 protocol = pidgin_protocol_chooser_get_protocol(PIDGIN_PROTOCOL_CHOOSER(editor->protocol));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
263 if(protocol != purple_account_get_protocol(editor->account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
264 return TRUE;
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
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
267 return FALSE;
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 static GtkWidget *
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
271 pidgin_account_editor_add_advanced_boolean(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
272 PurpleAccountOption *option)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
273 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
274 GtkWidget *row = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
275 GtkWidget *toggle = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
276 gboolean value = FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
277 gchar *title = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
278
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
279 if(pidgin_account_editor_advanced_option_use_default(editor)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
280 value = purple_account_option_get_default_bool(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
281 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
282 const gchar *setting = purple_account_option_get_setting(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
283 gboolean def_value = purple_account_option_get_default_bool(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
284
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
285 value = purple_account_get_bool(editor->account, setting, def_value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
286 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
287
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
288 /* Create the row and set its title with a mnemonic. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
289 row = adw_action_row_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
290 g_object_bind_property(editor->advanced_toggle, "active", row, "visible",
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
291 G_BINDING_SYNC_CREATE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
292 adw_preferences_row_set_use_underline(ADW_PREFERENCES_ROW(row), TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
293 title = g_strdup_printf("_%s", purple_account_option_get_text(option));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
294 adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row), title);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
295 g_free(title);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
296
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
297 adw_preferences_group_add(ADW_PREFERENCES_GROUP(editor->advanced_group),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
298 row);
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 /* Add the row to the editor's list of advanced rows. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
301 editor->advanced_rows = g_list_append(editor->advanced_rows, row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
302
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
303 /* Create the input widget. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
304 toggle = gtk_switch_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
305 gtk_switch_set_active(GTK_SWITCH(toggle), value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
306 gtk_widget_set_valign(toggle, GTK_ALIGN_CENTER);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
307 adw_action_row_add_suffix(ADW_ACTION_ROW(row), toggle);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
308 adw_action_row_set_activatable_widget(ADW_ACTION_ROW(row), toggle);
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 return toggle;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
311 }
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 static GtkWidget *
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
314 pidgin_account_editor_add_advanced_int(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
315 PurpleAccountOption *option)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
316 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
317 GtkWidget *row = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
318 GtkWidget *entry = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
319 gint value = 0;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
320 gchar *title = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
321 gchar *svalue = 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_int(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 gint def_value = purple_account_option_get_default_int(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_int(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);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
336 adw_preferences_row_set_use_underline(ADW_PREFERENCES_ROW(row), TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
337 title = g_strdup_printf("_%s", purple_account_option_get_text(option));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
338 adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row), title);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
339 g_free(title);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
340
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
341 adw_preferences_group_add(ADW_PREFERENCES_GROUP(editor->advanced_group),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
342 row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
343
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
344 /* Add the row to the editor's list of advanced rows. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
345 editor->advanced_rows = g_list_append(editor->advanced_rows, row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
346
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
347 /* Create the input widget. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
348 entry = gtk_entry_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
349 gtk_entry_set_input_purpose(GTK_ENTRY(entry), GTK_INPUT_PURPOSE_DIGITS);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
350 svalue = g_strdup_printf("%d", value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
351 gtk_editable_set_text(GTK_EDITABLE(entry), svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
352 g_free(svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
353
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
354 gtk_widget_set_hexpand(entry, TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
355 gtk_widget_set_valign(entry, GTK_ALIGN_CENTER);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
356 adw_action_row_add_suffix(ADW_ACTION_ROW(row), entry);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
357 adw_action_row_set_activatable_widget(ADW_ACTION_ROW(row), entry);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
358
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
359 return entry;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
360 }
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 static GtkWidget *
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
363 pidgin_account_editor_add_advanced_string(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
364 PurpleAccountOption *option)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
365 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
366 GtkWidget *row = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
367 GtkWidget *entry = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
368 gchar *title = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
369 const gchar *value = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
370
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
371 if(pidgin_account_editor_advanced_option_use_default(editor)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
372 value = purple_account_option_get_default_string(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
373 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
374 const gchar *setting = purple_account_option_get_setting(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
375 const gchar *def_value = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
376
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
377 def_value = purple_account_option_get_default_string(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
378
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
379 value = purple_account_get_string(editor->account, setting, def_value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
380 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
381
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
382 /* Create the row and set its title with a mnemonic. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
383 row = adw_action_row_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
384 g_object_bind_property(editor->advanced_toggle, "active", row, "visible",
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
385 G_BINDING_SYNC_CREATE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
386 adw_preferences_row_set_use_underline(ADW_PREFERENCES_ROW(row), TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
387 title = g_strdup_printf("_%s", purple_account_option_get_text(option));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
388 adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row), title);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
389 g_free(title);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
390
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
391 adw_preferences_group_add(ADW_PREFERENCES_GROUP(editor->advanced_group),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
392 row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
393
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
394 /* Add the row to the editor's list of advanced rows. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
395 editor->advanced_rows = g_list_append(editor->advanced_rows, row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
396
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
397 /* Create the input widget. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
398 if(purple_account_option_string_get_masked(option)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
399 entry = gtk_password_entry_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
400 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
401 entry = gtk_entry_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
402 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
403
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
404 if(value != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
405 gtk_editable_set_text(GTK_EDITABLE(entry), value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
406 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
407 gtk_widget_set_hexpand(entry, TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
408 gtk_widget_set_valign(entry, GTK_ALIGN_CENTER);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
409 adw_action_row_add_suffix(ADW_ACTION_ROW(row), entry);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
410 adw_action_row_set_activatable_widget(ADW_ACTION_ROW(row), entry);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
411
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
412 return entry;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
413 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
414
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
415 static GtkWidget *
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
416 pidgin_account_editor_add_advanced_list(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
417 PurpleAccountOption *option)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
418 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
419 GtkWidget *row = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
420 GtkStringList *model = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
421 GList *data = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
422 GList *items = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
423 gchar *title = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
424 const gchar *value = FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
425 guint index = 0;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
426 guint position = 0;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
427
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
428 if(pidgin_account_editor_advanced_option_use_default(editor)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
429 value = purple_account_option_get_default_list_value(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
430 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
431 const gchar *setting = purple_account_option_get_setting(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
432 const gchar *def_value = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
433
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
434 def_value = purple_account_option_get_default_list_value(option);
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 value = purple_account_get_string(editor->account, setting, def_value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
437 }
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 /* Create the row and set its title with a mnemonic. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
440 row = adw_combo_row_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
441 g_object_bind_property(editor->advanced_toggle, "active", row, "visible",
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
442 G_BINDING_SYNC_CREATE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
443 adw_preferences_row_set_use_underline(ADW_PREFERENCES_ROW(row), TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
444 adw_combo_row_set_use_subtitle(ADW_COMBO_ROW(row), TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
445 title = g_strdup_printf("_%s", purple_account_option_get_text(option));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
446 adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row), title);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
447 g_free(title);
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 adw_preferences_group_add(ADW_PREFERENCES_GROUP(editor->advanced_group),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
450 row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
451
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
452 /* Add the row to the editor's list of advanced rows. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
453 editor->advanced_rows = g_list_append(editor->advanced_rows, row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
454
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
455 /* Create the model and data for the expression. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
456 items = purple_account_option_get_list(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
457 model = gtk_string_list_new(NULL);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
458
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
459 for(GList *l = items; l != NULL; l = l->next) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
460 PurpleKeyValuePair *kvp = l->data;
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(kvp != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
463 if(purple_strequal(kvp->value, value)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
464 position = index;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
465 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
466
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
467 data = g_list_append(data, kvp->value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
468 gtk_string_list_append(model, kvp->key);
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
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
471 index++;
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
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
474 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
475 adw_combo_row_set_selected(ADW_COMBO_ROW(row), position);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
476 g_object_set_data_full(G_OBJECT(row), "keys", data,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
477 (GDestroyNotify)g_list_free);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
478
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
479 return row;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
480 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
481
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
482 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
483 pidgin_account_editor_add_advanced_option(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
484 PurpleAccountOption *option)
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 PurplePrefType type;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
487 GtkWidget *widget = NULL;
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 type = purple_account_option_get_pref_type(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
490 switch(type) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
491 case PURPLE_PREF_BOOLEAN:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
492 widget = pidgin_account_editor_add_advanced_boolean(editor, option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
493 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
494 case PURPLE_PREF_INT:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
495 widget = pidgin_account_editor_add_advanced_int(editor, option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
496 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
497 case PURPLE_PREF_STRING:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
498 widget = pidgin_account_editor_add_advanced_string(editor, option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
499 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
500 case PURPLE_PREF_STRING_LIST:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
501 widget = pidgin_account_editor_add_advanced_list(editor, option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
502 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
503 default:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
504 purple_debug_error("PidginAccountEditor",
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
505 "Invalid Account Option pref type (%d)", type);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
506 break;
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
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
509 if(GTK_IS_WIDGET(widget)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
510 g_object_set_data_full(G_OBJECT(widget), "option", option,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
511 (GDestroyNotify)purple_account_option_destroy);
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 editor->advanced_entries = g_list_append(editor->advanced_entries,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
514 widget);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
515 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
516 purple_account_option_destroy(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
517 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
518 }
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 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
521 pidgin_account_editor_update_advanced_options(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
522 PurpleProtocol *protocol)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
523 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
524 GList *options = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
525
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
526 g_clear_pointer(&editor->advanced_entries, g_list_free);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
527 while(editor->advanced_rows != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
528 adw_preferences_group_remove(ADW_PREFERENCES_GROUP(editor->advanced_group),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
529 GTK_WIDGET(editor->advanced_rows->data));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
530
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
531 editor->advanced_rows = g_list_delete_link(editor->advanced_rows,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
532 editor->advanced_rows);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
533 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
534
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
535 if(!PURPLE_IS_PROTOCOL(protocol)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
536 gtk_widget_set_visible(editor->advanced_group, FALSE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
537
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
538 return;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
539 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
540
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
541 options = purple_protocol_get_account_options(protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
542 if(options == NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
543 gtk_widget_set_visible(editor->advanced_group, FALSE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
544
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
545 return;
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
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
548 /* 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
549 * 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
550 */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
551 while(options != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
552 pidgin_account_editor_add_advanced_option(editor, options->data);
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 options = g_list_delete_link(options, options);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
555 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
556
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
557 gtk_widget_set_visible(editor->advanced_group, TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
558 }
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 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
561 pidgin_account_editor_update_proxy_options(PidginAccountEditor *editor) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
562 PurpleProxyInfo *info = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
563 GListModel *model = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
564 const gchar *svalue = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
565 gint ivalue = 0;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
566 guint position = 0;
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 if(!PURPLE_IS_ACCOUNT(editor->account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
569 return;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
570 }
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 info = purple_account_get_proxy_info(editor->account);
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 switch(purple_proxy_info_get_proxy_type(info)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
575 case PURPLE_PROXY_TYPE_USE_GLOBAL:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
576 svalue = "global";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
577 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
578 case PURPLE_PROXY_TYPE_NONE:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
579 svalue = "none";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
580 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
581 case PURPLE_PROXY_TYPE_SOCKS4:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
582 svalue = "socks4";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
583 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
584 case PURPLE_PROXY_TYPE_SOCKS5:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
585 svalue = "socks5";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
586 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
587 case PURPLE_PROXY_TYPE_TOR:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
588 svalue = "tor";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
589 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
590 case PURPLE_PROXY_TYPE_HTTP:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
591 svalue = "http";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
592 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
593 case PURPLE_PROXY_TYPE_USE_ENVVAR:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
594 svalue = "envvar";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
595 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
596 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
597
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
598 model = adw_combo_row_get_model(ADW_COMBO_ROW(editor->proxy_type));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
599 for(guint i = 0; i < g_list_model_get_n_items(model); i++) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
600 GtkStringObject *obj = g_list_model_get_item(model, i);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
601 if(purple_strequal(svalue, gtk_string_object_get_string(obj))) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
602 position = i;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
603 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
604 }
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 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
607
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
608 svalue = purple_proxy_info_get_hostname(info);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
609 if(svalue == NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
610 svalue = "";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
611 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
612 gtk_editable_set_text(GTK_EDITABLE(editor->proxy_host), svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
613
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
614 ivalue = purple_proxy_info_get_port(info);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
615 gtk_spin_button_set_value(GTK_SPIN_BUTTON(editor->proxy_port),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
616 (gdouble)ivalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
617
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
618 svalue = purple_proxy_info_get_username(info);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
619 if(svalue == NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
620 svalue = "";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
621 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
622 gtk_editable_set_text(GTK_EDITABLE(editor->proxy_username), svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
623
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
624 svalue = purple_proxy_info_get_password(info);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
625 if(svalue == NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
626 svalue = "";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
627 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
628 gtk_editable_set_text(GTK_EDITABLE(editor->proxy_password), svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
629 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
630
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
631 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
632 pidgin_account_editor_update(PidginAccountEditor *editor) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
633 PurpleProtocol *protocol = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
634 gboolean sensitive = FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
635
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
636 if(PURPLE_IS_ACCOUNT(editor->account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
637 PurpleConnection *connection = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
638
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
639 connection = purple_account_get_connection(editor->account);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
640 if(PURPLE_IS_CONNECTION(connection)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
641 gtk_widget_set_sensitive(editor->protocol, FALSE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
642 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
643 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
644
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
645 protocol = pidgin_protocol_chooser_get_protocol(PIDGIN_PROTOCOL_CHOOSER(editor->protocol));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
646
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
647 sensitive = pidgin_account_editor_update_login_options(editor, protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
648 pidgin_account_editor_update_user_options(editor, protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
649 pidgin_account_editor_update_advanced_options(editor, protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
650 pidgin_account_editor_update_proxy_options(editor);
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 gtk_dialog_set_response_sensitive(GTK_DIALOG(editor), GTK_RESPONSE_APPLY,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
653 sensitive);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
654 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
655
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
656 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
657 pidgin_account_editor_login_options_update_editable(PidginAccountEditor *editor)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
658 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
659 PurpleConnection *connection = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
660 gboolean editable = TRUE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
661
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
662 if(PURPLE_IS_ACCOUNT(editor->account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
663
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
664 connection = purple_account_get_connection(editor->account);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
665
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
666 /* If we have an active connection, we need to disable everything
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
667 * related to the protocol and username.
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
668 */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
669 if(PURPLE_IS_CONNECTION(connection)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
670 PidginProtocolChooser *chooser = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
671 PurpleProtocol *connected_protocol = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
672 PurpleProtocol *selected_protocol = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
673 editable = FALSE;
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 /* 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
676 * back and update the editor to reflect what settings are active.
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
677 */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
678 connected_protocol = purple_connection_get_protocol(connection);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
679
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
680 chooser = PIDGIN_PROTOCOL_CHOOSER(editor->protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
681 selected_protocol = pidgin_protocol_chooser_get_protocol(chooser);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
682 if(connected_protocol != selected_protocol) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
683 pidgin_protocol_chooser_set_protocol(chooser, connected_protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
684 pidgin_account_editor_update(editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
685 }
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
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
690 gtk_widget_set_sensitive(editor->protocol, editable);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
691 gtk_editable_set_editable(GTK_EDITABLE(editor->username), editable);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
692 for(GList *l = editor->user_split_entries; l != NULL; l = l->next) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
693 GtkWidget *widget = l->data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
694
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
695 gtk_editable_set_editable(GTK_EDITABLE(widget), editable);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
696 }
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
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
700 pidgin_account_editor_set_account(PidginAccountEditor *editor,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
701 PurpleAccount *account)
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
702 {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
703 if(g_set_object(&editor->account, account)) {
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
704 if(PURPLE_IS_ACCOUNT(account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
705 g_signal_connect(account, "notify::connection",
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
706 G_CALLBACK(pidgin_account_editor_connection_changed_cb),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
707 editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
708 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
709
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
710 g_object_notify_by_pspec(G_OBJECT(editor), properties[PROP_ACCOUNT]);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
711 }
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 pidgin_account_editor_update(editor);
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
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
716 static gboolean
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
717 pidgin_account_editor_save_login_options(PidginAccountEditor *editor) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
718 PurpleProtocol *protocol = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
719 GList *split_item = NULL, *entry_item = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
720 GString *username = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
721 const gchar *protocol_id = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
722 gboolean new_account = FALSE;
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
723
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
724 protocol = pidgin_protocol_chooser_get_protocol(PIDGIN_PROTOCOL_CHOOSER(editor->protocol));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
725 protocol_id = purple_protocol_get_id(protocol);
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 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
728
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
729 split_item = purple_protocol_get_user_splits(protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
730 entry_item = editor->user_split_entries;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
731 while(split_item != NULL && entry_item != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
732 PurpleAccountUserSplit *split = split_item->data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
733 GtkEntry *entry = entry_item->data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
734 const gchar *value = "";
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
735 gchar sep = '\0';
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
736
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
737 sep = purple_account_user_split_get_separator(split);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
738 g_string_append_c(username, sep);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
739
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
740 if(GTK_IS_ENTRY(entry)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
741 value = gtk_editable_get_text(GTK_EDITABLE(entry));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
742 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
743
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
744 if(value == NULL || *value == '\0') {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
745 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
746 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
747
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
748 g_string_append(username, value);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
749
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
750 split_item = split_item->next;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
751 entry_item = entry_item->next;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
752 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
753
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
754 if(!PURPLE_IS_ACCOUNT(editor->account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
755 editor->account = purple_account_new(username->str, protocol_id);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
756 new_account = TRUE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
757 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
758 purple_account_set_username(editor->account, username->str);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
759 purple_account_set_protocol_id(editor->account, protocol_id);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
760 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
761
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
762 g_string_free(username, TRUE);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
763
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
764 return new_account;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
765 }
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
766
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
767 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
768 pidgin_account_editor_save_user_options(PidginAccountEditor *editor) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
769 const gchar *svalue = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
770 gboolean bvalue = FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
771
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
772 /* Set the alias. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
773 svalue = gtk_editable_get_text(GTK_EDITABLE(editor->alias));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
774 if(*svalue == '\0') {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
775 svalue = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
776 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
777 purple_account_set_private_alias(editor->account, svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
778
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
779 /* Set whether or not to use the global avatar. */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
780 bvalue = gtk_switch_get_active(GTK_SWITCH(editor->use_custom_avatar));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
781 purple_account_set_bool(editor->account, "use-global-buddyicon", !bvalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
782
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
783 if(bvalue) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
784 if(GDK_IS_PIXBUF(editor->avatar_pixbuf)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
785 # warning implement this when buddy icons do not suck so bad.
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
786 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
787 purple_buddy_icons_set_account_icon(editor->account, NULL, 0);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
788 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
789 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
790 # warning set the global buddy icon when buddy icons do not suck so bad.
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
791 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
792 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
793
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
794 static void
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
795 pidgin_account_editor_save_advanced_options(PidginAccountEditor *editor) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
796 for(GList *l = editor->advanced_entries; l != NULL; l = l->next) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
797 GtkWidget *widget = l->data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
798 PurpleAccountOption *option = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
799 GList *keys = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
800 const gchar *setting = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
801 const gchar *svalue = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
802 gboolean bvalue = FALSE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
803 gint ivalue = 0;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
804 guint selected = 0;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
805
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
806 option = g_object_get_data(G_OBJECT(widget), "option");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
807 setting = purple_account_option_get_setting(option);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
808
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
809 switch(purple_account_option_get_pref_type(option)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
810 case PURPLE_PREF_STRING:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
811 svalue = gtk_editable_get_text(GTK_EDITABLE(widget));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
812 purple_account_set_string(editor->account, setting, svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
813 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
814 case PURPLE_PREF_INT:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
815 svalue = gtk_editable_get_text(GTK_EDITABLE(widget));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
816 ivalue = atoi(svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
817 purple_account_set_int(editor->account, setting, ivalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
818 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
819 case PURPLE_PREF_BOOLEAN:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
820 bvalue = gtk_switch_get_active(GTK_SWITCH(widget));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
821 purple_account_set_bool(editor->account, setting, bvalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
822 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
823 case PURPLE_PREF_STRING_LIST:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
824 keys = g_object_get_data(G_OBJECT(widget), "keys");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
825 selected = adw_combo_row_get_selected(ADW_COMBO_ROW(widget));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
826 svalue = g_list_nth_data(keys, selected);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
827 purple_account_set_string(editor->account, setting, svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
828 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
829 default:
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
830 break;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
831 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
832 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
833 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
834
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
835 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
836 pidgin_account_editor_save_proxy(PidginAccountEditor *editor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
837 gboolean new_account)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
838 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
839 PurpleProxyInfo *info = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
840 PurpleProxyType type = PURPLE_PROXY_TYPE_NONE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
841 GObject *item = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
842 const gchar *svalue = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
843 gint ivalue = 0;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
844
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
845 /* Build the ProxyInfo object */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
846 if(new_account) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
847 info = purple_proxy_info_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
848 purple_account_set_proxy_info(editor->account, info);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
849 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
850 info = purple_account_get_proxy_info(editor->account);
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
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
853 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
854 svalue = gtk_string_object_get_string(GTK_STRING_OBJECT(item));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
855 if(purple_strequal(svalue, "global")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
856 type = PURPLE_PROXY_TYPE_USE_GLOBAL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
857 } else if(purple_strequal(svalue, "none")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
858 type = PURPLE_PROXY_TYPE_NONE;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
859 } else if(purple_strequal(svalue, "socks4")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
860 type = PURPLE_PROXY_TYPE_SOCKS4;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
861 } else if(purple_strequal(svalue, "socks5")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
862 type = PURPLE_PROXY_TYPE_SOCKS5;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
863 } else if(purple_strequal(svalue, "tor")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
864 type = PURPLE_PROXY_TYPE_TOR;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
865 } else if(purple_strequal(svalue, "http")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
866 type = PURPLE_PROXY_TYPE_HTTP;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
867 } else if(purple_strequal(svalue, "envvar")) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
868 type = PURPLE_PROXY_TYPE_USE_ENVVAR;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
869 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
870 purple_proxy_info_set_proxy_type(info, type);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
871
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
872 svalue = gtk_editable_get_text(GTK_EDITABLE(editor->proxy_host));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
873 purple_proxy_info_set_hostname(info, svalue);
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 ivalue = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(editor->proxy_port));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
876 purple_proxy_info_set_port(info, ivalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
877
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
878 svalue = gtk_editable_get_text(GTK_EDITABLE(editor->proxy_username));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
879 purple_proxy_info_set_username(info, svalue);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
880
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
881 svalue = gtk_editable_get_text(GTK_EDITABLE(editor->proxy_password));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
882 purple_proxy_info_set_password(info, svalue);
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
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
885 static void
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
886 pidgin_account_editor_save_account(PidginAccountEditor *editor) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
887 gboolean new_account = FALSE;
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
888
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
889 new_account = pidgin_account_editor_save_login_options(editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
890 pidgin_account_editor_save_user_options(editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
891 pidgin_account_editor_save_advanced_options(editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
892 pidgin_account_editor_save_proxy(editor, new_account);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
893
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
894 /* If this is a new account, add it to the account manager and bring it
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
895 * online.
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
896 */
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
897 if(new_account) {
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
898 PurpleAccountManager *manager = NULL;
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
899 const PurpleSavedStatus *saved_status;
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
900
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
901 manager = purple_account_manager_get_default();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
902
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
903 purple_account_manager_add(manager, editor->account);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
904
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
905 saved_status = purple_savedstatus_get_current();
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
906 if (saved_status != NULL) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
907 purple_savedstatus_activate_for_account(saved_status,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
908 editor->account);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
909 purple_account_set_enabled(editor->account, TRUE);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
910 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
911 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
912 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
913
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
914 /******************************************************************************
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
915 * Callbacks
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
916 *****************************************************************************/
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
917 static void
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
918 pidgin_account_editor_connection_changed_cb(G_GNUC_UNUSED GObject *obj,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
919 G_GNUC_UNUSED GParamSpec *pspec,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
920 gpointer data)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
921 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
922 PidginAccountEditor *editor = data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
923
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
924 pidgin_account_editor_login_options_update_editable(editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
925 }
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 static void
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
928 pidgin_account_editor_response_cb(GtkDialog *dialog, gint response_id,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
929 G_GNUC_UNUSED gpointer data)
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
930 {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
931 if(response_id == GTK_RESPONSE_APPLY) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
932 pidgin_account_editor_save_account(PIDGIN_ACCOUNT_EDITOR(dialog));
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
933 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
934
41560
2579a5138f0c A bunch of random fixes for the the gtk4 branch
Gary Kramlich <grim@reaperworld.com>
parents: 41483
diff changeset
935 gtk_window_destroy(GTK_WINDOW(dialog));
41483
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
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
938 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
939 pidgin_account_editor_protocol_changed_cb(G_GNUC_UNUSED GObject *obj,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
940 G_GNUC_UNUSED GParamSpec *pspec,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
941 gpointer data)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
942 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
943 pidgin_account_editor_update(data);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
944 }
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 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
947 pidgin_account_editor_username_changed_cb(GtkEditable *self, gpointer data) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
948 PidginAccountEditor *editor = data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
949 const gchar *text = gtk_editable_get_text(self);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
950 gboolean sensitive = FALSE;
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 if(text != NULL && *text != '\0') {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
953 sensitive = TRUE;
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
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
956 gtk_dialog_set_response_sensitive(GTK_DIALOG(editor), GTK_RESPONSE_APPLY,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
957 sensitive);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
958 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
959
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
960 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
961 pidgin_account_editor_avatar_response_cb(GtkNativeDialog *self,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
962 gint response_id, gpointer data)
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 PidginAccountEditor *editor = data;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
965
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
966 if(response_id == GTK_RESPONSE_ACCEPT) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
967 GError *error = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
968 GFile *file = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
969 gchar *filename = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
970
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
971 file = gtk_file_chooser_get_file(GTK_FILE_CHOOSER(self));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
972 filename = g_file_get_path(file);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
973
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
974 g_clear_object(&editor->avatar_pixbuf);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
975 editor->avatar_pixbuf = gdk_pixbuf_new_from_file(filename, &error);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
976 if(error != NULL) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
977 g_warning("Failed to create pixbuf from file %s: %s", filename,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
978 error->message);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
979 g_clear_error(&error);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
980 } else {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
981 gtk_image_set_from_pixbuf(GTK_IMAGE(editor->avatar),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
982 editor->avatar_pixbuf);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
983 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
984
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
985 g_free(filename);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
986 g_object_unref(file);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
987 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
988
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
989 g_clear_object(&editor->avatar_dialog);
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 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
993 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
994 gpointer data)
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
995 {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
996 PidginAccountEditor *editor = data;
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 editor->avatar_dialog = gtk_file_chooser_native_new(_("Buddy Icon"),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
999 GTK_WINDOW(editor),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1000 GTK_FILE_CHOOSER_ACTION_OPEN,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1001 _("_Open"),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1002 _("_Cancel"));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1003 gtk_native_dialog_set_transient_for(GTK_NATIVE_DIALOG(editor->avatar_dialog),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1004 GTK_WINDOW(editor));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1005
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1006 g_signal_connect(G_OBJECT(editor->avatar_dialog), "response",
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1007 G_CALLBACK(pidgin_account_editor_avatar_response_cb),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1008 editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1009
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1010 gtk_native_dialog_show(GTK_NATIVE_DIALOG(editor->avatar_dialog));
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
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1021 g_clear_object(&editor->avatar_pixbuf);
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 *****************************************************************************/
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1076 G_DEFINE_TYPE(PidginAccountEditor, pidgin_account_editor, GTK_TYPE_DIALOG)
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1077
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1078 static void
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1079 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
1080 GParamSpec *pspec)
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1081 {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1082 PidginAccountEditor *editor = PIDGIN_ACCOUNT_EDITOR(obj);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1083
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1084 switch(param_id) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1085 case PROP_ACCOUNT:
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1086 g_value_set_object(value,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1087 pidgin_account_editor_get_account(editor));
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1088 break;
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1089 default:
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1090 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
1091 break;
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1092 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1093 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1094
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1095 static void
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1096 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
1097 const GValue *value, GParamSpec *pspec)
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 PidginAccountEditor *editor = PIDGIN_ACCOUNT_EDITOR(obj);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1100
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1101 switch(param_id) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1102 case PROP_ACCOUNT:
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1103 pidgin_account_editor_set_account(editor,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1104 g_value_get_object(value));
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1105 break;
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1106 default:
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1107 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
1108 break;
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1109 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1110 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1111
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1112 static void
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1113 pidgin_account_editor_dispose(GObject *obj) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1114 PidginAccountEditor *editor = PIDGIN_ACCOUNT_EDITOR(obj);
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 g_clear_object(&editor->account);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1117 g_clear_object(&editor->avatar_dialog);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1118 g_clear_object(&editor->avatar_pixbuf);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1119
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1120 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
1121 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1122
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1123 static void
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1124 pidgin_account_editor_init(PidginAccountEditor *editor) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1125 GtkCssProvider *css_provider = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1126 GtkStyleContext *context = NULL;
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1127 GtkWidget *widget = GTK_WIDGET(editor);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1128
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1129 gtk_widget_init_template(widget);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1130
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1131 css_provider = gtk_css_provider_new();
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1132 gtk_css_provider_load_from_resource(css_provider,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1133 "/im/pidgin/Pidgin3/Accounts/entry.css");
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1134
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1135 context = gtk_widget_get_style_context(GTK_WIDGET(editor));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1136 gtk_style_context_add_provider(context,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1137 GTK_STYLE_PROVIDER(css_provider),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1138 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1139
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1140 g_clear_object(&css_provider);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1141
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1142 pidgin_account_editor_proxy_type_changed_cb(NULL, NULL, editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1143 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1144
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1145 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1146 pidgin_account_editor_constructed(GObject *obj) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1147 PidginAccountEditor *editor = PIDGIN_ACCOUNT_EDITOR(obj);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1148
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1149 G_OBJECT_CLASS(pidgin_account_editor_parent_class)->constructed(obj);
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 if(PURPLE_IS_ACCOUNT(editor->account)) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1152 pidgin_protocol_chooser_set_protocol(PIDGIN_PROTOCOL_CHOOSER(editor->protocol),
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1153 purple_account_get_protocol(editor->account));
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1154 }
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 pidgin_account_editor_update(editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1157 pidgin_account_editor_login_options_update_editable(editor);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1158 }
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1159
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1160 static void
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1161 pidgin_account_editor_finalize(GObject *obj) {
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1162 PidginAccountEditor *editor = PIDGIN_ACCOUNT_EDITOR(obj);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1163
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1164 g_clear_pointer(&editor->user_split_entries, g_list_free);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1165 g_clear_pointer(&editor->user_split_rows, g_list_free);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1166
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1167 g_clear_pointer(&editor->advanced_entries, g_list_free);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1168 g_clear_pointer(&editor->advanced_rows, g_list_free);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1169
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1170 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
1171 }
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1172
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1173 static void
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1174 pidgin_account_editor_class_init(PidginAccountEditorClass *klass) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1175 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1176 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
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 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
1179 obj_class->set_property = pidgin_account_editor_set_property;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1180 obj_class->constructed = pidgin_account_editor_constructed;
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1181 obj_class->dispose = pidgin_account_editor_dispose;
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1182 obj_class->finalize = pidgin_account_editor_finalize;
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1183
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1184 /**
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1185 * PidginAccountEditor::account:
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1186 *
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1187 * The account that this editor is modifying.
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1188 *
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1189 * Since: 3.0.0
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1190 */
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1191 properties[PROP_ACCOUNT] = g_param_spec_object(
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1192 "account", "account",
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1193 "The account to modify",
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1194 PURPLE_TYPE_ACCOUNT,
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1195 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1196
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1197 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
1198
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1199 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
1200 "/im/pidgin/Pidgin3/Accounts/editor.ui");
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1201
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1202 /* Dialog */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1203 gtk_widget_class_bind_template_callback(widget_class,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1204 pidgin_account_editor_response_cb);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1205
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1206 /* Login Options */
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1207 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1208 login_options);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1209 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1210 protocol);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1211 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1212 username);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1213
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1214 gtk_widget_class_bind_template_callback(widget_class,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1215 pidgin_account_editor_protocol_changed_cb);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1216 gtk_widget_class_bind_template_callback(widget_class,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1217 pidgin_account_editor_username_changed_cb);
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 /* User Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1220 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1221 alias);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1222 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1223 avatar_row);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1224 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1225 use_custom_avatar);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1226 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1227 avatar);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1228
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1229 gtk_widget_class_bind_template_callback(widget_class,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1230 pidgin_account_editor_avatar_set_clicked_cb);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1231 gtk_widget_class_bind_template_callback(widget_class,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1232 pidgin_account_editor_avatar_remove_clicked_cb);
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 /* Advanced Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1235 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1236 advanced_group);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1237 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1238 advanced_toggle);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1239
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1240 /* Proxy Options */
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1241 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1242 proxy_type);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1243 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
1244 proxy_options);
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1245 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1246 proxy_host);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1247 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1248 proxy_port);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1249 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1250 proxy_username);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1251 gtk_widget_class_bind_template_child(widget_class, PidginAccountEditor,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1252 proxy_password);
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1253
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1254 gtk_widget_class_bind_template_callback(widget_class,
41688
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1255 pidgin_account_editor_proxy_type_expression_cb);
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1256 gtk_widget_class_bind_template_callback(widget_class,
6ccdb4116ca2 Modernize the AccountEditor.
Gary Kramlich <grim@reaperworld.com>
parents: 41560
diff changeset
1257 pidgin_account_editor_proxy_type_changed_cb);
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
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1260 /******************************************************************************
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1261 * API
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1262 *****************************************************************************/
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1263 GtkWidget *
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1264 pidgin_account_editor_new(PurpleAccount *account) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1265 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
1266 }
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 PurpleAccount *
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1269 pidgin_account_editor_get_account(PidginAccountEditor *editor) {
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1270 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
1271
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1272 return editor->account;
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1273 }

mercurial