pidgin/prefs/pidginnetworkprefs.c

Tue, 15 Oct 2024 00:47:42 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Tue, 15 Oct 2024 00:47:42 -0500
changeset 43011
ce3144e2bc33
parent 43010
9a3485b096c8
child 43013
26d30c0db9a5
permissions
-rw-r--r--

Port prefs to AdwSwitchRow

Now that we depend on Adwaita 1.4, we can flip the switch on using these (pun intended).

This also simplifies some extra tracking we needed to do for activations and focus, since the Adwaita widgets do that for us.

Testing Done:
Opened prefs, confirmed all the switches were there, and toggled them all without any warnings.

Also used the mnemonics to toggle the switches from the keyboard.

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

41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
1 /*
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
4 *
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
7 * source distribution.
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
8 *
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
12 * (at your option) any later version.
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
13 *
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
17 * GNU General Public License for more details.
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
18 *
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
21 */
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
22
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
23 #include <glib/gi18n-lib.h>
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
24
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
25 #include <purple.h>
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
26
41549
ee5853951322 Convert network prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41376
diff changeset
27 #include <adwaita.h>
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
28
41376
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
29 #include "pidginnetworkprefs.h"
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
30 #include "pidginprefsinternal.h"
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
31
41376
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
32 struct _PidginNetworkPrefs {
41549
ee5853951322 Convert network prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41376
diff changeset
33 AdwPreferencesPage parent;
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
34
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
35 GtkWidget *stun_server;
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
36 GtkWidget *auto_ip;
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
37 GtkWidget *public_ip;
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
38 GtkWidget *map_ports;
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
39 GtkWidget *ports_range_use;
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
40 GtkWidget *ports_range_start;
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
41 GtkWidget *ports_range_end;
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
42 };
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
43
42575
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42147
diff changeset
44 G_DEFINE_FINAL_TYPE(PidginNetworkPrefs, pidgin_network_prefs,
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42147
diff changeset
45 ADW_TYPE_PREFERENCES_PAGE)
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
46
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
47 /******************************************************************************
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
48 * Helpers
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
49 *****************************************************************************/
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
50 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41855
diff changeset
51 network_ip_changed(GtkEditable *editable, G_GNUC_UNUSED gpointer data)
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
52 {
41618
7e9ad20d503a Use success/error CSS for Public IP entry
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41581
diff changeset
53 const gchar *text = gtk_editable_get_text(editable);
7e9ad20d503a Use success/error CSS for Public IP entry
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41581
diff changeset
54 GtkWidget *widget = GTK_WIDGET(editable);
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
55
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
56 if (text && *text) {
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
57 if (g_hostname_is_ip_address(text)) {
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
58 purple_network_set_public_ip(text);
41618
7e9ad20d503a Use success/error CSS for Public IP entry
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41581
diff changeset
59 gtk_widget_remove_css_class(widget, "error");
7e9ad20d503a Use success/error CSS for Public IP entry
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41581
diff changeset
60 gtk_widget_add_css_class(widget, "success");
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
61 } else {
41618
7e9ad20d503a Use success/error CSS for Public IP entry
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41581
diff changeset
62 gtk_widget_remove_css_class(widget, "success");
7e9ad20d503a Use success/error CSS for Public IP entry
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41581
diff changeset
63 gtk_widget_add_css_class(widget, "error");
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
64 }
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
65
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
66 } else {
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
67 purple_network_set_public_ip("");
41618
7e9ad20d503a Use success/error CSS for Public IP entry
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41581
diff changeset
68 gtk_widget_remove_css_class(widget, "success");
7e9ad20d503a Use success/error CSS for Public IP entry
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41581
diff changeset
69 gtk_widget_remove_css_class(widget, "error");
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
70 }
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
71 }
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
72
41549
ee5853951322 Convert network prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41376
diff changeset
73 static void
41623
78cf94d0f8c8 Move network preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41618
diff changeset
74 auto_ip_button_clicked_cb(G_GNUC_UNUSED GObject *obj,
78cf94d0f8c8 Move network preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41618
diff changeset
75 G_GNUC_UNUSED GParamSpec *pspec, gpointer data)
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
76 {
41623
78cf94d0f8c8 Move network preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41618
diff changeset
77 PidginNetworkPrefs *prefs = PIDGIN_NETWORK_PREFS(data);
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
78 GSettings *settings = NULL;
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
79 const char *ip;
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
80 char *auto_ip_text;
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
81 GList *list = NULL;
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
82
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
83 /* Make a lookup for the auto-detected IP ourselves. */
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
84 settings = g_settings_new_with_backend("im.pidgin.Purple.Network.IP",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
85 purple_core_get_settings_backend());
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
86 if(g_settings_get_boolean(settings, "autodetect")) {
42118
97bc84c5233e Remove our stun code
Gary Kramlich <grim@reaperworld.com>
parents: 42032
diff changeset
87 ip = "0.0.0.0";
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
88 } else {
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
89 ip = _("Disabled");
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
90 }
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
91
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
92 auto_ip_text = g_strdup_printf(_("Use _automatically detected IP address: %s"), ip);
43011
ce3144e2bc33 Port prefs to AdwSwitchRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 43010
diff changeset
93 adw_preferences_row_set_title(ADW_PREFERENCES_ROW(prefs->auto_ip),
41623
78cf94d0f8c8 Move network preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41618
diff changeset
94 auto_ip_text);
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
95 g_free(auto_ip_text);
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
96 g_list_free_full(list, g_free);
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
97 g_object_unref(settings);
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
98 }
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
99
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
100 /******************************************************************************
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
101 * GObject Implementation
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
102 *****************************************************************************/
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
103 static void
41376
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
104 pidgin_network_prefs_class_init(PidginNetworkPrefsClass *klass)
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
105 {
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
106 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
107
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
108 gtk_widget_class_set_template_from_resource(
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
109 widget_class,
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
110 "/im/pidgin/Pidgin3/Prefs/network.ui"
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
111 );
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
112
41376
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
113 gtk_widget_class_bind_template_child(widget_class, PidginNetworkPrefs,
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
114 stun_server);
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
115 gtk_widget_class_bind_template_child(widget_class, PidginNetworkPrefs,
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
116 auto_ip);
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
117 gtk_widget_class_bind_template_child(widget_class, PidginNetworkPrefs,
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
118 public_ip);
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
119 gtk_widget_class_bind_template_child(widget_class, PidginNetworkPrefs,
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
120 map_ports);
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
121 gtk_widget_class_bind_template_child(widget_class, PidginNetworkPrefs,
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
122 ports_range_use);
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
123 gtk_widget_class_bind_template_child(widget_class, PidginNetworkPrefs,
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
124 ports_range_start);
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
125 gtk_widget_class_bind_template_child(widget_class, PidginNetworkPrefs,
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
126 ports_range_end);
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
127 gtk_widget_class_bind_template_callback(widget_class,
41376
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
128 auto_ip_button_clicked_cb);
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
129 gtk_widget_class_bind_template_callback(widget_class, network_ip_changed);
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
130 }
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
131
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
132 static void
41376
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
133 pidgin_network_prefs_init(PidginNetworkPrefs *prefs)
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
134 {
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
135 GSettings *settings = NULL;
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
136 char *ip = NULL;
42147
d202e153dd70 fix crash when opening preferences
Markus Fischer <ivanhoe@fiscari.de>
parents: 42118
diff changeset
137
41376
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
138 gtk_widget_init_template(GTK_WIDGET(prefs));
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
139
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
140 settings = g_settings_new_with_backend("im.pidgin.Purple.Network.Stun",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
141 purple_core_get_settings_backend());
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
142 g_settings_bind(settings, "server", prefs->stun_server, "text",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
143 G_SETTINGS_BIND_DEFAULT);
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
144 g_clear_object(&settings);
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
145
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
146 settings = g_settings_new_with_backend("im.pidgin.Purple.Network.IP",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
147 purple_core_get_settings_backend());
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
148 g_settings_bind(settings, "autodetect", prefs->auto_ip, "active",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
149 G_SETTINGS_BIND_DEFAULT);
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
150 g_clear_object(&settings);
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
151
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
152 ip = purple_network_get_public_ip();
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
153 gtk_editable_set_text(GTK_EDITABLE(prefs->public_ip), ip);
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
154 g_free(ip);
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
155
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
156 settings = g_settings_new_with_backend("im.pidgin.Purple.Network.Ports",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
157 purple_core_get_settings_backend());
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
158 g_settings_bind(settings, "use-discovery", prefs->map_ports, "active",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
159 G_SETTINGS_BIND_DEFAULT);
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
160 g_clear_object(&settings);
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
161
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
162 settings = g_settings_new_with_backend("im.pidgin.Purple.Network.Ports.Manual",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
163 purple_core_get_settings_backend());
41623
78cf94d0f8c8 Move network preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41618
diff changeset
164
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
165 g_settings_bind(settings, "enabled",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
166 prefs->ports_range_use, "enable-expansion",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
167 G_SETTINGS_BIND_DEFAULT);
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
168
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
169 g_settings_bind(settings, "start", prefs->ports_range_start, "value",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
170 G_SETTINGS_BIND_DEFAULT);
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
171 g_settings_bind(settings, "end", prefs->ports_range_end, "value",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
172 G_SETTINGS_BIND_DEFAULT);
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
173
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
174 g_clear_object(&settings);
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
175 }
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
176
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
177 /******************************************************************************
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
178 * API
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
179 *****************************************************************************/
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
180 GtkWidget *
41376
5bd22f39246a Rename PidginNetworkPage to PidginNetworkPrefs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41369
diff changeset
181 pidgin_network_prefs_new(void) {
42592
6b65c0e4ba15 Remove unnecessary casts for GObject methods
Gary Kramlich <grim@reaperworld.com>
parents: 42575
diff changeset
182 return g_object_new(PIDGIN_TYPE_NETWORK_PREFS, NULL);
41369
70144e5e0a89 Split network prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
183 }

mercurial