[gnome-initial-setup/shell/4765: 124/362] Add "Skip WiFi setup" checkbox



commit 79cee9bbd08b507ec0f1787e6382a21e12306771
Author: Philip Chimento <philip endlessm com>
Date:   Tue Aug 5 10:48:53 2014 -0700

    Add "Skip WiFi setup" checkbox
    
    In order to prevent users from accidentally moving past the page where
    they can configure their wireless network, we make the "Next" button
    insensitive. It becomes sensitive again when the user has either set up
    their network (i.e. NetworkManager's global state is CONNECTED_GLOBAL)
    or checked a checkbox that says "Skip WiFi setup".
    
    [endlessm/eos-shell#3273]

 .../pages/network/gis-network-page.c               |   28 ++++++++++++++++++-
 .../pages/network/gis-network-page.ui              |   17 +++++++++++-
 2 files changed, 42 insertions(+), 3 deletions(-)
---
diff --git a/gnome-initial-setup/pages/network/gis-network-page.c 
b/gnome-initial-setup/pages/network/gis-network-page.c
index fed3454..6a08f1a 100644
--- a/gnome-initial-setup/pages/network/gis-network-page.c
+++ b/gnome-initial-setup/pages/network/gis-network-page.c
@@ -66,6 +66,21 @@ G_DEFINE_TYPE_WITH_PRIVATE (GisNetworkPage, gis_network_page, GIS_TYPE_PAGE);
 #define OBJ(type,name) ((type)gtk_builder_get_object(GIS_PAGE(page)->builder,(name)))
 #define WID(name) OBJ(GtkWidget*,name)
 
+static void
+sync_page_complete (GisNetworkPage *page)
+{
+  GisNetworkPagePrivate *priv = gis_network_page_get_instance_private (page);
+  GtkWidget *widget;
+  gboolean skip_network, network_configured;
+
+  widget = WID ("skip-network-button");
+  skip_network = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+  network_configured = !!(nm_client_get_state (priv->nm_client) ==
+                          NM_STATE_CONNECTED_GLOBAL);
+
+  gis_page_set_complete (GIS_PAGE (page), skip_network || network_configured);
+}
+
 static GPtrArray *
 get_strongest_unique_aps (const GPtrArray *aps)
 {
@@ -561,7 +576,7 @@ gis_network_page_constructed (GObject *object)
   DBusGConnection *bus;
   GError *error;
   gboolean visible = TRUE;
-  GtkWidget *box;
+  GtkWidget *box, *skip_button;
 
   G_OBJECT_CLASS (gis_network_page_parent_class)->constructed (object);
 
@@ -573,6 +588,8 @@ gis_network_page_constructed (GObject *object)
 
   g_signal_connect (priv->nm_client, "notify::active-connections",
                     G_CALLBACK (active_connections_changed), page);
+  g_signal_connect_swapped (priv->nm_client, "notify::state",
+                            G_CALLBACK (sync_page_complete), page);
 
   devices = nm_client_get_devices (priv->nm_client);
   if (devices) {
@@ -619,9 +636,16 @@ gis_network_page_constructed (GObject *object)
   g_signal_connect (box, "child-activated",
                     G_CALLBACK (child_activated), page);
 
+  skip_button = WID ("skip-network-button");
+
+  g_object_bind_property (skip_button, "active", box, "sensitive",
+                          G_BINDING_SYNC_CREATE | G_BINDING_INVERT_BOOLEAN);
+  g_signal_connect_swapped (skip_button, "notify::active",
+                            G_CALLBACK (sync_page_complete), page);
+
   refresh_wireless_list (page);
 
-  gis_page_set_complete (GIS_PAGE (page), TRUE);
+  gis_page_set_complete (GIS_PAGE (page), FALSE);
 
  out:
   gtk_widget_set_visible (GTK_WIDGET (page), visible);
diff --git a/gnome-initial-setup/pages/network/gis-network-page.ui 
b/gnome-initial-setup/pages/network/gis-network-page.ui
index 83e3938..5180436 100644
--- a/gnome-initial-setup/pages/network/gis-network-page.ui
+++ b/gnome-initial-setup/pages/network/gis-network-page.ui
@@ -140,7 +140,22 @@
       </object>
       <packing>
         <property name="left_attach">0</property>
-        <property name="top_attach">3</property>
+        <property name="top_attach">4</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkCheckButton" id="skip-network-button">
+        <property name="visible">True</property>
+        <property name="label" translatable="yes">_Skip WiFi setup</property>
+        <property name="use_underline">True</property>
+        <property name="halign">start</property>
+        <property name="valign">center</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">5</property>
         <property name="width">1</property>
         <property name="height">1</property>
       </packing>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]