Network: Implement and show on/off switch for wireless/wimax
These map to nm_client_wireless/wimax_set/get_enabled.
This commit is contained in:
parent
b7f42ae161
commit
b160c1549b
2 changed files with 124 additions and 1 deletions
|
@ -60,6 +60,7 @@ struct _CcNetworkPanelPrivate
|
||||||
GSettings *proxy_settings;
|
GSettings *proxy_settings;
|
||||||
GtkBuilder *builder;
|
GtkBuilder *builder;
|
||||||
NMClient *client;
|
NMClient *client;
|
||||||
|
gboolean updating_device;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -796,6 +797,96 @@ out:
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static NMDevice *
|
||||||
|
find_device_by_udi (CcNetworkPanel *panel,
|
||||||
|
const gchar *udi)
|
||||||
|
{
|
||||||
|
gint i;
|
||||||
|
NMDevice *device;
|
||||||
|
|
||||||
|
for (i=0; i<panel->priv->devices->len; i++) {
|
||||||
|
device = g_ptr_array_index (panel->priv->devices, i);
|
||||||
|
if (g_strcmp0 (udi, nm_device_get_udi (device)) == 0) {
|
||||||
|
return device;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
device_off_toggled (GtkSwitch *sw,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
CcNetworkPanel *panel)
|
||||||
|
{
|
||||||
|
NMDevice *device;
|
||||||
|
gboolean active;
|
||||||
|
|
||||||
|
if (panel->priv->updating_device)
|
||||||
|
return;
|
||||||
|
|
||||||
|
active = gtk_switch_get_active (sw);
|
||||||
|
|
||||||
|
device = find_device_by_udi (panel, panel->priv->current_device);
|
||||||
|
|
||||||
|
switch (nm_device_get_device_type (device)) {
|
||||||
|
case NM_DEVICE_TYPE_WIFI:
|
||||||
|
nm_client_wireless_set_enabled (panel->priv->client, active);
|
||||||
|
break;
|
||||||
|
case NM_DEVICE_TYPE_WIMAX:
|
||||||
|
nm_client_wimax_set_enabled (panel->priv->client, active);
|
||||||
|
break;
|
||||||
|
default: ;
|
||||||
|
/* FIXME: handle other device types */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
wireless_enabled_toggled (NMClient *client,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
CcNetworkPanel *panel)
|
||||||
|
{
|
||||||
|
gboolean enabled;
|
||||||
|
GtkSwitch *sw;
|
||||||
|
NMDevice *device;
|
||||||
|
|
||||||
|
device = find_device_by_udi (panel, panel->priv->current_device);
|
||||||
|
|
||||||
|
if (nm_device_get_device_type (device) != NM_DEVICE_TYPE_WIFI)
|
||||||
|
return;
|
||||||
|
|
||||||
|
enabled = nm_client_wireless_get_enabled (client);
|
||||||
|
sw = GTK_SWITCH (gtk_builder_get_object (panel->priv->builder,
|
||||||
|
"device_off_switch"));
|
||||||
|
|
||||||
|
panel->priv->updating_device = TRUE;
|
||||||
|
gtk_switch_set_active (sw, enabled);
|
||||||
|
panel->priv->updating_device = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
wimax_enabled_toggled (NMClient *client,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
CcNetworkPanel *panel)
|
||||||
|
{
|
||||||
|
gboolean enabled;
|
||||||
|
GtkSwitch *sw;
|
||||||
|
NMDevice *device;
|
||||||
|
|
||||||
|
device = find_device_by_udi (panel, panel->priv->current_device);
|
||||||
|
|
||||||
|
if (nm_device_get_device_type (device) != NM_DEVICE_TYPE_WIMAX)
|
||||||
|
return;
|
||||||
|
|
||||||
|
enabled = nm_client_wimax_get_enabled (client);
|
||||||
|
sw = GTK_SWITCH (gtk_builder_get_object (panel->priv->builder,
|
||||||
|
"device_off_switch"));
|
||||||
|
|
||||||
|
panel->priv->updating_device = TRUE;
|
||||||
|
gtk_switch_set_active (sw, enabled);
|
||||||
|
panel->priv->updating_device = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
nm_device_refresh_device_ui (CcNetworkPanel *panel, NMDevice *device)
|
nm_device_refresh_device_ui (CcNetworkPanel *panel, NMDevice *device)
|
||||||
{
|
{
|
||||||
|
@ -808,6 +899,7 @@ nm_device_refresh_device_ui (CcNetworkPanel *panel, NMDevice *device)
|
||||||
GHashTable *options = NULL;
|
GHashTable *options = NULL;
|
||||||
GtkListStore *liststore_wireless_network;
|
GtkListStore *liststore_wireless_network;
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
|
GtkWidget *sw;
|
||||||
guint i;
|
guint i;
|
||||||
guint speed;
|
guint speed;
|
||||||
NMAccessPoint *ap;
|
NMAccessPoint *ap;
|
||||||
|
@ -854,6 +946,23 @@ nm_device_refresh_device_ui (CcNetworkPanel *panel, NMDevice *device)
|
||||||
}
|
}
|
||||||
gtk_label_set_label (GTK_LABEL (widget), str);
|
gtk_label_set_label (GTK_LABEL (widget), str);
|
||||||
|
|
||||||
|
sw = GTK_WIDGET (gtk_builder_get_object (priv->builder,
|
||||||
|
"device_off_switch"));
|
||||||
|
/* keep this in sync with the signal handler setup in cc_network_panel_init */
|
||||||
|
switch (type) {
|
||||||
|
case NM_DEVICE_TYPE_WIFI:
|
||||||
|
gtk_widget_show (sw);
|
||||||
|
wireless_enabled_toggled (priv->client, NULL, panel);
|
||||||
|
break;
|
||||||
|
case NM_DEVICE_TYPE_WIMAX:
|
||||||
|
gtk_widget_show (sw);
|
||||||
|
wimax_enabled_toggled (priv->client, NULL, panel);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
gtk_widget_hide (sw);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
|
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
|
||||||
"notebook_types"));
|
"notebook_types"));
|
||||||
if (type == NM_DEVICE_TYPE_ETHERNET) {
|
if (type == NM_DEVICE_TYPE_ETHERNET) {
|
||||||
|
@ -1076,6 +1185,10 @@ nm_device_refresh_vpn_ui (CcNetworkPanel *panel, NetVpn *vpn)
|
||||||
"hbox_device_header"));
|
"hbox_device_header"));
|
||||||
gtk_widget_set_visible (widget, TRUE);
|
gtk_widget_set_visible (widget, TRUE);
|
||||||
|
|
||||||
|
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
|
||||||
|
"device_off_switch"));
|
||||||
|
gtk_widget_set_visible (widget, FALSE);
|
||||||
|
|
||||||
/* use proxy note page */
|
/* use proxy note page */
|
||||||
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
|
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
|
||||||
"notebook_types"));
|
"notebook_types"));
|
||||||
|
@ -1562,6 +1675,15 @@ cc_network_panel_init (CcNetworkPanel *panel)
|
||||||
g_signal_connect (panel->priv->client, "device-removed",
|
g_signal_connect (panel->priv->client, "device-removed",
|
||||||
G_CALLBACK (device_removed_cb), panel);
|
G_CALLBACK (device_removed_cb), panel);
|
||||||
|
|
||||||
|
widget = GTK_WIDGET (gtk_builder_get_object (panel->priv->builder,
|
||||||
|
"device_off_switch"));
|
||||||
|
g_signal_connect (widget, "notify::active",
|
||||||
|
G_CALLBACK (device_off_toggled), panel);
|
||||||
|
g_signal_connect (panel->priv->client, "notify::wireless-enabled",
|
||||||
|
G_CALLBACK (wireless_enabled_toggled), panel);
|
||||||
|
g_signal_connect (panel->priv->client, "notify::wimax-enabled",
|
||||||
|
G_CALLBACK (wimax_enabled_toggled), panel);
|
||||||
|
|
||||||
/* disable for now, until we can remove connections without
|
/* disable for now, until we can remove connections without
|
||||||
* segfaulting NM... */
|
* segfaulting NM... */
|
||||||
widget = GTK_WIDGET (gtk_builder_get_object (panel->priv->builder,
|
widget = GTK_WIDGET (gtk_builder_get_object (panel->priv->builder,
|
||||||
|
|
|
@ -245,7 +245,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkSwitch" id="device_off_switch">
|
<object class="GtkSwitch" id="device_off_switch">
|
||||||
<property name="visible">False</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="halign">end</property>
|
<property name="halign">end</property>
|
||||||
<property name="valign">start</property>
|
<property name="valign">start</property>
|
||||||
|
@ -1690,6 +1690,7 @@
|
||||||
<object class="GtkComboBoxText" id="combobox_proxy_mode">
|
<object class="GtkComboBoxText" id="combobox_proxy_mode">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
|
<property name="model">list_store_proxy_method</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">True</property>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue