[gnome-initial-setup/mcatanzaro/software-page-updates: 31/31] software: update to match new design




commit 84e6f6665d8d58c5f9a3417db9ba07cc0e14fe1f
Author: Michael Catanzaro <mcatanzaro redhat com>
Date:   Tue Oct 19 16:38:54 2021 -0500

    software: update to match new design
    
    This replaces the toggle switch with a button that changes state.
    
    Fixes #128
    
    Part-of: <https://gitlab.gnome.org/GNOME/gnome-initial-setup/-/merge_requests/126>

 .../pages/software/gis-software-page.c             | 42 ++++++++++++++++------
 .../pages/software/gis-software-page.ui            | 26 +++-----------
 2 files changed, 37 insertions(+), 31 deletions(-)
---
diff --git a/gnome-initial-setup/pages/software/gis-software-page.c 
b/gnome-initial-setup/pages/software/gis-software-page.c
index d911f649..a8045f9c 100644
--- a/gnome-initial-setup/pages/software/gis-software-page.c
+++ b/gnome-initial-setup/pages/software/gis-software-page.c
@@ -37,8 +37,9 @@
 
 struct _GisSoftwarePagePrivate
 {
-  GtkWidget *proprietary_switch;
   GtkWidget *header;
+  GtkWidget *enable_disable_button;
+  gboolean enabled;
 };
 
 typedef struct _GisSoftwarePagePrivate GisSoftwarePagePrivate;
@@ -90,7 +91,7 @@ gis_software_page_apply (GisPage      *gis_page,
     {
       const char *arg1;
 
-      if (gtk_switch_get_state (GTK_SWITCH (priv->proprietary_switch)))
+      if (priv->enabled)
         arg1 = "enable";
       else
         arg1 = "disable";
@@ -113,14 +114,34 @@ gis_software_page_locale_changed (GisPage *gis_page)
   g_object_set (priv->header, "subtitle", _("Third-party repositories provide access to additional software 
from selected external sources, including popular apps and drivers that are important for some devices. Some 
proprietary software is included."), NULL);
 }
 
-static gboolean
-state_set (GtkSwitch *sw,
-           gboolean   state,
-           gpointer   data)
+static void
+enabled_state_changed (GisSoftwarePage *page)
 {
-  gtk_switch_set_state (sw, state);
+  GisSoftwarePagePrivate *priv = gis_software_page_get_instance_private (page);
+  GtkStyleContext *style;
+
+  style = gtk_widget_get_style_context (priv->enable_disable_button);
 
-  return TRUE;
+  if (priv->enabled)
+    {
+      gtk_button_set_label (GTK_BUTTON (priv->enable_disable_button), _("_Disable Third-Party 
Repositories"));
+      gtk_style_context_remove_class (style, "suggested-action");
+    }
+  else
+    {
+      gtk_button_set_label (GTK_BUTTON (priv->enable_disable_button), _("_Enable Third-Party Repositories"));
+      gtk_style_context_add_class (style, "suggested-action");
+    }
+}
+
+static gboolean
+enable_disable_button_clicked_cb (GtkButton       *button,
+                                  GisSoftwarePage *page)
+{
+  GisSoftwarePagePrivate *priv = gis_software_page_get_instance_private (page);
+  priv->enabled = !priv->enabled;
+  enabled_state_changed (page);
+  return GDK_EVENT_STOP;
 }
 
 static void
@@ -130,9 +151,9 @@ gis_software_page_class_init (GisSoftwarePageClass *klass)
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
   gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/initial-setup/gis-software-page.ui");
-  gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisSoftwarePage, 
proprietary_switch);
   gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisSoftwarePage, header);
-  gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (klass), state_set);
+  gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisSoftwarePage, 
enable_disable_button);
+  gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (klass), enable_disable_button_clicked_cb);
 
   page_class->page_id = PAGE_ID;
   page_class->locale_changed = gis_software_page_locale_changed;
@@ -147,6 +168,7 @@ gis_software_page_init (GisSoftwarePage *page)
   g_type_ensure (GIS_TYPE_PAGE_HEADER);
 
   gtk_widget_init_template (GTK_WIDGET (page));
+  enabled_state_changed (page);
 }
 
 GisPage *
diff --git a/gnome-initial-setup/pages/software/gis-software-page.ui 
b/gnome-initial-setup/pages/software/gis-software-page.ui
index d8a14fd8..23ab9342 100644
--- a/gnome-initial-setup/pages/software/gis-software-page.ui
+++ b/gnome-initial-setup/pages/software/gis-software-page.ui
@@ -19,28 +19,12 @@
           </object>
         </child>
         <child>
-          <object class="GtkBox">
+          <object class="GtkButton" id="enable_disable_button">
+            <property name="halign">center</property>
+            <property name="margin">36</property>
+            <property name="use-underline">True</property>
             <property name="visible">True</property>
-            <property name="margin-top">40</property>
-            <property name="orientation">horizontal</property>
-            <property name="homogeneous">True</property>
-            <child>
-              <object class="GtkLabel">
-                <property name="visible">True</property>
-                <property name="halign">start</property>
-                <property name="label" translatable="yes">Third-Party Repositories</property>
-                <attributes>
-                  <attribute name="weight" value="bold"/>
-                </attributes>
-              </object>
-            </child>
-            <child>
-              <object class="GtkSwitch" id="proprietary_switch">
-                <property name="halign">end</property>
-                <property name="visible">True</property>
-                <signal name="state-set" handler="state_set"/>
-              </object>
-            </child>
+            <signal name="clicked" handler="enable_disable_button_clicked_cb"/>
           </object>
         </child>
       </object>


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