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.
This commit is contained in:
Robert Ancell 2019-10-01 14:26:51 +13:00
parent 1d43f4c0f5
commit 57d7a79034
5 changed files with 105 additions and 97 deletions

View file

@ -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,

View file

@ -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);
}
}
}

View file

@ -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);

View file

@ -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"));
}
}

View file

@ -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);