[gnome-control-center] network: Pass widget references rather than relying on names



commit 57d7a79034c4fa58c535102df47634d03b58abd8
Author: Robert Ancell <robert ancell canonical com>
Date:   Tue Oct 1 14:26:51 2019 +1300

    network: Pass widget references rather than relying on names
    
    The existing code relied on using GtkBuilder, which will no longer work when we
    switch to GtkTemplate.

 panels/network/connection-editor/ce-page-details.c | 30 ++++++---
 panels/network/net-device-mobile.c                 | 20 ++++--
 panels/network/net-device-wifi.c                   | 70 ++++++++++---------
 panels/network/panel-common.c                      | 78 ++++++++--------------
 panels/network/panel-common.h                      |  4 +-
 5 files changed, 105 insertions(+), 97 deletions(-)
---
diff --git a/panels/network/connection-editor/ce-page-details.c 
b/panels/network/connection-editor/ce-page-details.c
index f2151ad62..35b6a1e39 100644
--- a/panels/network/connection-editor/ce-page-details.c
+++ b/panels/network/connection-editor/ce-page-details.c
@@ -86,6 +86,7 @@ update_last_used (CEPageDetails *page, NMConnection *connection)
         GTimeSpan diff;
         guint64 timestamp;
         NMSettingConnection *s_con;
+        GtkWidget *heading, *widget;
 
         s_con = nm_connection_get_setting_connection (connection);
         if (s_con == NULL)
@@ -109,7 +110,9 @@ update_last_used (CEPageDetails *page, NMConnection *connection)
         else
                 last_used = g_strdup_printf (ngettext ("%i day ago", "%i days ago", days), days);
 out:
-        panel_set_device_widget_details (CE_PAGE (page)->builder, "last_used", last_used);
+        heading = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "heading_last_used"));
+        widget = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "label_last_used"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), last_used);
 }
 
 static void
@@ -176,7 +179,7 @@ static void
 connect_details_page (CEPageDetails *page)
 {
         NMSettingConnection *sc;
-        GtkWidget *widget;
+        GtkWidget *heading, *widget;
         guint speed;
         guint strength;
         NMDeviceState state;
@@ -221,18 +224,24 @@ connect_details_page (CEPageDetails *page)
         }
         if (speed > 0)
                 speed_label = g_strdup_printf (_("%d Mb/s"), speed);
-        panel_set_device_widget_details (CE_PAGE (page)->builder, "speed", speed_label);
+        heading = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "heading_speed"));
+        widget = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "label_speed"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), speed_label);
 
         if (NM_IS_DEVICE_WIFI (page->device))
                 hw_address = nm_device_wifi_get_hw_address (NM_DEVICE_WIFI (page->device));
         else if (NM_IS_DEVICE_ETHERNET (page->device))
                 hw_address = nm_device_ethernet_get_hw_address (NM_DEVICE_ETHERNET (page->device));
 
-        panel_set_device_widget_details (CE_PAGE (page)->builder, "mac", hw_address);
+        heading = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "heading_mac"));
+        widget = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "label_mac"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), hw_address);
 
         if (device_is_active && active_ap)
                 security_string = get_ap_security_string (active_ap);
-        panel_set_device_widget_details (CE_PAGE (page)->builder, "security", security_string);
+        heading = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "heading_security"));
+        widget = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "label_security"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), security_string);
 
         strength = 0;
         if (page->ap != NULL)
@@ -250,7 +259,9 @@ connect_details_page (CEPageDetails *page)
                 strength_label = C_("Signal strength", "Good");
         else
                 strength_label = C_("Signal strength", "Excellent");
-        panel_set_device_widget_details (CE_PAGE (page)->builder, "strength", strength_label);
+        heading = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "heading_strength"));
+        widget = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "label_strength"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), strength_label);
 
         /* set IP entries */
         if (device_is_active)
@@ -260,8 +271,11 @@ connect_details_page (CEPageDetails *page)
 
         if (!device_is_active && CE_PAGE (page)->connection)
                 update_last_used (page, CE_PAGE (page)->connection);
