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:
parent
6c63c3980e
commit
f4d2eeb7f7
1 changed files with 41 additions and 4 deletions
|
@ -453,18 +453,55 @@ verify_argv (CcWifiPanel *self,
|
||||||
/* Callbacks */
|
/* Callbacks */
|
||||||
|
|
||||||
static void
|
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;
|
return;
|
||||||
|
|
||||||
add_wifi_device (self, device);
|
if (nm_device_get_managed (device))
|
||||||
check_main_stack_page (self);
|
{
|
||||||
|
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
|
static void
|
||||||
device_removed_cb (CcWifiPanel *self, NMDevice *device)
|
device_removed_cb (CcWifiPanel *self, NMDevice *device)
|
||||||
{
|
{
|
||||||
|
const gchar *id;
|
||||||
|
|
||||||
if (!NM_IS_DEVICE_WIFI (device))
|
if (!NM_IS_DEVICE_WIFI (device))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue