[gnome-control-center] Make connecting to Enterprise WPA work again



commit c3d00a6c44f56292d3541bc489899d379a5132b4
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Sep 21 16:07:46 2012 -0400

    Make connecting to Enterprise WPA work again
    
    gnome-shell relies on being able to call
    gnome-control-center network connect-8021x-wifi <DEVICE> <AP>
    This was broken in the big refactoring of the wifi panel
    last cycle. Bring it back.

 panels/network/cc-network-panel.c |   20 ++++++++++----------
 panels/network/net-device-wifi.c  |   11 -----------
 panels/network/network-dialogs.c  |   13 ++++++++++++-
 panels/network/network-dialogs.h  |    2 +-
 4 files changed, 23 insertions(+), 23 deletions(-)
---
diff --git a/panels/network/cc-network-panel.c b/panels/network/cc-network-panel.c
index a6943a7..ce0967e 100644
--- a/panels/network/cc-network-panel.c
+++ b/panels/network/cc-network-panel.c
@@ -382,8 +382,8 @@ panel_add_device (CcNetworkPanel *panel, NMDevice *device)
 
         type = nm_device_get_device_type (device);
 
-        g_debug ("device %s type %i",
-                 nm_device_get_udi (device), type);
+        g_debug ("device %s type %i path %s",
+                 nm_device_get_udi (device), type, nm_object_get_path (NM_OBJECT (device)));
 
         /* map the NMDeviceType to the GType */
         switch (type) {
@@ -458,15 +458,15 @@ panel_add_device (CcNetworkPanel *panel, NMDevice *device)
                                 priv->arg_operation = OPERATION_NULL; /* done */
                                 select_tree_iter (panel, &iter);
                                 return TRUE;
-                        } else if (priv->arg_operation == OPERATION_CONNECT_8021X
-                                   || priv->arg_operation == OPERATION_SHOW_DEVICE) {
+                        } else if (priv->arg_operation == OPERATION_CONNECT_8021X) {
+                                cc_network_panel_connect_to_8021x_network (panel, priv->client, priv->remote_settings, device, priv->arg_access_point);
+                                priv->arg_operation = OPERATION_NULL; /* done */
                                 select_tree_iter (panel, &iter);
-
-                                /* 802.11 wireless stuff must be handled in add_access_point, but
-                                   we still select the right page here, whereas if we're just showing
-                                   the device, we're done right away */
-                                if (priv->arg_operation == OPERATION_SHOW_DEVICE)
-                                        priv->arg_operation = OPERATION_NULL;
+                                return TRUE;
+                        }
+                        else if (priv->arg_operation == OPERATION_SHOW_DEVICE) {
+                                select_tree_iter (panel, &iter);
+                                priv->arg_operation = OPERATION_NULL;
                                 return TRUE;
                         }
                 }
diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c
index 991e883..99a334e 100644
--- a/panels/network/net-device-wifi.c
+++ b/panels/network/net-device-wifi.c
@@ -173,17 +173,6 @@ add_access_point (NetDeviceWifi *device_wifi, NMAccessPoint *ap, NMAccessPoint *
                                            COLUMN_AP_IS_SAVED, FALSE,
                                            -1);
         g_free (title);
-
-//        if (priv->arg_operation == OPERATION_CONNECT_8021X &&
-//            g_strcmp0(priv->arg_device, nm_object_get_path (NM_OBJECT (device))) == 0 &&
-//            g_strcmp0(priv->arg_access_point, object_path) == 0) {
-//                cc_network_panel_connect_to_8021x_network (panel,
-//                                                           priv->client,
-//                                                           priv->remote_settings,
-//                                                           device,
-//                                                           ap);
-//                priv->arg_operation = OPERATION_NULL; /* done */
-//        }
 }
 
 static void
diff --git a/panels/network/network-dialogs.c b/panels/network/network-dialogs.c
index bdbd0f0..e5295dc 100644
--- a/panels/network/network-dialogs.c
+++ b/panels/network/network-dialogs.c
@@ -27,6 +27,7 @@
 #include <nm-setting-cdma.h>
 #include <nm-setting-serial.h>
 #include <nm-device-modem.h>
+#include <nm-device-wifi.h>
 
 #include "network-dialogs.h"
 #include "nm-wireless-dialog.h"
@@ -249,6 +250,7 @@ cc_network_panel_connect_to_hidden_network (CcNetworkPanel   *panel,
                                             NMClient         *client,
                                             NMRemoteSettings *settings)
 {
+        g_debug ("connect to hidden wifi");
         show_wireless_dialog (panel, client, settings,
                               nma_wireless_dialog_new_for_other (client, settings));
 }
@@ -258,7 +260,7 @@ cc_network_panel_connect_to_8021x_network (CcNetworkPanel   *panel,
                                            NMClient         *client,
                                            NMRemoteSettings *settings,
                                            NMDevice         *device,
-                                           NMAccessPoint    *ap)
+                                           const gchar      *arg_access_point)
 {
 	NMConnection *connection;
 	NMSettingConnection *s_con;
@@ -268,6 +270,14 @@ cc_network_panel_connect_to_8021x_network (CcNetworkPanel   *panel,
 	NM80211ApSecurityFlags wpa_flags, rsn_flags;
 	GtkWidget *dialog;
 	char *uuid;
+        NMAccessPoint *ap;
+
+        g_debug ("connect to 8021x wifi");
+        ap = nm_device_wifi_get_access_point_by_path (NM_DEVICE_WIFI (device), arg_access_point);
+        if (ap == NULL) {
+                g_warning ("didn't find access point with path %s", arg_access_point);
+                return;
+        }
 
         /* If the AP is WPA[2]-Enterprise then we need to set up a minimal 802.1x
 	 * setting and ask the user for more information.
@@ -470,6 +480,7 @@ cc_network_panel_connect_to_3g_network (CcNetworkPanel   *panel,
         NMAMobileWizard *wizard;
 	NMDeviceModemCapabilities caps;
 
+        g_debug ("connect to 3g");
         if (!NM_IS_DEVICE_MODEM (device)) {
                 g_warning ("Network panel loaded with connect-3g but the selected device"
                            " is not a modem");
diff --git a/panels/network/network-dialogs.h b/panels/network/network-dialogs.h
index cd9c6a7..fdd19ef 100644
--- a/panels/network/network-dialogs.h
+++ b/panels/network/network-dialogs.h
@@ -35,7 +35,7 @@ void cc_network_panel_connect_to_8021x_network (CcNetworkPanel   *panel,
                                                 NMClient         *client,
                                                 NMRemoteSettings *settings,
                                                 NMDevice         *device,
-                                                NMAccessPoint    *ap);
+                                                const gchar      *arg_access_point);
 
 void cc_network_panel_connect_to_3g_network (CcNetworkPanel   *panel,
                                              NMClient         *client,



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