[network-manager-netbook] Hook up 3G enable/disable button.
- From: Tambet Ingo <tambeti src gnome org>
- To: svn-commits-list gnome org
- Subject: [network-manager-netbook] Hook up 3G enable/disable button.
- Date: Tue, 26 May 2009 09:41:55 -0400 (EDT)
commit 63db0db202f6789167e86e38fb835ed71427e4ac
Author: Tambet Ingo <tambet gmail com>
Date: Tue May 26 12:44:00 2009 +0300
Hook up 3G enable/disable button.
---
TODO | 1 -
src/nmn-applet.c | 22 ++++++++++--
src/nmn-item.c | 9 ++---
src/nmn-serial-handler.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 102 insertions(+), 10 deletions(-)
diff --git a/TODO b/TODO
index f728bc0..afa6424 100644
--- a/TODO
+++ b/TODO
@@ -1,5 +1,4 @@
* Networks/AP lists are not sorted, in random order.
* Ethernet switch doesn't work.
-* 3G switch doesn't work.
* "Advanced" button doesn't do anything, used for specifying static IP, manual DNS, etc.
* Hidden APs are not supported at all.
diff --git a/src/nmn-applet.c b/src/nmn-applet.c
index 9812482..134c7d1 100644
--- a/src/nmn-applet.c
+++ b/src/nmn-applet.c
@@ -79,7 +79,7 @@ wireless_state_changed (NMClient *client,
g_signal_handlers_block_by_func (priv->enable_wifi, enable_wifi_toggled, user_data);
nbtk_gtk_light_switch_set_active (NBTK_GTK_LIGHT_SWITCH (priv->enable_wifi),
- nm_client_wireless_get_enabled (client));
+ nm_client_wireless_get_enabled (client));
g_signal_handlers_unblock_by_func (priv->enable_wifi, enable_wifi_toggled, user_data);
}
@@ -148,6 +148,21 @@ enable_3g_toggled (NbtkGtkLightSwitch *w,
gboolean active,
gpointer user_data)
{
+ NmnAppletPrivate *priv = GET_PRIVATE (user_data);
+
+ nmn_nm_data_modems_toggled (priv->nm_data, active);
+}
+
+static void
+modems_toggled (NmnNMData *nm_data,
+ gboolean active,
+ gpointer user_data)
+{
+ NmnAppletPrivate *priv = GET_PRIVATE (user_data);
+
+ g_signal_handlers_block_by_func (priv->nm_data, enable_3g_toggled, user_data);
+ nbtk_gtk_light_switch_set_active (NBTK_GTK_LIGHT_SWITCH (priv->enable_3g), active);
+ g_signal_handlers_unblock_by_func (priv->nm_data, enable_3g_toggled, user_data);
}
static void
@@ -164,9 +179,8 @@ enable_3g_setup (NmnApplet *applet)
g_signal_connect (priv->enable_3g, "switch-flipped", G_CALLBACK (enable_3g_toggled), applet);
gtk_widget_show (priv->enable_3g);
- /* FIXME: Enable/disable 3G is not supported yet */
- nbtk_gtk_light_switch_set_active (NBTK_GTK_LIGHT_SWITCH (priv->enable_3g), TRUE);
- gtk_widget_set_sensitive (priv->enable_3g, FALSE);
+ g_signal_connect (priv->nm_data, "modems-toggled", G_CALLBACK (modems_toggled), applet);
+ modems_toggled (priv->nm_data, nmn_nm_data_modems_get_active (priv->nm_data), applet);
}
/* enable/disable Fligh mode button */
diff --git a/src/nmn-item.c b/src/nmn-item.c
index 976714d..9a69697 100644
--- a/src/nmn-item.c
+++ b/src/nmn-item.c
@@ -158,6 +158,7 @@ nmn_item_connect_request (NmnItem *self)
{
g_return_if_fail (NMN_IS_ITEM (self));
+ NMN_ITEM_GET_CLASS (self)->connect (self);
g_signal_emit (self, signals[CONNECT_REQUESTED], 0);
}
@@ -166,6 +167,7 @@ nmn_item_disconnect_request (NmnItem *self)
{
g_return_if_fail (NMN_IS_ITEM (self));
+ NMN_ITEM_GET_CLASS (self)->disconnect (self);
g_signal_emit (self, signals[DISCONNECT_REQUESTED], 0);
}
@@ -195,13 +197,10 @@ connect_clicked (GtkButton *button, gpointer user_data)
NmnItem *item = NMN_ITEM (user_data);
NmnItemPrivate *priv = NMN_ITEM_GET_PRIVATE (item);
- if (priv->status == NMN_ITEM_STATUS_DISCONNECTED) {
- NMN_ITEM_GET_CLASS (item)->connect (item);
+ if (priv->status == NMN_ITEM_STATUS_DISCONNECTED)
nmn_item_connect_request (item);
- } else {
- NMN_ITEM_GET_CLASS (item)->disconnect (item);
+ else
nmn_item_disconnect_request (item);
- }
}
static void
diff --git a/src/nmn-serial-handler.c b/src/nmn-serial-handler.c
index 0219172..59202d8 100644
--- a/src/nmn-serial-handler.c
+++ b/src/nmn-serial-handler.c
@@ -7,6 +7,14 @@
G_DEFINE_TYPE (NmnSerialHandler, nmn_serial_handler, NMN_TYPE_DEVICE_HANDLER)
+#define GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), NMN_TYPE_SERIAL_HANDLER, NmnSerialHandlerPrivate))
+
+typedef struct {
+ gulong modems_toggled_id;
+
+ gboolean disposed;
+} NmnSerialHandlerPrivate;
+
NmnDeviceHandler *
nmn_serial_handler_new (NmnNMData *nm_data,
NMSerialDevice *device)
@@ -40,14 +48,86 @@ connection_added (NmnDeviceHandler *handler,
}
static void
+modems_toggled (NmnNMData *nm_data,
+ gboolean active,
+ gpointer user_data)
+{
+ NmnDeviceHandler *handler = NMN_DEVICE_HANDLER (user_data);
+ GSList *list;
+ GSList *iter;
+
+ if (active) {
+ list = nmn_device_handler_get_connections (handler);
+ for (iter = list; iter; iter = iter->next)
+ connection_added (handler, NM_EXPORTED_CONNECTION (iter->data));
+
+ g_slist_free (list);
+ } else {
+ list = nmn_device_handler_get_items (handler);
+ for (iter = list; iter; iter = iter->next) {
+ NmnItem *item = NMN_ITEM (iter->data);
+
+ nmn_item_disconnect_request (item);
+ nmn_item_remove_request (item);
+ }
+ }
+}
+
+static void
nmn_serial_handler_init (NmnSerialHandler *handler)
{
}
+static GObject*
+constructor (GType type,
+ guint n_construct_params,
+ GObjectConstructParam *construct_params)
+{
+ GObject *object;
+ NmnNMData *nm_data;
+ NmnSerialHandlerPrivate *priv;
+
+ object = G_OBJECT_CLASS (nmn_serial_handler_parent_class)->constructor
+ (type, n_construct_params, construct_params);
+
+ if (!object)
+ return NULL;
+
+ priv = GET_PRIVATE (object);
+
+ nm_data = nmn_device_handler_get_nm_data (NMN_DEVICE_HANDLER (object));
+ priv->modems_toggled_id = g_signal_connect (nm_data, "modems-toggled", G_CALLBACK (modems_toggled), object);
+
+ return object;
+}
+
+static void
+dispose (GObject *object)
+{
+ NmnSerialHandlerPrivate *priv = GET_PRIVATE (object);
+ NmnNMData *nm_data;
+
+ if (priv->disposed)
+ return;
+
+ nm_data = nmn_device_handler_get_nm_data (NMN_DEVICE_HANDLER (object));
+ g_signal_handler_disconnect (nm_data, priv->modems_toggled_id);
+
+ priv->disposed = TRUE;
+
+ G_OBJECT_CLASS (nmn_serial_handler_parent_class)->dispose (object);
+}
+
static void
nmn_serial_handler_class_init (NmnSerialHandlerClass *class)
{
+ GObjectClass *object_class = G_OBJECT_CLASS (class);
NmnDeviceHandlerClass *handler_class = NMN_DEVICE_HANDLER_CLASS (class);
+ g_type_class_add_private (object_class, sizeof (NmnSerialHandlerPrivate));
+
+ object_class->constructor = constructor;
+ object_class->dispose = dispose;
+
handler_class->connection_added = connection_added;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]