[gnome-control-center] network: Use proxy settings in GSettings
- From: Rodrigo Moya <rodrigo src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] network: Use proxy settings in GSettings
- Date: Tue, 2 Nov 2010 11:46:05 +0000 (UTC)
commit 2a5eca505ddf0b7023d18f0b96efb811c1532c3d
Author: Rodrigo Moya <rodrigo gnome-db org>
Date: Wed Oct 27 15:19:31 2010 +0200
network: Use proxy settings in GSettings
panels/network/cc-network-panel.c | 12 +--
panels/network/cc-network-panel.h | 4 +-
panels/network/gnome-network-properties.c | 239 +++++++++++------------------
3 files changed, 92 insertions(+), 163 deletions(-)
---
diff --git a/panels/network/cc-network-panel.c b/panels/network/cc-network-panel.c
index 0393c4f..2be7600 100644
--- a/panels/network/cc-network-panel.c
+++ b/panels/network/cc-network-panel.c
@@ -23,8 +23,6 @@
#include "cc-network-panel.h"
-#include <gconf/gconf-client.h>
-
G_DEFINE_DYNAMIC_TYPE (CcNetworkPanel, cc_network_panel, CC_TYPE_PANEL)
#define NETWORK_PANEL_PRIVATE(o) \
@@ -33,7 +31,6 @@ G_DEFINE_DYNAMIC_TYPE (CcNetworkPanel, cc_network_panel, CC_TYPE_PANEL)
struct _CcNetworkPanelPrivate
{
GtkBuilder *builder;
- GConfClient *client;
};
@@ -74,12 +71,6 @@ cc_network_panel_dispose (GObject *object)
priv->builder = NULL;
}
- if (!priv->client)
- {
- g_object_unref (priv->client);
- priv->client = NULL;
- }
-
G_OBJECT_CLASS (cc_network_panel_parent_class)->dispose (object);
}
@@ -117,9 +108,8 @@ cc_network_panel_init (CcNetworkPanel *self)
priv->builder = gtk_builder_new ();
- priv->client = gconf_client_get_default ();
- gnome_network_properties_init (priv->builder, priv->client);
+ gnome_network_properties_init (priv->builder);
widget = (GtkWidget *) gtk_builder_get_object (priv->builder,
"network-panel");
diff --git a/panels/network/cc-network-panel.h b/panels/network/cc-network-panel.h
index eb33850..31013f3 100644
--- a/panels/network/cc-network-panel.h
+++ b/panels/network/cc-network-panel.h
@@ -24,7 +24,6 @@
#define _CC_NETWORK_PANEL_H
#include <libgnome-control-center/cc-panel.h>
-#include <gconf/gconf-client.h>
G_BEGIN_DECLS
@@ -71,8 +70,7 @@ GType cc_network_panel_get_type (void) G_GNUC_CONST;
void cc_network_panel_register (GIOModule *module);
-int gnome_network_properties_init (GtkBuilder *builder,
- GConfClient *client);
+int gnome_network_properties_init (GtkBuilder *builder);
G_END_DECLS
diff --git a/panels/network/gnome-network-properties.c b/panels/network/gnome-network-properties.c
index ec1acb7..387522d 100644
--- a/panels/network/gnome-network-properties.c
+++ b/panels/network/gnome-network-properties.c
@@ -28,8 +28,8 @@
#include <stdlib.h>
#include <string.h>
-#include <gconf/gconf-client.h>
#include <glib/gi18n.h>
+#include <gio/gio.h>
#include "libgnome-control-center/gconf-property-editor.h"
@@ -52,15 +52,11 @@ enum {
COL_STYLE
};
-#define USE_PROXY_KEY "/system/http_proxy/use_http_proxy"
-#define USE_SAME_PROXY_KEY "/system/http_proxy/use_same_proxy"
#define HTTP_PROXY_HOST_KEY "/system/http_proxy/host"
#define HTTP_PROXY_PORT_KEY "/system/http_proxy/port"
#define HTTP_USE_AUTH_KEY "/system/http_proxy/use_authentication"
#define HTTP_AUTH_USER_KEY "/system/http_proxy/authentication_user"
#define HTTP_AUTH_PASSWD_KEY "/system/http_proxy/authentication_password"
-#define IGNORE_HOSTS_KEY "/system/http_proxy/ignore_hosts"
-#define PROXY_MODE_KEY "/system/proxy/mode"
#define SECURE_PROXY_HOST_KEY "/system/proxy/secure_host"
#define OLD_SECURE_PROXY_HOST_KEY "/system/proxy/old_secure_host"
#define SECURE_PROXY_PORT_KEY "/system/proxy/secure_port"
@@ -73,7 +69,6 @@ enum {
#define OLD_SOCKS_PROXY_HOST_KEY "/system/proxy/old_socks_host"
#define SOCKS_PROXY_PORT_KEY "/system/proxy/socks_port"
#define OLD_SOCKS_PROXY_PORT_KEY "/system/proxy/old_socks_port"
-#define PROXY_AUTOCONFIG_URL_KEY "/system/proxy/autoconfig_url"
#define LOCATION_DIR "/apps/control-center/network"
#define CURRENT_LOCATION "/apps/control-center/network/current_location"
@@ -81,8 +76,13 @@ enum {
#define GNOMECC_GNP_UI_FILE (GNOMECC_UI_DIR "/gnome-network-properties.ui")
static GtkWidget *details_dialog = NULL;
-static GSList *ignore_hosts = NULL;
+static GPtrArray *ignore_hosts = NULL;
static GtkTreeModel *model = NULL;
+static GSettings *proxy_settings = NULL;
+static GSettings *http_proxy_settings = NULL;
+static GSettings *https_proxy_settings = NULL;
+static GSettings *ftp_proxy_settings = NULL;
+static GSettings *socks_proxy_settings = NULL;
static GtkTreeModel *
create_listmodel(void)
@@ -95,22 +95,19 @@ create_listmodel(void)
}
static GtkTreeModel *
-populate_listmodel(GtkListStore *store, GSList *list)
+populate_listmodel (GtkListStore *store, GPtrArray *list)
{
GtkTreeIter iter;
- GSList *pointer;
+ gint i;
- gtk_list_store_clear(store);
+ gtk_list_store_clear (store);
- pointer = list;
- while(pointer)
- {
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter, 0, (char *) pointer->data, -1);
- pointer = g_slist_next(pointer);
+ for (i = 0; i < list->len; i++) {
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter, 0, (char *) g_ptr_array_index (list, i), -1);
}
- return GTK_TREE_MODEL(store);
+ return GTK_TREE_MODEL (store);
}
static GtkWidget *
@@ -140,19 +137,17 @@ cb_add_url (GtkButton *button, gpointer data)
{
GtkBuilder *builder = GTK_BUILDER (data);
gchar *new_url = NULL;
- GConfClient *client;
new_url = g_strdup (gtk_entry_get_text (GTK_ENTRY (gtk_builder_get_object (builder, "entry_url"))));
if (strlen (new_url) == 0)
return;
- ignore_hosts = g_slist_append(ignore_hosts, new_url);
- populate_listmodel(GTK_LIST_STORE(model), ignore_hosts);
- gtk_entry_set_text(GTK_ENTRY (gtk_builder_get_object (builder,
- "entry_url")), "");
- client = gconf_client_get_default ();
- gconf_client_set_list (client, IGNORE_HOSTS_KEY, GCONF_VALUE_STRING, ignore_hosts, NULL);
- g_object_unref (client);
+ g_ptr_array_add (ignore_hosts, new_url);
+ populate_listmodel (GTK_LIST_STORE (model), ignore_hosts);
+ gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (builder,
+ "entry_url")), "");
+
+ g_settings_set_strv (proxy_settings, "ignore-hosts", (const gchar **) pdata->pdata);
}
static void
@@ -167,28 +162,22 @@ cb_remove_url (GtkButton *button, gpointer data)
if (gtk_tree_selection_get_selected(selection, &model, &iter))
{
gchar *url;
- GSList *pointer;
+ guint i;
gtk_tree_model_get (model, &iter, 0, &url, -1);
pointer = ignore_hosts;
- while(pointer)
- {
- if(strcmp(url, (char *) pointer->data) == 0)
- {
- g_free (pointer->data);
- ignore_hosts = g_slist_delete_link(ignore_hosts, pointer);
+ for (i = 0; i < ignore_hosts->len; i++) {
+ if (g_str_equal (url, (char *) g_ptr_array_index (ignore_hosts, i))) {
+ g_ptr_array_remove_index (ignore_hosts, i);
break;
}
- pointer = g_slist_next(pointer);
}
- g_free(url);
- populate_listmodel(GTK_LIST_STORE(model), ignore_hosts);
+ g_free (url);
+ populate_listmodel (GTK_LIST_STORE(model), ignore_hosts);
- client = gconf_client_get_default ();
- gconf_client_set_list(client, IGNORE_HOSTS_KEY, GCONF_VALUE_STRING, ignore_hosts, NULL);
- g_object_unref (client);
+ g_settings_set_strv (proxy_settings, "ignore-hosts", (const gchar **) ignore_hosts->pdata);
}
}
@@ -200,10 +189,8 @@ cb_dialog_response (GtkDialog *dialog, gint response_id)
"goscustdesk-50");
else */ if (response_id == GTK_RESPONSE_CLOSE || response_id == GTK_RESPONSE_DELETE_EVENT)
{
- if (ignore_hosts) {
- g_slist_foreach (ignore_hosts, (GFunc) g_free, NULL);
- g_slist_free (ignore_hosts);
- }
+ if (ignore_hosts != NULL)
+ g_ptr_array_free (ignore_hosts, TRUE);
gtk_main_quit ();
}
@@ -1021,72 +1008,30 @@ static void
cb_use_same_proxy_checkbutton_clicked (GtkWidget *checkbutton,
GtkBuilder *builder)
{
- GConfClient *client;
gboolean same_proxy;
gchar *http_proxy;
gint http_port;
gchar *host;
- client = gconf_client_get_default ();
- same_proxy = gconf_client_get_bool (client, USE_SAME_PROXY_KEY, NULL);
-
- http_proxy = gconf_client_get_string (client, HTTP_PROXY_HOST_KEY, NULL);
- http_port = gconf_client_get_int (client, HTTP_PROXY_PORT_KEY, NULL);
+ same_proxy = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton));
- if (same_proxy)
- {
- /* Save the old values */
- host = gconf_client_get_string (client, SECURE_PROXY_HOST_KEY, NULL);
- gconf_client_set_string (client, OLD_SECURE_PROXY_HOST_KEY, host, NULL);
- gconf_client_set_int (client, OLD_SECURE_PROXY_PORT_KEY,
- gconf_client_get_int (client, SECURE_PROXY_PORT_KEY, NULL), NULL);
- g_free (host);
-
- host = gconf_client_get_string (client, FTP_PROXY_HOST_KEY, NULL);
- gconf_client_set_string (client, OLD_FTP_PROXY_HOST_KEY, host, NULL);
- gconf_client_set_int (client, OLD_FTP_PROXY_PORT_KEY,
- gconf_client_get_int (client, FTP_PROXY_PORT_KEY, NULL), NULL);
- g_free (host);
-
- host = gconf_client_get_string (client, SOCKS_PROXY_HOST_KEY, NULL);
- gconf_client_set_string (client, OLD_SOCKS_PROXY_HOST_KEY, host, NULL);
- gconf_client_set_int (client, OLD_SOCKS_PROXY_PORT_KEY,
- gconf_client_get_int (client, SOCKS_PROXY_PORT_KEY, NULL), NULL);
- g_free (host);
+ http_proxy = g_settings_get_string (http_proxy_settings, "host");
+ http_port = g_settings__get_int (http_proxy_settings, "port");
+ if (same_proxy) {
/* Set the new values */
- gconf_client_set_string (client, SECURE_PROXY_HOST_KEY, http_proxy, NULL);
- gconf_client_set_int (client, SECURE_PROXY_PORT_KEY, http_port, NULL);
+ gtk_entry_set_text (_gtk_builder_get_object (builder, "secure_host_entry"), http_proxy);
+ gtk_range_set_value (_gtk_builder_get_object (builder, "secure_host_spinbutton"), (gdouble) http_port);
- gconf_client_set_string (client, FTP_PROXY_HOST_KEY, http_proxy, NULL);
- gconf_client_set_int (client, FTP_PROXY_PORT_KEY, http_port, NULL);
+ gtk_entry_set_text (_gtk_builder_get_object (builder, "ftp_host_entry"), http_proxy);
+ gtk_range_set_value (_gtk_builder_get_object (builder, "ftp_host_spinbutton"), (gdouble) http_port);
- gconf_client_set_string (client, SOCKS_PROXY_HOST_KEY, http_proxy, NULL);
- gconf_client_set_int (client, SOCKS_PROXY_PORT_KEY, http_port, NULL);
+ gtk_entry_set_text (_gtk_builder_get_object (builder, "socks_host_entry"), http_proxy);
+ gtk_range_set_value (_gtk_builder_get_object (builder, "socks_host_spinbutton"), (gdouble) http_port);
/* Synchronize entries */
synchronize_entries (builder);
- }
- else
- {
- host = gconf_client_get_string (client, OLD_SECURE_PROXY_HOST_KEY, NULL);
- gconf_client_set_string (client, SECURE_PROXY_HOST_KEY, host, NULL);
- gconf_client_set_int (client, SECURE_PROXY_PORT_KEY,
- gconf_client_get_int (client, OLD_SECURE_PROXY_PORT_KEY, NULL), NULL);
- g_free (host);
-
- host = gconf_client_get_string (client, OLD_FTP_PROXY_HOST_KEY, NULL);
- gconf_client_set_string (client, FTP_PROXY_HOST_KEY, host, NULL);
- gconf_client_set_int (client, FTP_PROXY_PORT_KEY,
- gconf_client_get_int (client, OLD_FTP_PROXY_PORT_KEY, NULL), NULL);
- g_free (host);
-
- host = gconf_client_get_string (client, OLD_SOCKS_PROXY_HOST_KEY, NULL);
- gconf_client_set_string (client, SOCKS_PROXY_HOST_KEY, host, NULL);
- gconf_client_set_int (client, SOCKS_PROXY_PORT_KEY,
- gconf_client_get_int (client, OLD_SOCKS_PROXY_PORT_KEY, NULL), NULL);
- g_free (host);
-
+ } else {
/* Hosts and ports should not be synchronized any more */
unsynchronize_entries (builder);
}
@@ -1110,8 +1055,6 @@ cb_use_same_proxy_checkbutton_clicked (GtkWidget *checkbutton,
gtk_widget_set_sensitive (_gtk_builder_get_widget (builder,
"socks_port_spinbutton"),
!same_proxy);
-
- g_object_unref (client);
}
static gchar *
@@ -1174,7 +1117,6 @@ proxy_mode_radiobutton_clicked_cb (GtkWidget *widget,
{
GSList *mode_group;
int mode;
- GConfClient *client;
if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)))
return;
@@ -1191,10 +1133,10 @@ proxy_mode_radiobutton_clicked_cb (GtkWidget *widget,
mode == PROXYMODE_MANUAL);
gtk_widget_set_sensitive (_gtk_builder_get_widget (builder, "auto_box"),
mode == PROXYMODE_AUTO);
- client = gconf_client_get_default ();
- gconf_client_set_bool (client, USE_PROXY_KEY,
- mode == PROXYMODE_AUTO || mode == PROXYMODE_MANUAL, NULL);
- g_object_unref (client);
+
+ g_settings_set_string (proxy_settings, "mode", proxytype_values[mode].value_nick);
+ g_settings_set_boolean (http_proxy_settings, "enabled",
+ mode == PROXYMODE_AUTO || mode == PROXYMODE_MANUAL, NULL);
}
static void
@@ -1209,16 +1151,25 @@ connect_sensitivity_signals (GtkBuilder *builder, GSList *mode_group)
}
static void
-cb_ignore_hosts_gconf_changed (GConfClient *client, guint cnxn_id,
- GConfEntry *entry, gpointer user_data)
+proxy_settings_changed_cb (GSettings *settings,
+ const gchar *key,
+ gpointer user_data)
{
- g_slist_foreach (ignore_hosts, (GFunc) g_free, NULL);
- g_slist_free (ignore_hosts);
+ if (g_str_equal (key, "ignore-hosts")) {
+ gchar **hosts;
+ guint i = 0;
- ignore_hosts = gconf_client_get_list (client, IGNORE_HOSTS_KEY,
- GCONF_VALUE_STRING, NULL);
+ g_ptr_array_free (ignore_hosts, TRUE);
- populate_listmodel (GTK_LIST_STORE (model), ignore_hosts);
+ hosts = g_settings_get_strv (proxy_settings, "ignore-hosts");
+ while (hosts[i] != NULL) {
+ g_ptr_array_add (ignore_hosts, hosts[i]);
+ i++;
+ }
+
+ populate_listmodel (GTK_LIST_STORE (model), ignore_hosts);
+ g_strfreev (hosts);
+ }
}
static void
@@ -1249,8 +1200,6 @@ setup_dialog (GtkBuilder *builder)
gconf_client_add_dir (client, LOCATION_DIR, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
gconf_client_notify_add (client, CURRENT_LOCATION, (GConfClientNotifyFunc) cb_current_location, builder, NULL, NULL);
- gconf_client_notify_add (client, IGNORE_HOSTS_KEY, cb_ignore_hosts_gconf_changed, NULL, NULL, NULL);
-
g_signal_connect (location_box, "changed", G_CALLBACK (cb_location_changed), builder);
g_signal_connect (gtk_builder_get_object (builder, "delete_button"), "clicked", G_CALLBACK (cb_delete_button_clicked), builder);
@@ -1265,48 +1214,39 @@ setup_dialog (GtkBuilder *builder)
mode_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (gtk_builder_get_object (builder, "none_radiobutton")));
connect_sensitivity_signals (builder, mode_group);
- peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_select_radio_with_enum (NULL,
- PROXY_MODE_KEY, mode_group, mode_type,
- TRUE, NULL));
-
/* Use same proxy for all protocols */
same_proxy_toggle = _gtk_builder_get_widget (builder, "same_proxy_checkbutton");
- peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_boolean (NULL,
- USE_SAME_PROXY_KEY, same_proxy_toggle, NULL));
-
g_signal_connect (same_proxy_toggle,
"toggled",
G_CALLBACK (cb_use_same_proxy_checkbutton_clicked),
builder);
/* Http */
- port_value = gconf_client_get_int (client, HTTP_PROXY_PORT_KEY, NULL);
+ port_value = g_settings_get_int (http_proxy_settings, "port");
gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "http_port_spinbutton")), (gdouble) port_value);
- peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_string (
- NULL, HTTP_PROXY_HOST_KEY, _gtk_builder_get_widget (builder, "http_host_entry"),
- "conv-from-widget-cb", extract_proxy_host,
- NULL));
- peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_integer (
- NULL, HTTP_PROXY_PORT_KEY,
- _gtk_builder_get_widget (builder, "http_port_spinbutton"),
- NULL));
+
+ g_settings_bind (http_proxy_settings, "port",
+ gtk_range_get_adjustment (GTK_RANGE (gtk_builder_get_object (builder, "http_port_spinbutton"))), "value",
+ G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (http_proxy_settings, "host",
+ _gtk_builder_get_widget (builder, "http_host_entry"), "text",
+ G_SETTINGS_BIND_DEFAULT);
+
g_signal_connect (gtk_builder_get_object (builder, "details_button"),
"clicked",
G_CALLBACK (cb_http_details_button_clicked),
_gtk_builder_get_widget (builder, "network-panel"));
/* Secure */
- port_value = gconf_client_get_int (client, SECURE_PROXY_PORT_KEY, NULL);
+ port_value = g_settings_get_int (https_proxy_settings, "port");
gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "secure_port_spinbutton")), (gdouble) port_value);
- peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_string (
- NULL, SECURE_PROXY_HOST_KEY,
- _gtk_builder_get_widget (builder, "secure_host_entry"),
- "conv-from-widget-cb", extract_proxy_host,
- NULL));
- peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_integer (
- NULL, SECURE_PROXY_PORT_KEY,
- _gtk_builder_get_widget (builder, "secure_port_spinbutton"),
- NULL));
+
+ g_settings_bind (https_proxy_settings, "host",
+ _gtk_builder_get_widget (builder, "secure_host_entry"), "text",
+ G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (https_proxy_settings, "port",
+ gtk_range_get_adjustment (GTK_RANGE (_gtk_builder_get_widget (builder, "secure_port_spinbutton"))), "value",
+ G_SETTINGS_BIND_DEFAULT);
/* Ftp */
port_value = gconf_client_get_int (client, FTP_PROXY_PORT_KEY, NULL);
@@ -1349,17 +1289,15 @@ setup_dialog (GtkBuilder *builder)
}
/* Autoconfiguration */
- peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_string (
- NULL, PROXY_AUTOCONFIG_URL_KEY,
- _gtk_builder_get_widget (builder, "autoconfig_entry"),
- NULL));
+ g_settings_bind (proxy_settings, "autoconfig-url",
+ _gtk_builder_get_widget (builder, "autoconfig_entry"), "text",
+ G_SETTINGS_BIND_DEFAULT);
g_signal_connect (gtk_builder_get_object (builder, "network_dialog"),
"response", G_CALLBACK (cb_dialog_response), NULL);
- ignore_hosts = gconf_client_get_list(client, IGNORE_HOSTS_KEY, GCONF_VALUE_STRING, NULL);
- g_object_unref (client);
+ proxy_settings_changed_cb (proxy_settings, "ignore-hosts", builder);
model = create_listmodel();
populate_listmodel(GTK_LIST_STORE(model), ignore_hosts);
@@ -1374,8 +1312,7 @@ setup_dialog (GtkBuilder *builder)
}
int
-gnome_network_properties_init (GtkBuilder *builder,
- GConfClient *client)
+gnome_network_properties_init (GtkBuilder *builder)
{
GError *error = NULL;
gchar *builder_widgets[] = {"network_dialog", "adjustment1",
@@ -1386,10 +1323,14 @@ gnome_network_properties_init (GtkBuilder *builder,
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
- gconf_client_add_dir (client, "/system/http_proxy",
- GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
- gconf_client_add_dir (client, "/system/proxy",
- GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
+ proxy_settings = g_settings_new ("org.gnome.system.proxy");
+ g_signal_connect (proxy_settings, "changed",
+ G_CALLBACK (proxy_settings_changed_cb), builder);
+
+ http_proxy_settings = g_settings_new ("org.gnome.system.proxy.http");
+ https_proxy_settings = g_settings_new ("org.gnome.system.proxy.https");
+ ftp_proxy_settings = g_settings_new ("org.gnome.system.proxy.ftp");
+ socks_proxy_settings = g_settings_new ("org.gnome.system.proxy.socks");
if (gtk_builder_add_objects_from_file (builder, GNOMECC_GNP_UI_FILE,
builder_widgets, &error) == 0) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]