diff --git a/panels/network/net-proxy.c b/panels/network/net-proxy.c
index 6fd238825..9940b4e1e 100644
--- a/panels/network/net-proxy.c
+++ b/panels/network/net-proxy.c
@@ -141,6 +141,12 @@ panel_proxy_mode_combo_setup_widgets (NetProxy *proxy, guint value)
widget = GTK_WIDGET (gtk_builder_get_object (proxy->priv->builder,
"spinbutton_proxy_socks"));
gtk_widget_set_visible (widget, value == 1);
+ widget = GTK_WIDGET (gtk_builder_get_object (proxy->priv->builder,
+ "heading_proxy_ignore"));
+ gtk_widget_set_visible (widget, value == 1);
+ widget = GTK_WIDGET (gtk_builder_get_object (proxy->priv->builder,
+ "entry_proxy_ignore"));
+ gtk_widget_set_visible (widget, value == 1);
/* perhaps show the wpad warning */
check_wpad_warning (proxy);
@@ -250,6 +256,45 @@ net_proxy_class_init (NetProxyClass *klass)
g_type_class_add_private (klass, sizeof (NetProxyPrivate));
}
+static gboolean
+get_ignore_hosts (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
+{
+ int i;
+ gsize n = 0, avlen;
+ gchar buffer[10240];
+ gchar *p = buffer;
+ const gchar **av = g_variant_get_strv (variant, &avlen);
+
+ if (avlen > 0) {
+ n = g_strlcpy (p, av[0], sizeof buffer);
+ for (i = 1; i < avlen; i ++)
+ n += g_snprintf (p + n, sizeof (buffer) - n, ", %s", av[i]);
+ }
+ g_free (av);
+ g_value_set_string (value, buffer);
+
+ return TRUE;
+}
+
+static GVariant *
+set_ignore_hosts (const GValue *value,
+ const GVariantType *expected_type,
+ gpointer user_data)
+{
+ GVariant *result;
+ const gchar *sv;
+ gchar **av;
+
+ sv = g_value_get_string (value);
+ av = g_strsplit (sv, ",", 0);
+ result = g_variant_new_strv ((const gchar * const *)av, -1);
+ g_strfreev (av);
+
+ return result;
+}
+
static void
net_proxy_init (NetProxy *proxy)
{
@@ -369,6 +414,14 @@ net_proxy_init (NetProxy *proxy)
"label_proxy_status"));
gtk_label_set_label (GTK_LABEL (widget), "");
+ /* bind the proxy ignore hosts */
+ widget = GTK_WIDGET (gtk_builder_get_object (proxy->priv->builder,
+ "entry_proxy_ignore"));
+ g_settings_bind_with_mapping (proxy->priv->settings, "ignore-hosts",
+ widget, "text",
+ G_SETTINGS_BIND_DEFAULT, get_ignore_hosts, set_ignore_hosts,
+ NULL, NULL);
+
/* hide the switch until we get some more detail in the mockup */
widget = GTK_WIDGET (gtk_builder_get_object (proxy->priv->builder,
"device_proxy_off_switch"));
diff --git a/panels/network/network-proxy.ui b/panels/network/network-proxy.ui
index 310c68972..0a4c6498f 100644
--- a/panels/network/network-proxy.ui
+++ b/panels/network/network-proxy.ui
@@ -279,6 +279,25 @@
1
+
+
+
+ 0
+ 7
+ 1
+ 1
+
+
+
+
+
+ 1
+ 7
+ 2
+ 1
+
+