-        else
-                panel_set_device_widget_details (CE_PAGE (page)->builder, "last_used", NULL);
+        else {
+                heading = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "heading_last_used"));
+                widget = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "label_last_used"));
+                panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), NULL);
+        }
 
         /* Auto connect check */
         widget = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder,
diff --git a/panels/network/net-device-mobile.c b/panels/network/net-device-mobile.c
index 96e9ff229..5bf055471 100644
--- a/panels/network/net-device-mobile.c
+++ b/panels/network/net-device-mobile.c
@@ -240,6 +240,7 @@ static void
 device_mobile_refresh_equipment_id (NetDeviceMobile *device_mobile)
 {
         const gchar *equipment_id = NULL;
+        GtkWidget *heading, *widget;
 
         if (device_mobile->mm_object != NULL) {
                 MMModem *modem;
@@ -260,7 +261,9 @@ device_mobile_refresh_equipment_id (NetDeviceMobile *device_mobile)
                                                   "ControlCenter::EquipmentIdentifier");
         }
 
-        panel_set_device_widget_details (device_mobile->builder, "imei", equipment_id);
+        heading = GTK_WIDGET (gtk_builder_get_object (device_mobile->builder, "heading_imei"));
+        widget = GTK_WIDGET (gtk_builder_get_object (device_mobile->builder, "label_imei"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), equipment_id);
 }
 
 static gchar *
@@ -305,6 +308,11 @@ device_mobile_find_provider (NetDeviceMobile *device_mobile,
 static void
 device_mobile_refresh_operator_name (NetDeviceMobile *device_mobile)
 {
+        GtkWidget *heading, *widget;
+
+        heading = GTK_WIDGET (gtk_builder_get_object (device_mobile->builder, "heading_provider"));
+        widget = GTK_WIDGET (gtk_builder_get_object (device_mobile->builder, "label_provider"));
+
         if (device_mobile->mm_object != NULL) {
                 g_autofree gchar *operator_name = NULL;
                 MMModem3gpp *modem_3gpp;
@@ -341,7 +349,7 @@ device_mobile_refresh_operator_name (NetDeviceMobile *device_mobile)
                                  operator_name);
                 }
 
-                panel_set_device_widget_details (device_mobile->builder, "provider", operator_name);
+                panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), operator_name);
         } else {
                 const gchar *gsm;
                 const gchar *cdma;
@@ -354,13 +362,13 @@ device_mobile_refresh_operator_name (NetDeviceMobile *device_mobile)
 
                 if (gsm != NULL && cdma != NULL) {
                         g_autofree gchar *both = g_strdup_printf ("%s, %s", gsm, cdma);
-                        panel_set_device_widget_details (device_mobile->builder, "provider", both);
+                        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), both);
                 } else if (gsm != NULL) {
-                        panel_set_device_widget_details (device_mobile->builder, "provider", gsm);
+                        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), gsm);
                 } else if (cdma != NULL) {
-                        panel_set_device_widget_details (device_mobile->builder, "provider", cdma);
+                        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), cdma);
                 } else {
-                        panel_set_device_widget_details (device_mobile->builder, "provider", NULL);
+                        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), NULL);
                 }
         }
 }
diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c
index 114100b64..a1fd5bc04 100644
--- a/panels/network/net-device-wifi.c
+++ b/panels/network/net-device-wifi.c
@@ -351,6 +351,7 @@ nm_device_wifi_refresh_hotspot (NetDeviceWifi *device_wifi)
         g_autofree gchar *hotspot_security = NULL;
         g_autofree gchar *hotspot_ssid = NULL;
         NMDevice *nm_device;
+        GtkWidget *heading, *widget;
 
         /* refresh hotspot ui */
         nm_device = net_device_get_nm_device (NET_DEVICE (device_wifi));
@@ -365,18 +366,18 @@ nm_device_wifi_refresh_hotspot (NetDeviceWifi *device_wifi)
         g_debug ("Refreshing hotspot labels to name: '%s', security key: '%s', security: '%s'",
                  hotspot_ssid, hotspot_secret, hotspot_security);
 
