Index: network-manager-applet-0.7.1/src/applet-device-cdma.c
===================================================================
--- network-manager-applet-0.7.1.orig/src/applet-device-cdma.c
+++ network-manager-applet-0.7.1/src/applet-device-cdma.c
@@ -356,28 +356,12 @@ cdma_device_state_changed (NMDevice *dev
                            NMDeviceStateReason reason,
                            NMApplet *applet)
 {
-	if (new_state == NM_DEVICE_STATE_ACTIVATED) {
-		NMConnection *connection;
-		NMSettingConnection *s_con = NULL;
-		char *str = NULL;
-
-		connection = applet_find_active_connection_for_device (device, applet, NULL);
-		if (connection) {
-			const char *id;
-
-			s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
-			id = s_con ? nm_setting_connection_get_id (s_con) : NULL;
-			if (id)
-				str = g_strdup_printf (_("You are now connected to '%s'."), id);
-		}
-
-		applet_do_notify_with_pref (applet,
-		                            _("Connection Established"),
-		                            str ? str : _("You are now connected to the CDMA network."),
-		                            "nm-device-wwan",
-		                            PREF_DISABLE_CONNECTED_NOTIFICATIONS);
-		g_free (str);
-	}
+	if (new_state == NM_DEVICE_STATE_ACTIVATED)
+		applet_do_device_activated_notify (applet,
+										   device,
+										   "nm-device-wwan",
+										   _("You are now connected to the CDMA network."),
+										   FALSE);
 }
 
 static GdkPixbuf *
Index: network-manager-applet-0.7.1/src/applet-device-gsm.c
===================================================================
--- network-manager-applet-0.7.1.orig/src/applet-device-gsm.c
+++ network-manager-applet-0.7.1/src/applet-device-gsm.c
@@ -450,8 +450,11 @@ gsm_device_state_changed (NMDevice *devi
 					   reg_status == MM_GSM_MODEM_REG_STATUS_ROAMING ? _("roaming") : _("home"),
 					   oper_name);
 
-	applet_do_notify_with_pref (applet, _("Connection Established"), msg,
-						   "nm-device-wwan", PREF_DISABLE_CONNECTED_NOTIFICATIONS);
+	applet_do_device_activated_notify (applet,
+									   device,
+									   "nm-device-wwan",
+									   msg,
+									   TRUE);
 
 	g_free (oper_code);
 	g_free (oper_name);
Index: network-manager-applet-0.7.1/src/applet-device-modem.c
===================================================================
--- network-manager-applet-0.7.1.orig/src/applet-device-modem.c
+++ network-manager-applet-0.7.1/src/applet-device-modem.c
@@ -321,28 +321,12 @@ modem_device_state_changed (NMDevice *de
                            NMDeviceStateReason reason,
                            NMApplet *applet)
 {
-	if (new_state == NM_DEVICE_STATE_ACTIVATED) {
-		NMConnection *connection;
-		NMSettingConnection *s_con = NULL;
-		char *str = NULL;
-
-		connection = applet_find_active_connection_for_device (device, applet, NULL);
-		if (connection) {
-			const char *id;
-
-			s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
-			id = s_con ? nm_setting_connection_get_id (s_con) : NULL;
-			if (id)
-				str = g_strdup_printf (_("You are now connected to '%s'."), id);
-		}
-
-		applet_do_notify_with_pref (applet,
-		                            _("Connection Established"),
-		                            str ? str : _("You are now connected to the dial-up network."),
-		                            "nm-device-wwan",
-		                            PREF_DISABLE_CONNECTED_NOTIFICATIONS);
-		g_free (str);
-	}
+	if (new_state == NM_DEVICE_STATE_ACTIVATED)
+		applet_do_device_activated_notify (applet,
+										   device,
+										   "stock_landline-phone",
+										   _("You are now connected to the dial-up network."),
+										   FALSE);
 }
 
 static GdkPixbuf *
