[network-manager-netbook/MplPanelClient] Add a hack to enable/disable ethernet devices when the switch state changes
- From: Tambet Ingo <tambeti src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [network-manager-netbook/MplPanelClient] Add a hack to enable/disable ethernet devices when the switch state changes
- Date: Wed, 2 Dec 2009 08:54:57 +0000 (UTC)
commit 5d7c4fc72245c02a180da75f3d4e09196c63b40d
Author: Tambet Ingo <tambet gmail com>
Date: Wed Dec 2 10:53:14 2009 +0200
Add a hack to enable/disable ethernet devices when the switch state changes
This is required because NM does not allow disabling ethernet devices.
src/nmn-model.c | 33 +++++++++++++++++++++++++++++++++
1 files changed, 33 insertions(+), 0 deletions(-)
---
diff --git a/src/nmn-model.c b/src/nmn-model.c
index 0e14490..1cd0b8e 100644
--- a/src/nmn-model.c
+++ b/src/nmn-model.c
@@ -107,6 +107,38 @@ nmn_model_ethernet_get_active (NmnModel *self)
return GET_PRIVATE (self)->ethernet_active;
}
+static void
+ethernet_set_active (NmnModel *self,
+ gboolean active)
+{
+ GtkTreeModel *child_model;
+ GtkTreeIter iter;
+ gboolean valid;
+
+ child_model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (self));
+
+ valid = gtk_tree_model_get_iter_first (child_model, &iter);
+ while (valid) {
+ NMListItem *item = NULL;
+
+ gtk_tree_model_get (child_model, &iter, NM_LIST_MODEL_COL_ITEM, &item, -1);
+ if (item) {
+ if (NM_IS_ETHERNET_ITEM (item)) {
+ gboolean disconnected = nm_list_item_get_status (item) == NM_LIST_ITEM_STATUS_DISCONNECTED;
+
+ if (active && disconnected)
+ nm_list_item_connect (item);
+ else if (!active && !disconnected)
+ nm_list_item_disconnect (item);
+ }
+
+ g_object_unref (item);
+ }
+
+ valid = gtk_tree_model_iter_next (child_model, &iter);
+ }
+}
+
void
nmn_model_ethernet_toggled (NmnModel *self,
gboolean active)
@@ -120,6 +152,7 @@ nmn_model_ethernet_toggled (NmnModel *self,
/* FIXME: Save in gconf? */
priv->ethernet_active = active;
gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (self));
+ ethernet_set_active (self, active);
g_signal_emit (self, signals[ETHERNET_TOGGLED], 0, active);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]