[gnome-control-center/gbsneto/gtk4: 16/31] location: Port to GTK4




commit b09ee73170935815198110e00f084992a13ad420
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Wed Oct 20 17:08:28 2021 -0300

    location: Port to GTK4
    
    An almost trivial port too.

 panels/location/cc-location-panel.c  |  31 ++----
 panels/location/cc-location-panel.ui | 208 +++++++++++++++++------------------
 panels/meson.build                   |   2 +-
 shell/cc-panel-loader.c              |   4 +-
 4 files changed, 112 insertions(+), 133 deletions(-)
---
diff --git a/panels/location/cc-location-panel.c b/panels/location/cc-location-panel.c
index cca3346ed..940a39fc0 100644
--- a/panels/location/cc-location-panel.c
+++ b/panels/location/cc-location-panel.c
@@ -18,7 +18,6 @@
  * Author: Matthias Clasen <mclasen redhat com>
  */
 
-#include "list-box-helper.h"
 #include "cc-location-panel.h"
 #include "cc-location-resources.h"
 #include "cc-util.h"
@@ -170,52 +169,46 @@ add_location_app (CcLocationPanel *self,
       return;
 
   row = gtk_list_box_row_new ();
-  gtk_widget_show (row);
   box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-  gtk_widget_show (box);
+  gtk_widget_set_hexpand (box, TRUE);
   gtk_widget_set_margin_start (box, 12);
   gtk_widget_set_margin_end (box, 6);
   gtk_widget_set_margin_top (box, 12);
   gtk_widget_set_margin_bottom (box, 12);
-  gtk_container_add (GTK_CONTAINER (row), box);
-  gtk_widget_set_hexpand (box, TRUE);
-  gtk_container_add (GTK_CONTAINER (self->location_apps_list_box), row);
+  gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), box);
+  gtk_list_box_append (self->location_apps_list_box, row);
 
   icon = g_app_info_get_icon (G_APP_INFO (app_info));
-  w = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_LARGE_TOOLBAR);
-  gtk_widget_show (w);
+  w = gtk_image_new_from_gicon (icon);
   gtk_widget_set_halign (w, GTK_ALIGN_CENTER);
   gtk_widget_set_valign (w, GTK_ALIGN_CENTER);
   gtk_size_group_add_widget (self->location_icon_size_group, w);
-  gtk_box_pack_start (GTK_BOX (box), w, FALSE, FALSE, 0);
+  gtk_box_append (GTK_BOX (box), w);
 
   w = gtk_label_new (g_app_info_get_name (G_APP_INFO (app_info)));
-  gtk_widget_show (w);
   gtk_widget_set_margin_start (w, 12);
   gtk_widget_set_margin_end (w, 12);
   gtk_widget_set_halign (w, GTK_ALIGN_START);
   gtk_widget_set_valign (w, GTK_ALIGN_CENTER);
   gtk_label_set_xalign (GTK_LABEL (w), 0);
-  gtk_box_pack_start (GTK_BOX (box), w, FALSE, FALSE, 0);
+  gtk_box_append (GTK_BOX (box), w);
 
   t = g_date_time_new_from_unix_utc (last_used);
   last_used_str = cc_util_get_smart_date (t);
   w = gtk_label_new (last_used_str);
-  gtk_widget_show (w);
   g_free (last_used_str);
   gtk_style_context_add_class (gtk_widget_get_style_context (w), "dim-label");
   gtk_widget_set_margin_start (w, 12);
   gtk_widget_set_margin_end (w, 12);
   gtk_widget_set_halign (w, GTK_ALIGN_END);
   gtk_widget_set_valign (w, GTK_ALIGN_CENTER);
-  gtk_box_pack_start (GTK_BOX (box), w, TRUE, TRUE, 0);
+  gtk_box_append (GTK_BOX (box), w);
 
   w = gtk_switch_new ();
-  gtk_widget_show (w);
   gtk_switch_set_active (GTK_SWITCH (w), enabled);
   gtk_widget_set_halign (w, GTK_ALIGN_END);
   gtk_widget_set_valign (w, GTK_ALIGN_CENTER);
-  gtk_box_pack_start (GTK_BOX (box), w, FALSE, FALSE, 0);
+  gtk_box_append (GTK_BOX (box), w);
   g_settings_bind (self->location_settings, LOCATION_ENABLED,
                    w, "sensitive",
                    G_SETTINGS_BIND_DEFAULT);
@@ -396,12 +389,9 @@ cc_location_panel_constructed (GObject *object)
   G_OBJECT_CLASS (cc_location_panel_parent_class)->constructed (object);
 
   box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
-  gtk_widget_show (box);
-
   widget = gtk_switch_new ();
-  gtk_widget_show (widget);
   gtk_widget_set_valign (widget, GTK_ALIGN_CENTER);