-        panel_set_device_widget_details (device_wifi->builder,
-                                         "hotspot_network_name",
-                                         hotspot_ssid);
-        panel_set_device_widget_details (device_wifi->builder,
-                                         "hotspot_security_key",
-                                         hotspot_secret);
-        panel_set_device_widget_details (device_wifi->builder,
-                                         "hotspot_security",
-                                         hotspot_security);
-        panel_set_device_widget_details (device_wifi->builder,
-                                         "hotspot_connected",
-                                         NULL);
+        heading = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "heading_hotspot_network_name"));
+        widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "label_hotspot_network_name"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), hotspot_ssid);
+        heading = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "heading_hotspot_security_key"));
+        widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "label_hotspot_security_key"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), hotspot_secret);
+        heading = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "heading_hotspot_security"));
+        widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "label_hotspot_security"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), hotspot_security);
+        heading = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "heading_hotspot_connected"));
+        widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "label_hotspot_connected"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), NULL);
 }
 
 static void
@@ -389,6 +390,7 @@ update_last_used (NetDeviceWifi *device_wifi, NMConnection *connection)
         GTimeSpan diff;
         guint64 timestamp;
         NMSettingConnection *s_con;
+        GtkWidget *heading, *widget;
 
         s_con = nm_connection_get_setting_connection (connection);
         if (s_con == NULL)
@@ -411,9 +413,9 @@ update_last_used (NetDeviceWifi *device_wifi, NMConnection *connection)
         else
                 last_used = g_strdup_printf (ngettext ("%i day ago", "%i days ago", days), days);
 out:
-        panel_set_device_widget_details (device_wifi->builder,
-                                         "last_used",
-                                         last_used);
+        heading = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "heading_last_used"));
+        widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "label_last_used"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), last_used);
 }
 
 static void
@@ -491,7 +493,7 @@ nm_device_wifi_refresh_ui (NetDeviceWifi *device_wifi)
         NMAccessPoint *ap;
         NMConnection *connection;
         GtkWidget *dialog;
-        GtkWidget *widget;
+        GtkWidget *heading, *widget;
         g_autofree gchar *status = NULL;
 
         if (device_is_hotspot (device_wifi)) {
@@ -532,21 +534,22 @@ nm_device_wifi_refresh_ui (NetDeviceWifi *device_wifi)
                 /* Translators: network device speed */
                 speed_text = g_strdup_printf (_("%d Mb/s"), speed);
         }
-        panel_set_device_widget_details (device_wifi->builder,
-                                         "speed",
-                                         speed_text);
+        heading = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "heading_speed"));
+        widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "label_speed"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), speed_text);
 
         /* device MAC */
         str = nm_device_wifi_get_hw_address (NM_DEVICE_WIFI (nm_device));
-        panel_set_device_widget_details (device_wifi->builder,
-                                         "mac",
-                                         str);
+        heading = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "heading_mac"));
+        widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "label_mac"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), str);
+
         /* security */
         if (ap == active_ap && active_ap != NULL)
                 security_text = get_ap_security_string (active_ap);
-        panel_set_device_widget_details (device_wifi->builder,
-                                         "security",
-                                         security_text);
+        heading = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "heading_security"));
+        widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "label_security"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), security_text);
 
         /* signal strength */
         if (ap != NULL)
@@ -565,16 +568,18 @@ nm_device_wifi_refresh_ui (NetDeviceWifi *device_wifi)
                 str = C_("Signal strength", "Good");
         else
                 str = C_("Signal strength", "Excellent");
-        panel_set_device_widget_details (device_wifi->builder,
-                                         "strength",
-                                         str);
+        heading = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "heading_strength"));
+        widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "label_strength"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), str);
 
         /* device MAC */
         if (ap != active_ap)
                 str = NULL;
         else
                 str = nm_device_wifi_get_hw_address (NM_DEVICE_WIFI (nm_device));
