Add wifi device change callback

Add any wifi devices that have become managed or remove ones that have
become unmanaged. Since a device could have been added or removed
previously, we also have to handle multiple calls to add or remove a
device.
This commit is contained in:
Jamison Lofthouse 2020-06-24 12:19:57 -04:00 committed by Jamison Lofthouse
parent 6c63c3980e
commit f4d2eeb7f7

View file

@ -453,18 +453,55 @@ verify_argv (CcWifiPanel *self,
/* Callbacks */
static void
device_added_cb (CcWifiPanel *self, NMDevice *device)
device_state_changed_cb (CcWifiPanel *self, GParamSpec *pspec, NMDevice *device)
{
if (!NM_IS_DEVICE_WIFI (device) || !nm_device_get_managed (device))
const gchar *id;
id = nm_device_get_udi (device);
/* Don't add a device that has already been added */
if (!NM_IS_DEVICE_WIFI (device) || !id)
return;
add_wifi_device (self, device);
check_main_stack_page (self);
if (nm_device_get_managed (device))
{
if (gtk_stack_get_child_by_name (self->stack, id))
return;
add_wifi_device (self, device);
check_main_stack_page (self);
}
else
{
if (!gtk_stack_get_child_by_name (self->stack, id))
return;
remove_wifi_device (self, device);
check_main_stack_page (self);
}
}
static void
device_added_cb (CcWifiPanel *self, NMDevice *device)
{
if (!NM_IS_DEVICE_WIFI (device))
return;
if (nm_device_get_managed (device))
{
add_wifi_device (self, device);
check_main_stack_page (self);
}
g_signal_connect_object (device,
"notify::state",
G_CALLBACK (device_state_changed_cb),
self,
G_CONNECT_SWAPPED);
}
static void
device_removed_cb (CcWifiPanel *self, NMDevice *device)
{
const gchar *id;
if (!NM_IS_DEVICE_WIFI (device))
return;