[network-manager-applet/menu-rework: 6/18] core: display active connections on top of inactive device connections



commit 02fd98b6e34d1b912738a12aaf9855b4a2808ef5
Author: Alexander Sack <asac ubuntu com>
Date:   Fri Sep 18 16:30:18 2009 +0200

    core: display active connections on top of inactive device connections

 src/applet-device-bt.c    |   20 +++++++++++++++++++-
 src/applet-device-cdma.c  |   20 +++++++++++++++++++-
 src/applet-device-gsm.c   |   19 ++++++++++++++++++-
 src/applet-device-wifi.c  |   21 ++++++++++++---------
 src/applet-device-wired.c |   20 +++++++++++++++++++-
 5 files changed, 87 insertions(+), 13 deletions(-)
---
diff --git a/src/applet-device-bt.c b/src/applet-device-bt.c
index f182cef..0d2985f 100644
--- a/src/applet-device-bt.c
+++ b/src/applet-device-bt.c
@@ -81,11 +81,18 @@ bt_menu_item_activate (GtkMenuItem *item, gpointer user_data)
 	                                  user_data);
 }
 
+
+typedef enum {
+	ADD_ACTIVE = 1,
+	ADD_INACTIVE = 2,
+} AddActiveInactiveEnum;
+
 static void
 add_connection_items (NMDevice *device,
                       GSList *connections,
                       gboolean carrier,
                       NMConnection *active,
+                      AddActiveInactiveEnum flag,
                       GtkWidget *menu,
                       NMApplet *applet)
 {
@@ -97,6 +104,14 @@ add_connection_items (NMDevice *device,
 		NMSettingConnection *s_con;
 		GtkWidget *item, *image;
 
+		if (active == connection) {
+			if ((flag & ADD_ACTIVE) == 0)
+				continue;
+		} else {
+			if ((flag & ADD_INACTIVE) == 0)
+				continue;
+		}
+
 		s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
 		item = gtk_image_menu_item_new_with_label (nm_setting_connection_get_id (s_con));
 		gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(item), TRUE);
@@ -155,6 +170,9 @@ bt_add_menu_item (NMDevice *device,
 	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 	gtk_widget_show (item);
 
+	if (g_slist_length (connections))
+		add_connection_items (device, connections, carrier, active, ADD_ACTIVE, menu, applet);
+
 	/* Notify user of unmanaged or unavailable device */
 	item = nma_menu_device_get_menu_item (device, applet, NULL);
 	if (item) {
@@ -165,7 +183,7 @@ bt_add_menu_item (NMDevice *device,
 	if (!nma_menu_device_check_unusable (device)) {
 		/* Add menu items for existing bluetooth connections for this device */
 		if (g_slist_length (connections))
-			add_connection_items (device, connections, carrier, active, menu, applet);
+			add_connection_items (device, connections, carrier, active, ADD_INACTIVE, menu, applet);
 	}
 
 	g_slist_free (connections);
diff --git a/src/applet-device-cdma.c b/src/applet-device-cdma.c
index 192a9f3..2e67913 100644
--- a/src/applet-device-cdma.c
+++ b/src/applet-device-cdma.c
@@ -166,10 +166,17 @@ cdma_menu_item_activate (GtkMenuItem *item, gpointer user_data)
 	                                  user_data);
 }
 
+
+typedef enum {
+	ADD_ACTIVE = 1,
+	ADD_INACTIVE = 2,
+} AddActiveInactiveEnum;
+
 static void
 add_connection_items (NMDevice *device,
                       GSList *connections,
                       NMConnection *active,
+                      AddActiveInactiveEnum flag,
                       GtkWidget *menu,
                       NMApplet *applet)
 {
@@ -181,6 +188,14 @@ add_connection_items (NMDevice *device,
 		NMSettingConnection *s_con;
 		GtkWidget *item, *image;
 
+		if (active == connection) {
+			if ((flag & ADD_ACTIVE) == 0)
+				continue;
+		} else {
+			if ((flag & ADD_INACTIVE) == 0)
+				continue;
+		}
+
 		s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
 		item = gtk_image_menu_item_new_with_label (nm_setting_connection_get_id (s_con));
 		gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(item), TRUE);
@@ -269,6 +284,9 @@ cdma_add_menu_item (NMDevice *device,
 	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 	gtk_widget_show (item);
 
+	if (g_slist_length (connections))
+		add_connection_items (device, connections, active, ADD_ACTIVE, menu, applet);
+
 	/* Notify user of unmanaged or unavailable device */
 	item = nma_menu_device_get_menu_item (device, applet, NULL);
 	if (item) {
@@ -278,7 +296,7 @@ cdma_add_menu_item (NMDevice *device,
 
 	if (!nma_menu_device_check_unusable (device)) {
 		if (g_slist_length (connections))
-			add_connection_items (device, connections, active, menu, applet);
+			add_connection_items (device, connections, active, ADD_INACTIVE, menu, applet);
 		else
 			add_default_connection_item (device, menu, applet);
 	}
diff --git a/src/applet-device-gsm.c b/src/applet-device-gsm.c
index b1ea9f0..f949af0 100644
--- a/src/applet-device-gsm.c
+++ b/src/applet-device-gsm.c
@@ -168,10 +168,16 @@ gsm_menu_item_activate (GtkMenuItem *item, gpointer user_data)
 	                                  user_data);
 }
 
+typedef enum {
+	ADD_ACTIVE = 1,
+	ADD_INACTIVE = 2,
+} AddActiveInactiveEnum;
+
 static void
 add_connection_items (NMDevice *device,
                       GSList *connections,
                       NMConnection *active,
+                      AddActiveInactiveEnum flag,
                       GtkWidget *menu,
                       NMApplet *applet)
 {
@@ -183,6 +189,14 @@ add_connection_items (NMDevice *device,
 		NMSettingConnection *s_con;
 		GtkWidget *item, *image;
 
+		if (active == connection) {
+			if ((flag & ADD_ACTIVE) == 0)
+				continue;
+		} else {
+			if ((flag & ADD_INACTIVE) == 0)
+				continue;
+		}
+
 		s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
 		item = gtk_image_menu_item_new_with_label (nm_setting_connection_get_id (s_con));
 		gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(item), TRUE);
@@ -271,6 +285,9 @@ gsm_add_menu_item (NMDevice *device,
 	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 	gtk_widget_show (item);
 
+	if (g_slist_length (connections))
+		add_connection_items (device, connections, active, ADD_ACTIVE, menu, applet);
+
 	/* Notify user of unmanaged or unavailable device */
 	item = nma_menu_device_get_menu_item (device, applet, NULL);
 	if (item) {
@@ -280,7 +297,7 @@ gsm_add_menu_item (NMDevice *device,
 
 	if (!nma_menu_device_check_unusable (device)) {
 		if (g_slist_length (connections))
-			add_connection_items (device, connections, active, menu, applet);
+			add_connection_items (device, connections, active, ADD_INACTIVE, menu, applet);
 		else
 			add_default_connection_item (device, menu, applet);
 	}
diff --git a/src/applet-device-wifi.c b/src/applet-device-wifi.c
index fa0854e..ea52be8 100644
--- a/src/applet-device-wifi.c
+++ b/src/applet-device-wifi.c
@@ -713,6 +713,9 @@ wireless_add_menu_item (NMDevice *device,
 	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 	gtk_widget_show (item);
 
+	active_ap = nm_device_wifi_get_active_access_point (wdev);
+	add_one_ap_menu_item (wdev, active_ap, connections, active_ap, active, menu, applet);
+
 	/* Notify user of unmanaged or unavailable device */
 	wireless_enabled = nm_client_wireless_get_enabled (applet->nm_client);
 	item = nma_menu_device_get_menu_item (device, applet, wireless_enabled ? NULL : _("wireless is disabled"));
@@ -722,21 +725,21 @@ wireless_add_menu_item (NMDevice *device,
 	}
 
 	if (!nma_menu_device_check_unusable (device)) {
-		active_ap = nm_device_wifi_get_active_access_point (wdev);
-
 		/* Add all networks in our network list to the menu */
 		for (i = 0; aps && (i < aps->len); i++)
 			sorted_aps = g_slist_append (sorted_aps, g_ptr_array_index (aps, i));
 
 		sorted_aps = g_slist_sort (sorted_aps, sort_wireless_networks);
 		for (iter = sorted_aps; iter; iter = g_slist_next (iter)) {
-			add_one_ap_menu_item (wdev,
-			                      NM_ACCESS_POINT (iter->data),
-			                      connections,
-			                      active_ap,
-			                      active,
-			                      menu,
-			                      applet);
+			if (active_ap != NM_ACCESS_POINT (iter->data)) {
+				add_one_ap_menu_item (wdev,
+				                      NM_ACCESS_POINT (iter->data),
+				                      connections,
+				                      active_ap,
+				                      active,
+				                      menu,
+				                      applet);
+			}
 		}
 
 		g_slist_free (sorted_aps);
diff --git a/src/applet-device-wired.c b/src/applet-device-wired.c
index 0828c95..cd5cb92 100644
--- a/src/applet-device-wired.c
+++ b/src/applet-device-wired.c
@@ -106,11 +106,18 @@ wired_menu_item_activate (GtkMenuItem *item, gpointer user_data)
 	                                  user_data);
 }
 
+
+typedef enum {
+	ADD_ACTIVE = 1,
+	ADD_INACTIVE = 2,
+} AddActiveInactiveEnum;
+
 static void
 add_connection_items (NMDevice *device,
                       GSList *connections,
                       gboolean carrier,
                       NMConnection *active,
+                      AddActiveInactiveEnum flag,
                       GtkWidget *menu,
                       NMApplet *applet)
 {
@@ -122,6 +129,14 @@ add_connection_items (NMDevice *device,
 		NMSettingConnection *s_con;
 		GtkWidget *item, *image;
 
+		if (active == connection) {
+			if ((flag & ADD_ACTIVE) == 0)
+				continue;
+		} else {
+			if ((flag & ADD_INACTIVE) == 0)
+				continue;
+		}
+
 		s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
 		item = gtk_image_menu_item_new_with_label (nm_setting_connection_get_id (s_con));
 		gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(item), TRUE);
@@ -227,6 +242,9 @@ wired_add_menu_item (NMDevice *device,
 	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 	gtk_widget_show (item);
 
+	if (g_slist_length (connections))
+		add_connection_items (device, connections, carrier, active, ADD_ACTIVE, menu, applet);
+
 	/* Notify user of unmanaged or unavailable device */
 	item = nma_menu_device_get_menu_item (device, applet, carrier ? NULL : _("disconnected"));
 	if (item) {
@@ -236,7 +254,7 @@ wired_add_menu_item (NMDevice *device,
 
 	if (!nma_menu_device_check_unusable (device)) {
 		if (g_slist_length (connections))
-			add_connection_items (device, connections, carrier, active, menu, applet);
+			add_connection_items (device, connections, carrier, active, ADD_INACTIVE, menu, applet);
 		else
 			add_default_connection_item (device, carrier, menu, applet);
 	}



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