-        panel_set_device_widget_details (device_wifi->builder, "mac", str);
+        heading = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "heading_mac"));
+        widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "label_mac"));
+        panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), str);
 
         /* set IP entries */
         if (ap != active_ap)
@@ -584,8 +589,11 @@ nm_device_wifi_refresh_ui (NetDeviceWifi *device_wifi)
 
         if (ap != active_ap && connection)
                 update_last_used (device_wifi, connection);
-        else
-                panel_set_device_widget_details (device_wifi->builder, "last_used", NULL);
+        else {
+                heading = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "heading_last_used"));
+                widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "label_last_used"));
+                panel_set_device_widget_details (GTK_LABEL (heading), GTK_LABEL (widget), NULL);
+        }
 
         widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->builder, "heading_status"));
         status = panel_device_status_to_localized_string (nm_device, NULL);
diff --git a/panels/network/panel-common.c b/panels/network/panel-common.c
index 57d74fbae..e895c5006 100644
--- a/panels/network/panel-common.c
+++ b/panels/network/panel-common.c
@@ -315,58 +315,25 @@ panel_device_status_to_localized_string (NMDevice *nm_device,
 }
 
 gboolean
-panel_set_device_widget_details (GtkBuilder *builder,
-                                 const gchar *widget_suffix,
+panel_set_device_widget_details (GtkLabel *heading,
+                                 GtkLabel *widget,
                                  const gchar *value)
 {
-        g_autofree gchar *heading_id = NULL;
-        g_autofree gchar *label_id = NULL;
-        GtkWidget *heading;
-        GtkWidget *widget;
-
         /* hide the row if there is no value */
-        heading_id = g_strdup_printf ("heading_%s", widget_suffix);
-        label_id = g_strdup_printf ("label_%s", widget_suffix);
-        heading = GTK_WIDGET (gtk_builder_get_object (builder, heading_id));
-        widget = GTK_WIDGET (gtk_builder_get_object (builder, label_id));
-        if (heading == NULL || widget == NULL) {
-                g_critical ("no widgets %s, %s found", heading_id, label_id);
-                return FALSE;
-        }
-
         if (value == NULL) {
-                gtk_widget_hide (heading);
-                gtk_widget_hide (widget);
+                gtk_widget_hide (GTK_WIDGET (heading));
+                gtk_widget_hide (GTK_WIDGET (widget));
         } else {
                 /* there exists a value */
-                gtk_widget_show (heading);
-                gtk_widget_show (widget);
-                gtk_label_set_label (GTK_LABEL (widget), value);
-                gtk_label_set_max_width_chars (GTK_LABEL (widget), 50);
-                gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END);
+                gtk_widget_show (GTK_WIDGET (heading));
+                gtk_widget_show (GTK_WIDGET (widget));
+                gtk_label_set_label (widget, value);
+                gtk_label_set_max_width_chars (widget, 50);
+                gtk_label_set_ellipsize (widget, PANGO_ELLIPSIZE_END);
         }
         return TRUE;
 }
 