Index: network-manager-applet-0.7.1/src/applet-device-wifi.c
===================================================================
--- network-manager-applet-0.7.1.orig/src/applet-device-wifi.c
+++ network-manager-applet-0.7.1/src/applet-device-wifi.c
@@ -1313,9 +1313,11 @@ wireless_device_state_changed (NMDevice
 
 	msg = g_strdup_printf (_("You are now connected to the wireless network '%s'."),
 	                       esc_ssid ? esc_ssid : _("(none)"));
-	applet_do_notify_with_pref (applet, _("Connection Established"),
-	                            msg, "nm-device-wireless",
-	                            PREF_DISABLE_CONNECTED_NOTIFICATIONS);
+	applet_do_device_activated_notify (applet,
+									   device,
+									   "nm-device-wireless",
+									   msg,
+									   TRUE);
 	g_free (msg);
 	g_free (esc_ssid);
 }
Index: network-manager-applet-0.7.1/src/applet-device-wired.c
===================================================================
--- network-manager-applet-0.7.1.orig/src/applet-device-wired.c
+++ network-manager-applet-0.7.1/src/applet-device-wired.c
@@ -319,27 +319,12 @@ wired_device_state_changed (NMDevice *de
                             NMDeviceStateReason reason,
                             NMApplet *applet)
 {
-	if (new_state == NM_DEVICE_STATE_ACTIVATED) {
-		NMConnection *connection;
-		NMSettingConnection *s_con = NULL;
-		char *str = NULL;
-
-		connection = applet_find_active_connection_for_device (device, applet, NULL);
-		if (connection) {
-			const char *id;
-			s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
-			id = s_con ? nm_setting_connection_get_id (s_con) : NULL;
-			if (id)
-				str = g_strdup_printf (_("You are now connected to '%s'."), id);
-		}
-
-		applet_do_notify_with_pref (applet,
-		                            _("Connection Established"),
-		                            str ? str : _("You are now connected to the wired network."),
-		                            "nm-device-wired",
-		                            PREF_DISABLE_CONNECTED_NOTIFICATIONS);
-		g_free (str);
-	}
+	if (new_state == NM_DEVICE_STATE_ACTIVATED)
+		applet_do_device_activated_notify (applet,
+										   device,
+										   "nm-device-wired",
+										   _("You are now connected to the wired network."),
+										   FALSE);
 }
 
 static GdkPixbuf *
Index: network-manager-applet-0.7.1/src/applet.c
===================================================================
--- network-manager-applet-0.7.1.orig/src/applet.c
+++ network-manager-applet-0.7.1/src/applet.c
@@ -446,6 +446,49 @@ void applet_do_notify_with_pref (NMApple
 	                  applet);
 }
 
+void
+applet_do_device_activated_notify (NMApplet *applet,
+								   NMDevice *device,
+								   const char *icon,
+								   const char *generic_message,
+								   gboolean always_use_generic_message)
+{
+	NMConnection *connection;
+	NMSettingConnection *s_con = NULL;
+	char *str = NULL;
+	char *other_str;
+
+	if (!always_use_generic_message) {
+		connection = applet_find_active_connection_for_device (device, applet, NULL);
+		if (connection) {
+			const char *id;
+			s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
+			id = s_con ? nm_setting_connection_get_id (s_con) : NULL;
+			if (id)
+				str = g_strdup_printf (_("You are now connected to '%s'."), id);
+		}
+	}
+
+	if (!str)
+		str = g_strdup (generic_message);
+
+	other_str = applet_describe_active_connections_except_device (device, applet);
+
+	if (other_str && strlen (other_str) > 0) {
+		gchar *new_str = g_strdup_printf (_("%s\n\nAdditionally, you remain connected to:\n\n%s"), str, other_str);
+		g_free (str);
+		str = new_str;
+	}
+
+	applet_do_notify_with_pref (applet,
+								_("Connection Established"),
+								str,
+								icon,
+								PREF_DISABLE_CONNECTED_NOTIFICATIONS);
+	g_free (str);
+	g_free (other_str);
+}
+
 static gboolean
 animation_timeout (gpointer data)
 {
@@ -1014,6 +1057,93 @@ applet_find_active_connection_for_device
 	return connection;
 }
 
