diff --git a/panels/network/cc-wifi-panel.c b/panels/network/cc-wifi-panel.c index 7fceb354a..b85e99086 100644 --- a/panels/network/cc-wifi-panel.c +++ b/panels/network/cc-wifi-panel.c @@ -451,6 +451,27 @@ rfkill_switch_notify_activate_cb (GtkSwitch *rfkill_switch, NULL); } +static void +button_refresh_clicked_cb (GtkButton *button, + CcWifiPanel *self) +{ + const gchar *id; + guint i; + + id = gtk_stack_get_visible_child_name (self->stack); + + for (i = 0; i < self->devices->len; i++) + { + NetObject *object = g_ptr_array_index (self->devices, i); + + if (g_strcmp0 (net_object_get_id (object), id) == 0) + { + net_device_wifi_request_scan (NET_DEVICE_WIFI (object)); + break; + } + } +} + /* Overrides */ static const gchar * @@ -595,6 +616,7 @@ cc_wifi_panel_class_init (CcWifiPanelClass *klass) gtk_widget_class_bind_template_child (widget_class, CcWifiPanel, stack); gtk_widget_class_bind_template_callback (widget_class, rfkill_switch_notify_activate_cb); + gtk_widget_class_bind_template_callback (widget_class, button_refresh_clicked_cb); g_object_class_override_property (object_class, PROP_PARAMETERS, "parameters"); } diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c index 2a765da66..8632d6313 100644 --- a/panels/network/net-device-wifi.c +++ b/panels/network/net-device-wifi.c @@ -92,6 +92,22 @@ net_device_wifi_get_title_widget (NetDeviceWifi *device_wifi) return GTK_WIDGET (gtk_builder_get_object (device_wifi->priv->builder, "center_box")); } +void +net_device_wifi_request_scan (NetDeviceWifi *device_wifi) +{ + NMDevice *nm_device; + GError *error = NULL; + + nm_device = net_device_get_nm_device (NET_DEVICE (device_wifi)); + g_return_if_fail (nm_device_get_device_type (nm_device) == NM_DEVICE_TYPE_WIFI); + + nm_device_wifi_request_scan (NM_DEVICE_WIFI (nm_device), NULL, &error); + if (error) { + g_debug ("scan request failed: %s", error->message); + g_error_free (error); + } +} + static GtkWidget * device_wifi_proxy_add_to_stack (NetObject *object, GtkStack *stack, diff --git a/panels/network/net-device-wifi.h b/panels/network/net-device-wifi.h index d8baf5075..0ae1537fe 100644 --- a/panels/network/net-device-wifi.h +++ b/panels/network/net-device-wifi.h @@ -53,6 +53,7 @@ struct _NetDeviceWifiClass GType net_device_wifi_get_type (void) G_GNUC_CONST; GtkWidget *net_device_wifi_get_header_widget (NetDeviceWifi *device_wifi); GtkWidget *net_device_wifi_get_title_widget (NetDeviceWifi *device_wifi); +void net_device_wifi_request_scan (NetDeviceWifi *device_wifi); G_END_DECLS diff --git a/panels/network/wifi.ui b/panels/network/wifi.ui index 8bb01ed82..c15096e49 100644 --- a/panels/network/wifi.ui +++ b/panels/network/wifi.ui @@ -189,14 +189,14 @@ True True - start 6 + 6 True Visible Networks 0.0 - 12 + 6 @@ -205,8 +205,32 @@ True + 6 + + + True + True + end + none + + + + True + False + view-refresh-symbolic + button + + + + + + end + + 1