-
-static gboolean
-panel_set_device_widget_header (GtkBuilder *builder,
-                                const gchar *widget_suffix,
-                                const gchar *heading)
-{
-        g_autofree gchar *label_id = NULL;
-        GtkWidget *widget;
-
-        label_id = g_strdup_printf ("heading_%s", widget_suffix);
-        widget = GTK_WIDGET (gtk_builder_get_object (builder, label_id));
-        if (widget == NULL) {
-                g_critical ("no widget %s found", label_id);
-                return FALSE;
-        }
-        gtk_label_set_label (GTK_LABEL (widget), heading);
-        return TRUE;
-}
-
 gchar *
 panel_get_ip4_address_as_string (NMIPConfig *ip4_config, const char *what)
 {
@@ -413,12 +380,23 @@ panel_get_ip6_address_as_string (NMIPConfig *ip6_config)
 void
 panel_set_device_widgets (GtkBuilder *builder, NMDevice *device)
 {
+        GtkWidget *ipv4_heading, *ipv6_heading, *dns_heading, *route_heading;
+        GtkWidget *ipv4_widget, *ipv6_widget, *dns_widget, *route_widget;
         g_autofree gchar *ipv4_text = NULL;
         g_autofree gchar *ipv6_text = NULL;
         g_autofree gchar *dns_text = NULL;
         g_autofree gchar *route_text = NULL;
         gboolean has_ip4, has_ip6;
 
+        ipv4_heading = GTK_WIDGET (gtk_builder_get_object (builder, "heading_ipv4"));
+        ipv4_widget = GTK_WIDGET (gtk_builder_get_object (builder, "label_ipv4"));
+        ipv6_heading = GTK_WIDGET (gtk_builder_get_object (builder, "heading_ipv6"));
+        ipv6_widget = GTK_WIDGET (gtk_builder_get_object (builder, "label_ipv6"));
+        dns_heading = GTK_WIDGET (gtk_builder_get_object (builder, "heading_dns"));
+        dns_widget = GTK_WIDGET (gtk_builder_get_object (builder, "label_dns"));
+        route_heading = GTK_WIDGET (gtk_builder_get_object (builder, "heading_route"));
+        route_widget = GTK_WIDGET (gtk_builder_get_object (builder, "label_route"));
+
         if (device != NULL) {
                 NMIPConfig *ip4_config, *ip6_config;
 
@@ -433,19 +411,19 @@ panel_set_device_widgets (GtkBuilder *builder, NMDevice *device)
                         ipv6_text = panel_get_ip6_address_as_string (ip6_config);
         }
 
-        panel_set_device_widget_details (builder, "ipv4", ipv4_text);
-        panel_set_device_widget_details (builder, "ipv6", ipv6_text);
-        panel_set_device_widget_details (builder, "dns", dns_text);
-        panel_set_device_widget_details (builder, "route", route_text);
+        panel_set_device_widget_details (GTK_LABEL (ipv4_heading), GTK_LABEL (ipv4_widget), ipv4_text);
+        panel_set_device_widget_details (GTK_LABEL (ipv6_heading), GTK_LABEL (ipv6_widget), ipv6_text);
+        panel_set_device_widget_details (GTK_LABEL (dns_heading), GTK_LABEL (dns_widget), dns_text);
+        panel_set_device_widget_details (GTK_LABEL (route_heading), GTK_LABEL (route_widget), route_text);
 
         has_ip4 = ipv4_text != NULL;
         has_ip6 = ipv6_text != NULL;
         if (has_ip4 && has_ip6) {
-                panel_set_device_widget_header (builder, "ipv4", _("IPv4 Address"));
-                panel_set_device_widget_header (builder, "ipv6", _("IPv6 Address"));
+                gtk_label_set_label (GTK_LABEL (ipv4_heading), _("IPv4 Address"));
+                gtk_label_set_label (GTK_LABEL (ipv6_heading), _("IPv6 Address"));
         } else if (has_ip4) {
-                panel_set_device_widget_header (builder, "ipv4", _("IP Address"));
+                gtk_label_set_label (GTK_LABEL (ipv4_heading), _("IP Address"));
         } else if (has_ip6) {
-                panel_set_device_widget_header (builder, "ipv6", _("IP Address"));
+                gtk_label_set_label (GTK_LABEL (ipv6_heading), _("IP Address"));
         }
 }
diff --git a/panels/network/panel-common.h b/panels/network/panel-common.h
index c56bd0f8c..693611458 100644
--- a/panels/network/panel-common.h
+++ b/panels/network/panel-common.h
@@ -28,8 +28,8 @@ G_BEGIN_DECLS
 
 gchar           *panel_device_status_to_localized_string       (NMDevice *nm_device,
                                                                 const gchar *speed);
-gboolean         panel_set_device_widget_details               (GtkBuilder *builder,
-                                                                const gchar *widget_suffix,
+gboolean         panel_set_device_widget_details               (GtkLabel *heading,
+                                                                GtkLabel *widget,
                                                                 const gchar *value);
 void             panel_set_device_widgets                      (GtkBuilder *builder,
                                                                 NMDevice *device);


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