[gnome-control-center] network: Move helper functions into panel-common.c
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] network: Move helper functions into panel-common.c
- Date: Tue, 5 Nov 2019 23:07:14 +0000 (UTC)
commit 0197654177cb952fb115f7c4da74b9b314e01bb4
Author: Robert Ancell <robert ancell canonical com>
Date: Thu Oct 24 12:13:40 2019 +1300
network: Move helper functions into panel-common.c
panels/network/net-device-bluetooth.c | 7 +-
panels/network/net-device-ethernet.c | 17 ++--
panels/network/net-device-mobile.c | 7 +-
panels/network/net-device-wifi.c | 7 +-
panels/network/net-device.c | 169 ----------------------------------
panels/network/net-device.h | 9 --
panels/network/net-object.c | 8 --
panels/network/net-object.h | 2 -
panels/network/panel-common.c | 144 +++++++++++++++++++++++++++++
panels/network/panel-common.h | 6 ++
10 files changed, 171 insertions(+), 205 deletions(-)
---
diff --git a/panels/network/net-device-bluetooth.c b/panels/network/net-device-bluetooth.c
index dd5b99ff6..1888bd988 100644
--- a/panels/network/net-device-bluetooth.c
+++ b/panels/network/net-device-bluetooth.c
@@ -109,9 +109,9 @@ nm_device_bluetooth_refresh_ui (NetDeviceBluetooth *self)
}
static void
-device_bluetooth_refresh (NetObject *object)
+device_state_changed_cb (NetDeviceBluetooth *self)
{
- NetDeviceBluetooth *self = NET_DEVICE_BLUETOOTH (object);
+ net_object_emit_changed (NET_OBJECT (self));
nm_device_bluetooth_refresh_ui (self);
}
@@ -187,7 +187,6 @@ net_device_bluetooth_class_init (NetDeviceBluetoothClass *klass)
object_class->finalize = net_device_bluetooth_finalize;
parent_class->get_widget = device_bluetooth_get_widget;
- parent_class->refresh = device_bluetooth_refresh;
}
static void
@@ -228,6 +227,8 @@ net_device_bluetooth_new (NMClient *client, NMDevice *device)
NULL);
self->client = g_object_ref (client);
+ g_signal_connect_object (device, "state-changed", G_CALLBACK (device_state_changed_cb), self,
G_CONNECT_SWAPPED);
+
nm_device_bluetooth_refresh_ui (self);
return self;
diff --git a/panels/network/net-device-ethernet.c b/panels/network/net-device-ethernet.c
index 0844e51e1..e00983337 100644
--- a/panels/network/net-device-ethernet.c
+++ b/panels/network/net-device-ethernet.c
@@ -405,6 +405,13 @@ client_connection_added_cb (NetDeviceEthernet *self)
device_ethernet_refresh_ui (self);
}
+static void
+device_state_changed_cb (NetDeviceEthernet *self)
+{
+ net_object_emit_changed (NET_OBJECT (self));
+ device_ethernet_refresh_ui (self);
+}
+
static void
add_profile (NetDeviceEthernet *self)
{
@@ -505,20 +512,12 @@ device_ethernet_finalize (GObject *object)
G_OBJECT_CLASS (net_device_ethernet_parent_class)->finalize (object);
}
-static void
-device_ethernet_refresh (NetObject *object)
-{
- NetDeviceEthernet *self = NET_DEVICE_ETHERNET (object);
- device_ethernet_refresh_ui (self);
-}
-
static void
net_device_ethernet_class_init (NetDeviceEthernetClass *klass)
{
NetObjectClass *obj_class = NET_OBJECT_CLASS (klass);
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- obj_class->refresh = device_ethernet_refresh;
obj_class->get_widget = device_ethernet_get_widget;
object_class->finalize = device_ethernet_finalize;
}
@@ -581,6 +580,8 @@ net_device_ethernet_new (NMClient *client, NMDevice *device)
g_signal_connect_object (client, NM_CLIENT_CONNECTION_REMOVED,
G_CALLBACK (connection_removed), self, G_CONNECT_SWAPPED);
+ g_signal_connect_object (device, "state-changed", G_CALLBACK (device_state_changed_cb), self,
G_CONNECT_SWAPPED);
+
g_signal_connect (self, "notify::title", G_CALLBACK (device_title_changed), NULL);
device_ethernet_refresh_ui (self);
diff --git a/panels/network/net-device-mobile.c b/panels/network/net-device-mobile.c
index 93ceccbf4..6a5bbc785 100644
--- a/panels/network/net-device-mobile.c
+++ b/panels/network/net-device-mobile.c
@@ -470,9 +470,9 @@ nm_device_mobile_refresh_ui (NetDeviceMobile *self)
}
static void
-device_mobile_refresh (NetObject *object)
+device_state_changed_cb (NetDeviceMobile *self)
{
- NetDeviceMobile *self = NET_DEVICE_MOBILE (object);
+ net_object_emit_changed (NET_OBJECT (self));
nm_device_mobile_refresh_ui (self);
}
@@ -779,7 +779,6 @@ net_device_mobile_class_init (NetDeviceMobileClass *klass)
object_class->dispose = net_device_mobile_dispose;
parent_class->get_widget = device_mobile_get_widget;
- parent_class->refresh = device_mobile_refresh;
}
static void
@@ -851,6 +850,8 @@ net_device_mobile_new (NMClient *client, NMDevice *device, GDBusObject *modem)
NULL);
self->client = g_object_ref (client);
+ g_signal_connect_object (device, "state-changed", G_CALLBACK (device_state_changed_cb), self,
G_CONNECT_SWAPPED);
+
if (modem != NULL) {
MMModem3gpp *modem_3gpp;
diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c
index e4ced1204..8f253259e 100644
--- a/panels/network/net-device-wifi.c
+++ b/panels/network/net-device-wifi.c
@@ -406,9 +406,9 @@ nm_device_wifi_refresh_ui (NetDeviceWifi *self)
}
static void
-device_wifi_refresh (NetObject *object)
+device_state_changed_cb (NetDeviceWifi *self)
{
- NetDeviceWifi *self = NET_DEVICE_WIFI (object);
+ net_object_emit_changed (NET_OBJECT (self));
nm_device_wifi_refresh_ui (self);
}
@@ -903,7 +903,6 @@ net_device_wifi_class_init (NetDeviceWifiClass *klass)
object_class->finalize = net_device_wifi_finalize;
object_class->get_property = net_device_wifi_get_property;
parent_class->get_widget = device_wifi_proxy_get_widget;
- parent_class->refresh = device_wifi_refresh;
g_object_class_install_property (object_class,
PROP_SCANNING,
@@ -1325,6 +1324,8 @@ net_device_wifi_new (CcPanel *panel, NMClient *client, NMDevice *device)
g_signal_connect_object (client, "notify::wireless-enabled",
G_CALLBACK (wireless_enabled_toggled), self, G_CONNECT_SWAPPED);
+ g_signal_connect_object (device, "state-changed", G_CALLBACK (device_state_changed_cb), self,
G_CONNECT_SWAPPED);
+
list = GTK_WIDGET (cc_wifi_connection_list_new (client, NM_DEVICE_WIFI (device), TRUE, TRUE, FALSE));
gtk_widget_show (list);
gtk_container_add (GTK_CONTAINER (self->listbox_box), list);
diff --git a/panels/network/net-device.c b/panels/network/net-device.c
index 98e2cd076..12b0afa02 100644
--- a/panels/network/net-device.c
+++ b/panels/network/net-device.c
@@ -33,7 +33,6 @@
typedef struct
{
NMDevice *nm_device;
- guint changed_id;
} NetDevicePrivate;
enum {
@@ -44,123 +43,6 @@ enum {
G_DEFINE_TYPE_WITH_PRIVATE (NetDevice, net_device, NET_TYPE_OBJECT)
-/* return value must be freed by caller with g_free() */
-static gchar *
-get_mac_address_of_connection (NMConnection *connection)
-{
- if (!connection)
- return NULL;
-
- /* check the connection type */
- if (nm_connection_is_type (connection,
- NM_SETTING_WIRELESS_SETTING_NAME)) {
- /* check wireless settings */
- NMSettingWireless *s_wireless = nm_connection_get_setting_wireless (connection);
- if (!s_wireless)
- return NULL;
- return g_strdup (nm_setting_wireless_get_mac_address (s_wireless));
- } else if (nm_connection_is_type (connection,
- NM_SETTING_WIRED_SETTING_NAME)) {
- /* check wired settings */
- NMSettingWired *s_wired = nm_connection_get_setting_wired (connection);
- if (!s_wired)
- return NULL;
- return g_strdup (nm_setting_wired_get_mac_address (s_wired));
- }
- /* no MAC address found */
- return NULL;
-}
-
-/* return value must not be freed! */
-static const gchar *
-get_mac_address_of_device (NMDevice *device)
-{
- const gchar *mac = NULL;
- switch (nm_device_get_device_type (device)) {
- case NM_DEVICE_TYPE_WIFI:
- {
- NMDeviceWifi *device_wifi = NM_DEVICE_WIFI (device);
- mac = nm_device_wifi_get_hw_address (device_wifi);
- break;
- }
- case NM_DEVICE_TYPE_ETHERNET:
- {
- NMDeviceEthernet *device_ethernet = NM_DEVICE_ETHERNET (device);
- mac = nm_device_ethernet_get_hw_address (device_ethernet);
- break;
- }
- default:
- break;
- }
- /* no MAC address found */
- return mac;
-}
-
-/* returns TRUE if both MACs are equal */
-static gboolean
-compare_mac_device_with_mac_connection (NMDevice *device,
- NMConnection *connection)
-{
- const gchar *mac_dev = NULL;
- g_autofree gchar *mac_conn = NULL;
-
- mac_dev = get_mac_address_of_device (device);
- if (mac_dev == NULL)
- return FALSE;
-
- mac_conn = get_mac_address_of_connection (connection);
- if (mac_conn == NULL)
- return FALSE;
-
- /* compare both MACs */
- return g_strcmp0 (mac_dev, mac_conn) == 0;
-}
-
-NMConnection *
-net_device_get_find_connection (NMClient *client, NMDevice *device)
-{
- GSList *list, *iterator;
- NMConnection *connection = NULL;
- NMActiveConnection *ac;
-
- /* is the device available in a active connection? */
- ac = nm_device_get_active_connection (device);
- if (ac)
- return (NMConnection*) nm_active_connection_get_connection (ac);
-
- /* not found in active connections - check all available connections */
- list = net_device_get_valid_connections (client, device);
- if (list != NULL) {
- /* if list has only one connection, use this connection */
- if (g_slist_length (list) == 1) {
- connection = list->data;
- goto out;
- }
-
- /* is there connection with the MAC address of the device? */
- for (iterator = list; iterator; iterator = iterator->next) {
- connection = iterator->data;
- if (compare_mac_device_with_mac_connection (device,
- connection)) {
- goto out;
- }
- }
- }
-
- /* no connection found for the given device */
- connection = NULL;
-out:
- g_slist_free (list);
- return connection;
-}
-
-static void
-state_changed_cb (NetDevice *self)
-{
- net_object_emit_changed (NET_OBJECT (self));
- net_object_refresh (NET_OBJECT (self));
-}
-
NMDevice *
net_device_get_nm_device (NetDevice *self)
{
@@ -208,18 +90,7 @@ net_device_set_property (GObject *object,
switch (prop_id) {
case PROP_DEVICE:
- if (priv->changed_id != 0) {
- g_signal_handler_disconnect (priv->nm_device,
- priv->changed_id);
- }
priv->nm_device = g_value_dup_object (value);
- if (priv->nm_device) {
- priv->changed_id = g_signal_connect_swapped (priv->nm_device,
- "state-changed",
- G_CALLBACK (state_changed_cb),
- net_device);
- } else
- priv->changed_id = 0;
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -233,10 +104,6 @@ net_device_finalize (GObject *object)
NetDevice *self = NET_DEVICE (object);
NetDevicePrivate *priv = net_device_get_instance_private (self);
- if (priv->changed_id != 0) {
- g_signal_handler_disconnect (priv->nm_device,
- priv->changed_id);
- }
g_clear_object (&priv->nm_device);
G_OBJECT_CLASS (net_device_parent_class)->finalize (object);
@@ -262,39 +129,3 @@ static void
net_device_init (NetDevice *self)
{
}
-
-GSList *
-net_device_get_valid_connections (NMClient *client, NMDevice *device)
-{
- GSList *valid;
- NMConnection *connection;
- NMSettingConnection *s_con;
- NMActiveConnection *active_connection;
- const char *active_uuid;
- const GPtrArray *all;
- GPtrArray *filtered;
- guint i;
-
- all = nm_client_get_connections (client);
- filtered = nm_device_filter_connections (device, all);
-
- active_connection = nm_device_get_active_connection (device);
- active_uuid = active_connection ? nm_active_connection_get_uuid (active_connection) : NULL;
-
- valid = NULL;
- for (i = 0; i < filtered->len; i++) {
- connection = g_ptr_array_index (filtered, i);
- s_con = nm_connection_get_setting_connection (connection);
- if (!s_con)
- continue;
-
- if (nm_setting_connection_get_master (s_con) &&
- g_strcmp0 (nm_setting_connection_get_uuid (s_con), active_uuid) != 0)
- continue;
-
- valid = g_slist_prepend (valid, connection);
- }
- g_ptr_array_free (filtered, FALSE);
-
- return g_slist_reverse (valid);
-}
diff --git a/panels/network/net-device.h b/panels/network/net-device.h
index 6760cbdbe..1953d8bae 100644
--- a/panels/network/net-device.h
+++ b/panels/network/net-device.h
@@ -21,9 +21,6 @@
#pragma once
-#include <glib-object.h>
-
-#include <NetworkManager.h>
#include "net-object.h"
G_BEGIN_DECLS
@@ -39,10 +36,4 @@ struct _NetDeviceClass
NMDevice *net_device_get_nm_device (NetDevice *device);
-NMConnection *net_device_get_find_connection (NMClient *client,
- NMDevice *device);
-
-GSList *net_device_get_valid_connections (NMClient *client,
- NMDevice *device);
-
G_END_DECLS
diff --git a/panels/network/net-object.c b/panels/network/net-object.c
index 00aea2d7c..c5e622ad7 100644
--- a/panels/network/net-object.c
+++ b/panels/network/net-object.c
@@ -89,14 +89,6 @@ net_object_get_widget (NetObject *self,
return klass->get_widget (self, heading_size_group);
}
-void
-net_object_refresh (NetObject *self)
-{
- NetObjectClass *klass = NET_OBJECT_GET_CLASS (self);
- if (klass->refresh != NULL)
- klass->refresh (self);
-}
-
/**
* net_object_get_property:
**/
diff --git a/panels/network/net-object.h b/panels/network/net-object.h
index 94ec05593..56f03dab5 100644
--- a/panels/network/net-object.h
+++ b/panels/network/net-object.h
@@ -40,7 +40,6 @@ struct _NetObjectClass
/* vtable */
GtkWidget *(*get_widget) (NetObject *object,
GtkSizeGroup *heading_size_group);
- void (*refresh) (NetObject *object);
};
const gchar *net_object_get_title (NetObject *object);
@@ -48,7 +47,6 @@ void net_object_set_title (NetObject *object,
const gchar *title);
void net_object_emit_changed (NetObject *object);
void net_object_emit_removed (NetObject *object);
-void net_object_refresh (NetObject *object);
GtkWidget *net_object_get_widget (NetObject *object,
GtkSizeGroup *heading_size_group);
diff --git a/panels/network/panel-common.c b/panels/network/panel-common.c
index 22a31d09b..5f3f75130 100644
--- a/panels/network/panel-common.c
+++ b/panels/network/panel-common.c
@@ -264,6 +264,76 @@ device_state_reason_to_localized_string (NMDevice *device)
return value;
}
+static gchar *
+get_mac_address_of_connection (NMConnection *connection)
+{
+ if (!connection)
+ return NULL;
+
+ /* check the connection type */
+ if (nm_connection_is_type (connection,
+ NM_SETTING_WIRELESS_SETTING_NAME)) {
+ /* check wireless settings */
+ NMSettingWireless *s_wireless = nm_connection_get_setting_wireless (connection);
+ if (!s_wireless)
+ return NULL;
+ return g_strdup (nm_setting_wireless_get_mac_address (s_wireless));
+ } else if (nm_connection_is_type (connection,
+ NM_SETTING_WIRED_SETTING_NAME)) {
+ /* check wired settings */
+ NMSettingWired *s_wired = nm_connection_get_setting_wired (connection);
+ if (!s_wired)
+ return NULL;
+ return g_strdup (nm_setting_wired_get_mac_address (s_wired));
+ }
+ /* no MAC address found */
+ return NULL;
+}
+
+static const gchar *
+get_mac_address_of_device (NMDevice *device)
+{
+ const gchar *mac = NULL;
+ switch (nm_device_get_device_type (device)) {
+ case NM_DEVICE_TYPE_WIFI:
+ {
+ NMDeviceWifi *device_wifi = NM_DEVICE_WIFI (device);
+ mac = nm_device_wifi_get_hw_address (device_wifi);
+ break;
+ }
+ case NM_DEVICE_TYPE_ETHERNET:
+ {
+ NMDeviceEthernet *device_ethernet = NM_DEVICE_ETHERNET (device);
+ mac = nm_device_ethernet_get_hw_address (device_ethernet);
+ break;
+ }
+ default:
+ break;
+ }
+ /* no MAC address found */
+ return mac;
+}
+
+/* returns TRUE if both MACs are equal */
+static gboolean
+compare_mac_device_with_mac_connection (NMDevice *device,
+ NMConnection *connection)
+{
+ const gchar *mac_dev = NULL;
+ g_autofree gchar *mac_conn = NULL;
+
+ mac_dev = get_mac_address_of_device (device);
+ if (mac_dev == NULL)
+ return FALSE;
+
+ mac_conn = get_mac_address_of_connection (connection);
+ if (mac_conn == NULL)
+ return FALSE;
+
+ /* compare both MACs */
+ return g_strcmp0 (mac_dev, mac_conn) == 0;
+}
+
gchar *
panel_device_status_to_localized_string (NMDevice *nm_device,
const gchar *speed)
@@ -308,3 +378,77 @@ panel_device_status_to_localized_string (NMDevice *nm_device,
return g_string_free (string, FALSE);
}
+
+NMConnection *
+net_device_get_find_connection (NMClient *client, NMDevice *device)
+{
+ GSList *list, *iterator;
+ NMConnection *connection = NULL;
+ NMActiveConnection *ac;
+
+ /* is the device available in a active connection? */
+ ac = nm_device_get_active_connection (device);
+ if (ac)
+ return (NMConnection*) nm_active_connection_get_connection (ac);
+
+ /* not found in active connections - check all available connections */
+ list = net_device_get_valid_connections (client, device);
+ if (list != NULL) {
+ /* if list has only one connection, use this connection */
+ if (g_slist_length (list) == 1) {
+ connection = list->data;
+ goto out;
+ }
+
+ /* is there connection with the MAC address of the device? */
+ for (iterator = list; iterator; iterator = iterator->next) {
+ connection = iterator->data;
+ if (compare_mac_device_with_mac_connection (device,
+ connection)) {
+ goto out;
+ }
+ }
+ }
+
+ /* no connection found for the given device */
+ connection = NULL;
+out:
+ g_slist_free (list);
+ return connection;
+}
+
+GSList *
+net_device_get_valid_connections (NMClient *client, NMDevice *device)
+{
+ GSList *valid;
+ NMConnection *connection;
+ NMSettingConnection *s_con;
+ NMActiveConnection *active_connection;
+ const char *active_uuid;
+ const GPtrArray *all;
+ GPtrArray *filtered;
+ guint i;
+
+ all = nm_client_get_connections (client);
+ filtered = nm_device_filter_connections (device, all);
+
+ active_connection = nm_device_get_active_connection (device);
+ active_uuid = active_connection ? nm_active_connection_get_uuid (active_connection) : NULL;
+
+ valid = NULL;
+ for (i = 0; i < filtered->len; i++) {
+ connection = g_ptr_array_index (filtered, i);
+ s_con = nm_connection_get_setting_connection (connection);
+ if (!s_con)
+ continue;
+
+ if (nm_setting_connection_get_master (s_con) &&
+ g_strcmp0 (nm_setting_connection_get_uuid (s_con), active_uuid) != 0)
+ continue;
+
+ valid = g_slist_prepend (valid, connection);
+ }
+ g_ptr_array_free (filtered, FALSE);
+
+ return g_slist_reverse (valid);
+}
diff --git a/panels/network/panel-common.h b/panels/network/panel-common.h
index 0c0715929..07326ad93 100644
--- a/panels/network/panel-common.h
+++ b/panels/network/panel-common.h
@@ -28,4 +28,10 @@ G_BEGIN_DECLS
gchar *panel_device_status_to_localized_string (NMDevice *nm_device,
const gchar *speed);
+NMConnection *net_device_get_find_connection (NMClient *client,
+ NMDevice *device);
+
+GSList *net_device_get_valid_connections (NMClient *client,
+ NMDevice *device);
+
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]