-  gtk_container_add (GTK_CONTAINER (box), widget);
+  gtk_box_append (GTK_BOX (box), widget);
 
   g_settings_bind (self->location_settings,
                    LOCATION_ENABLED,
@@ -448,9 +438,6 @@ cc_location_panel_init (CcLocationPanel *self)
 
   gtk_widget_init_template (GTK_WIDGET (self));
 
-  gtk_list_box_set_header_func (self->location_apps_list_box,
-                                cc_list_box_update_header_func,
-                                NULL, NULL);
   self->location_icon_size_group = gtk_size_group_new (GTK_SIZE_GROUP_BOTH);
   self->location_settings = g_settings_new ("org.gnome.system.location");
 
diff --git a/panels/location/cc-location-panel.ui b/panels/location/cc-location-panel.ui
index c90de4486..1eda5edb5 100644
--- a/panels/location/cc-location-panel.ui
+++ b/panels/location/cc-location-panel.ui
@@ -3,135 +3,127 @@
 <interface>
   <requires lib="gtk+" version="3.14"/>
   <template class="CcLocationPanel" parent="CcPanel">
-    <property name="visible">True</property>
     <child>
       <object class="GtkStack" id="stack">
-        <property name="visible">true</property>
+
         <child>
-          <object class="GtkBox">
-            <property name="visible">true</property>
-            <property name="orientation">vertical</property>
-            <property name="valign">center</property>
-            <child>
-              <object class="GtkImage">
-                <property name="visible">true</property>
-                <property name="valign">start</property>
-                <property name="pixel-size">96</property>
-                <property name="icon-name">location-services-disabled-symbolic</property>
-                <style>
-                  <class name="dim-label"/>
-                </style>
-              </object>
-            </child>
-            <child>
-              <object class="GtkLabel">
-                <property name="visible">true</property>
-                <property name="margin-top">20</property>
-                <property name="margin-bottom">15</property>
-                <property name="label" translatable="yes">Location services turned off</property>
-                <attributes>
-                  <attribute name="scale" value="1.44"/>
-                </attributes>
-              </object>
-            </child>
-            <child>
-              <object class="GtkLabel">
-                <property name="visible">true</property>
-                <property name="label" translatable="yes">No applications can obtain location 
information.</property>
-                <style>
-                  <class name="dim-label"/>
-                </style>
+          <object class="GtkStackPage">
+            <property name="name">empty</property>
+            <property name="child">
+              <object class="GtkBox">
+                <property name="orientation">vertical</property>
+                <property name="valign">center</property>
+                <child>
+                  <object class="GtkImage">
+                    <property name="valign">start</property>
+                    <property name="pixel-size">96</property>
+                    <property name="icon-name">location-services-disabled-symbolic</property>
+                    <style>
+                      <class name="dim-label"/>
+                    </style>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="margin-top">20</property>
+                    <property name="margin-bottom">15</property>
+                    <property name="label" translatable="yes">Location services turned off</property>
+                    <attributes>
+                      <attribute name="scale" value="1.44"/>
+                    </attributes>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="label" translatable="yes">No applications can obtain location 
information.</property>
+                    <style>
+                      <class name="dim-label"/>
+                    </style>
+                  </object>
+                </child>
               </object>
-            </child>
+
+            </property>
           </object>
-          <packing>
-            <property name="name">empty</property>
-          </packing>
         </child>
-        <child>
-          <object class="GtkScrolledWindow">
-            <property name="visible">true</property>
-            <property name="hscrollbar-policy">never</property>
-            <child>
-              <object class="HdyClamp">
-                <property name="visible">True</property>
-                <property name="margin_top">32</property>
-                <property name="margin_bottom">32</property>
-                <property name="margin_start">12</property>
-                <property name="margin_end">12</property>
 
+        <child>
+          <object class="GtkStackPage">
+            <property name="name">content</property>
+            <property name="child">
+              <object class="GtkScrolledWindow">
+                <property name="hscrollbar-policy">never</property>
                 <child>
-                  <object class="GtkBox">
-                    <property name="visible">true</property>
-                    <property name="orientation">vertical</property>
-                    <property name="hexpand">1</property>
-                    <property name="spacing">12</property>
-                    <child>
-                      <object class="GtkLabel" id="location_description_label">
-                        <property name="visible">true</property>
-                        <property name="label" translatable="yes">Location services allow applications to 
know your location. Using Wi-Fi and mobile broadband increases accuracy.</property>
-                        <property name="wrap">1</property>
-                        <property name="max-width-chars">50</property>
-                        <property name="xalign">0</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="location_privacy_policy_label">
-                        <property name="visible">true</property>
-                        <property name="label" translatable="yes">Uses Mozilla Location Service: &lt;a 
href=&apos;https://location.services.mozilla.com/privacy&apos;&gt;Privacy Policy&lt;/a&gt;</property>
-                        <property name="use-markup">1</property>
-                        <property name="wrap">1</property>
-                        <property name="max-width-chars">50</property>
-                        <property name="xalign">0</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="location_apps_label">
-                        <property name="visible">true</property>
-                        <property name="halign">start</property>
-                        <property name="xalign">0</property>
-                        <property name="wrap">1</property>
-                        <property name="label" translatable="yes">Allow the applications below to determine 
your location.</property>
-                      </object>
-                      <packing>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkListBox" id="location_apps_list_box">
-                        <property name="visible">true</property>
-                        <property name="can-focus">true</property>
-                        <property name="selection-mode">none</property>
-                        <style>
-                          <class name="view"/>
-                          <class name="frame"/>
-                        </style>
+                  <object class="AdwClamp">
+                    <property name="margin_top">32</property>
+                    <property name="margin_bottom">32</property>
+                    <property name="margin_start">12</property>
+                    <property name="margin_end">12</property>
 
-                        <child type="placeholder">
-                          <object class="GtkLabel">
-                            <property name="visible">true</property>
-                            <property name="margin">18</property>
-                            <property name="label" translatable="yes">No Applications Have Asked for 
Location Access</property>
-                            <property name="wrap">true</property>
+                    <child>
+                      <object class="GtkBox">
+                        <property name="orientation">vertical</property>
+                        <property name="hexpand">1</property>
+                        <property name="spacing">12</property>
+                        <child>
+                          <object class="GtkLabel" id="location_description_label">
+                            <property name="label" translatable="yes">Location services allow applications 
to know your location. Using Wi-Fi and mobile broadband increases accuracy.</property>
+                            <property name="wrap">1</property>
                             <property name="max-width-chars">50</property>
+                            <property name="xalign">0</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="location_privacy_policy_label">
+                            <property name="label" translatable="yes">Uses Mozilla Location Service: &lt;a 
href=&apos;https://location.services.mozilla.com/privacy&apos;&gt;Privacy Policy&lt;/a&gt;</property>
+                            <property name="use-markup">1</property>
+                            <property name="wrap">1</property>
+                            <property name="max-width-chars">50</property>
+                            <property name="xalign">0</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="location_apps_label">
+                            <property name="halign">start</property>
+                            <property name="xalign">0</property>
+                            <property name="wrap">1</property>
+                            <property name="label" translatable="yes">Allow the applications below to 
determine your location.</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkListBox" id="location_apps_list_box">
+                            <property name="selection-mode">none</property>
                             <style>
-                              <class name="dim-label" />
+                              <class name="content"/>
                             </style>
+
+                            <child type="placeholder">
+                              <object class="GtkLabel">
+                                <property name="margin_top">18</property>
+                                <property name="margin_bottom">18</property>
+                                <property name="margin_start">18</property>
+                                <property name="margin_end">18</property>
+                                <property name="label" translatable="yes">No Applications Have Asked for 
Location Access</property>
+                                <property name="wrap">true</property>
+                                <property name="max-width-chars">50</property>
+                                <style>
+                                  <class name="dim-label" />
+                                </style>
+                              </object>
+                            </child>
+
                           </object>
                         </child>
-
                       </object>
                     </child>
+
                   </object>
                 </child>
-
               </object>
-            </child>
+            </property>
           </object>
-          <packing>
-            <property name="name">content</property>
-          </packing>
         </child>
+
       </object>
     </child>
   </template>
diff --git a/panels/meson.build b/panels/meson.build
index 04d22d758..7127b0c0b 100644
--- a/panels/meson.build
+++ b/panels/meson.build
@@ -11,7 +11,7 @@ panels = [
 #  'display',
   'info-overview',
 #  'keyboard',
-#  'location',
+  'location',
 #  'lock',
 #  'microphone',
 #  'mouse',
diff --git a/shell/cc-panel-loader.c b/shell/cc-panel-loader.c
index 7cc02ef9c..965533837 100644
--- a/shell/cc-panel-loader.c
+++ b/shell/cc-panel-loader.c
@@ -68,7 +68,7 @@ extern GType cc_ua_panel_get_type (void);
 #ifdef BUILD_WWAN
 //extern GType cc_wwan_panel_get_type (void);
 #endif /* BUILD_WWAN */
-//extern GType cc_location_panel_get_type (void);
+extern GType cc_location_panel_get_type (void);
 extern GType cc_camera_panel_get_type (void);
 //extern GType cc_microphone_panel_get_type (void);
 //extern GType cc_usage_panel_get_type (void);
@@ -110,7 +110,7 @@ static CcPanelLoaderVtable default_panels[] =
   //PANEL_TYPE("display",          cc_display_panel_get_type,              NULL),
   PANEL_TYPE("info-overview",    cc_info_overview_panel_get_type,        NULL),
   //PANEL_TYPE("keyboard",         cc_keyboard_panel_get_type,             NULL),
-  //PANEL_TYPE("location",         cc_location_panel_get_type,             NULL),
+  PANEL_TYPE("location",         cc_location_panel_get_type,             NULL),
   //PANEL_TYPE("lock",             cc_lock_panel_get_type,                 NULL),
   //PANEL_TYPE("microphone",       cc_microphone_panel_get_type,           NULL),
   //PANEL_TYPE("mouse",            cc_mouse_panel_get_type,                NULL),


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