+char *
+applet_describe_active_connections_except_device (NMDevice *except_device,
+												  NMApplet *applet)
+{
+	GString *desc;
+	const GPtrArray *temp = NULL;
+	GSList *devices = NULL, *iter = NULL;
+	int i;
+
+	static const char *device_descs [] = {
+		N_("Wired Network"),
+		N_("Wireless Network"),
+		N_("GSM Network"),
+		N_("CDMA Network"),
+		N_("Dial-up Network"),
+		N_("Unknown Device")
+	};
+
+	enum
+	{
+		WIRED_NETWORK_DESC,
+		WIRELESS_NETWORK_DESC,
+		GSM_NETWORK_DESC,
+		CDMA_NETWORK_DESC,
+		DIAL_UP_NETWORK_DESC,
+		UNKNOWN_DEVICE_DESC
+	};
+
+	g_return_val_if_fail (NM_IS_DEVICE (except_device), NULL);
+	g_return_val_if_fail (NM_IS_APPLET (applet), NULL);
+
+	desc = g_string_new ("");
+
+	temp = nm_client_get_devices (applet->nm_client);
+	for (i = 0; temp && (i < temp->len); i++)
+		devices = g_slist_append (devices, g_ptr_array_index (temp, i));
+	if (devices)
+		devices = g_slist_sort (devices, sort_devices);
+
+	/* Add all devices in our device list to the menu */
+	for (iter = devices; iter; iter = iter->next) {
+		NMDevice *device = NM_DEVICE (iter->data);
+		NMConnection *active;
+		NMSettingConnection *s_con = NULL;
+		const char *device_desc;
+
+		/* Ignore device we're told to ignore */
+		if (device == except_device)
+			continue;
+
+		/* Ignore unsupported devices */
+		if (!(nm_device_get_capabilities (device) & NM_DEVICE_CAP_NM_SUPPORTED))
+			continue;
+
+		/* Ignore inactive devices */
+		if (nm_device_get_state (device) != NM_DEVICE_STATE_ACTIVATED)
+			continue;
+
+		if (NM_IS_DEVICE_WIFI (device))
+			device_desc = device_descs [WIRELESS_NETWORK_DESC];
+		else if (NM_IS_DEVICE_ETHERNET (device))
+			device_desc = device_descs [WIRED_NETWORK_DESC];
+		else if (NM_IS_CDMA_DEVICE (device))
+			device_desc = device_descs [CDMA_NETWORK_DESC];
+		else if (NM_IS_GSM_DEVICE (device))
+			device_desc = device_descs [GSM_NETWORK_DESC];
+		else if (NM_IS_DEVICE_ANALOG_MODEM (device))
+			device_desc = device_descs [DIAL_UP_NETWORK_DESC];
+		else
+			device_desc = device_descs [UNKNOWN_DEVICE_DESC];
+
+		if (desc->len > 0)
+			g_string_append_c (desc, '\n');
+
+		g_string_append (desc, device_desc);
+
+		active = applet_find_active_connection_for_device (device, applet, NULL);
+		if (active)
+			s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (active, NM_TYPE_SETTING_CONNECTION));
+		if (s_con)
+			g_string_append_printf (desc, " (%s)", nm_setting_connection_get_id (s_con));
+	}
+
+	g_slist_free (devices);
+	return g_string_free (desc, FALSE);
+}
+
 GtkWidget *
 nma_menu_device_check_unusable (NMDevice *device,
                                 const char *unavailable_msg)
Index: network-manager-applet-0.7.1/src/applet.h
===================================================================
--- network-manager-applet-0.7.1.orig/src/applet.h
+++ network-manager-applet-0.7.1/src/applet.h
@@ -215,6 +215,9 @@ void applet_menu_item_activate_helper (N
 
 NMAGConfConnection *applet_get_exported_connection_for_device (NMDevice *device, NMApplet *applet);
 
+char *applet_describe_active_connections_except_device (NMDevice *except_device,
+														NMApplet *applet);
+
 void applet_do_notify (NMApplet *applet,
                        NotifyUrgency urgency,
                        const char *summary,
@@ -231,6 +234,12 @@ void applet_do_notify_with_pref (NMApple
                                  const char *icon,
                                  const char *pref);
 
+void applet_do_device_activated_notify (NMApplet *applet,
+										NMDevice *device,
+										const char *icon,
+										const char *generic_message,
+										gboolean always_use_generic_message);
+
 NMConnection * applet_find_active_connection_for_device (NMDevice *device,
                                                          NMApplet *applet,
                                                          NMActiveConnection **out_active);
