[network-manager-applet] core: add "Enable Mobile Broadband" menu item



commit c09d6bacc9cc4fa8898df616d5c405b9eeb1af56
Author: Dan Williams <dcbw redhat com>
Date:   Wed Dec 23 10:11:44 2009 -0800

    core: add "Enable Mobile Broadband" menu item

 src/applet.c |   46 +++++++++++++++++++++++++++++++++++++++++++---
 src/applet.h |    2 ++
 2 files changed, 45 insertions(+), 3 deletions(-)
---
diff --git a/src/applet.c b/src/applet.c
index e1084ca..d69f6f8 100644
--- a/src/applet.c
+++ b/src/applet.c
@@ -1570,6 +1570,16 @@ nma_set_wireless_enabled_cb (GtkWidget *widget, NMApplet *applet)
 	nm_client_wireless_set_enabled (applet->nm_client, state);
 }
 
+static void
+nma_set_wwan_enabled_cb (GtkWidget *widget, NMApplet *applet)
+{
+	gboolean state;
+
+	g_return_if_fail (applet != NULL);
+
+	state = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
+	nm_client_wwan_set_enabled (applet->nm_client, state);
+}
 
 static void
 nma_set_networking_enabled_cb (GtkWidget *widget, NMApplet *applet)
@@ -1716,7 +1726,9 @@ nma_context_menu_update (NMApplet *applet)
 {
 	NMState state;
 	gboolean have_wireless = FALSE;
+	gboolean have_wwan = FALSE;
 	gboolean wireless_hw_enabled;
+	gboolean wwan_hw_enabled;
 	gboolean notifications_enabled = TRUE;
 
 	state = nm_client_get_state (applet->nm_client);
@@ -1747,6 +1759,18 @@ nma_context_menu_update (NMApplet *applet)
 	gtk_widget_set_sensitive (GTK_WIDGET (applet->wifi_enabled_item),
 	                          wireless_hw_enabled);
 
+	/* Enabled Mobile Broadband */
+	g_signal_handler_block (G_OBJECT (applet->wwan_enabled_item),
+	                        applet->wwan_enabled_toggled_id);
+	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (applet->wwan_enabled_item),
+	                                nm_client_wwan_get_enabled (applet->nm_client));
+	g_signal_handler_unblock (G_OBJECT (applet->wwan_enabled_item),
+	                          applet->wwan_enabled_toggled_id);
+
+	wwan_hw_enabled = nm_client_wwan_hardware_get_enabled (applet->nm_client);
+	gtk_widget_set_sensitive (GTK_WIDGET (applet->wwan_enabled_item),
+	                          wwan_hw_enabled);
+
 	/* Enabled notifications */
 	g_signal_handler_block (G_OBJECT (applet->notifications_enabled_item),
 	                        applet->notifications_enabled_toggled_id);
@@ -1765,10 +1789,12 @@ nma_context_menu_update (NMApplet *applet)
 
 		devices = nm_client_get_devices (applet->nm_client);
 		for (i = 0; devices && (i < devices->len); i++) {
-			if (NM_IS_DEVICE_WIFI (g_ptr_array_index (devices, i))) {
+			NMDevice *candidate = g_ptr_array_index (devices, i);
+
+			if (NM_IS_DEVICE_WIFI (candidate))
 				have_wireless = TRUE;
-				break;
-			}
+			else if (NM_IS_SERIAL_DEVICE (candidate))
+				have_wwan = TRUE;
 		}
 	}
 
@@ -1776,6 +1802,11 @@ nma_context_menu_update (NMApplet *applet)
 		gtk_widget_show_all (applet->wifi_enabled_item);
 	else
 		gtk_widget_hide (applet->wifi_enabled_item);
+
+	if (have_wwan)
+		gtk_widget_show_all (applet->wwan_enabled_item);
+	else
+		gtk_widget_hide (applet->wwan_enabled_item);
 }
 
 static void
@@ -1844,6 +1875,15 @@ static GtkWidget *nma_context_menu_create (NMApplet *applet)
 	applet->wifi_enabled_toggled_id = id;
 	gtk_menu_shell_append (menu, applet->wifi_enabled_item);
 
+	/* 'Enable Mobile Broadband' item */
+	applet->wwan_enabled_item = gtk_check_menu_item_new_with_mnemonic (_("Enable _Mobile Broadband"));
+	id = g_signal_connect (applet->wwan_enabled_item,
+	                       "toggled",
+	                       G_CALLBACK (nma_set_wwan_enabled_cb),
+	                       applet);
+	applet->wwan_enabled_toggled_id = id;
+	gtk_menu_shell_append (menu, applet->wwan_enabled_item);
+
 	nma_menu_add_separator_item (GTK_WIDGET (menu));
 
 	/* Toggle notifications item */
diff --git a/src/applet.h b/src/applet.h
index 9930810..10377cb 100644
--- a/src/applet.h
+++ b/src/applet.h
@@ -141,6 +141,8 @@ typedef struct
 	guint           networking_enabled_toggled_id;
 	GtkWidget *		wifi_enabled_item;
 	guint           wifi_enabled_toggled_id;
+	GtkWidget *		wwan_enabled_item;
+	guint           wwan_enabled_toggled_id;
 
 	GtkWidget *     notifications_enabled_item;
 	guint           notifications_enabled_toggled_id;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]