network-manager-applet r488 - in branches/network-manager-applet-0-6: . src
- From: tambeti svn gnome org
- To: svn-commits-list gnome org
- Subject: network-manager-applet r488 - in branches/network-manager-applet-0-6: . src
- Date: Wed, 30 Jan 2008 20:32:28 +0000 (GMT)
Author: tambeti
Date: Wed Jan 30 20:32:27 2008
New Revision: 488
URL: http://svn.gnome.org/viewvc/network-manager-applet?rev=488&view=rev
Log:
2008-01-30 Tambet Ingo <tambet gmail com>
Implement 802.1x wired authentication.
Added:
branches/network-manager-applet-0-6/src/nm-wired-dialog.c
branches/network-manager-applet-0-6/src/nm-wired-dialog.h
Modified:
branches/network-manager-applet-0-6/ChangeLog
branches/network-manager-applet-0-6/configure.ac
branches/network-manager-applet-0-6/src/Makefile.am
branches/network-manager-applet-0-6/src/applet-dbus-devices.c
branches/network-manager-applet-0-6/src/applet-dbus-devices.h
branches/network-manager-applet-0-6/src/applet-dbus-info.c
branches/network-manager-applet-0-6/src/applet-dbus.c
branches/network-manager-applet-0-6/src/applet.c
branches/network-manager-applet-0-6/src/applet.h
branches/network-manager-applet-0-6/src/nm-device.c
branches/network-manager-applet-0-6/src/nm-device.h
branches/network-manager-applet-0-6/src/nm-gconf-wso-leap.c
branches/network-manager-applet-0-6/src/nm-gconf-wso-leap.h
branches/network-manager-applet-0-6/src/nm-gconf-wso-wep.c
branches/network-manager-applet-0-6/src/nm-gconf-wso-wep.h
branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-eap.c
branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-eap.h
branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-psk.c
branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-psk.h
branches/network-manager-applet-0-6/src/nm-gconf-wso.c
branches/network-manager-applet-0-6/src/nm-gconf-wso.h
branches/network-manager-applet-0-6/src/other-network-dialog.c
branches/network-manager-applet-0-6/src/passphrase-dialog.c
branches/network-manager-applet-0-6/src/passphrase-dialog.h
branches/network-manager-applet-0-6/src/wireless-network.c
branches/network-manager-applet-0-6/src/wireless-network.h
branches/network-manager-applet-0-6/src/wso-wpa-eap.c
branches/network-manager-applet-0-6/src/wso-wpa-eap.h
Modified: branches/network-manager-applet-0-6/configure.ac
==============================================================================
--- branches/network-manager-applet-0-6/configure.ac (original)
+++ branches/network-manager-applet-0-6/configure.ac Wed Jan 30 20:32:27 2008
@@ -100,7 +100,7 @@
AC_SUBST(GTHREAD_CFLAGS)
AC_SUBST(GTHREAD_LIBS)
-PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.10)
+PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.8)
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
Modified: branches/network-manager-applet-0-6/src/Makefile.am
==============================================================================
--- branches/network-manager-applet-0-6/src/Makefile.am (original)
+++ branches/network-manager-applet-0-6/src/Makefile.am Wed Jan 30 20:32:27 2008
@@ -85,6 +85,8 @@
nm-gconf-wso-wpa-psk.h \
nm-gconf-wso-leap.c \
nm-gconf-wso-leap.h \
+ nm-wired-dialog.c \
+ nm-wired-dialog.h \
gconf-helpers.c \
gconf-helpers.h \
nm-utils.c \
Modified: branches/network-manager-applet-0-6/src/applet-dbus-devices.c
==============================================================================
--- branches/network-manager-applet-0-6/src/applet-dbus-devices.c (original)
+++ branches/network-manager-applet-0-6/src/applet-dbus-devices.c Wed Jan 30 20:32:27 2008
@@ -833,7 +833,11 @@
for (item = networks; *item; item++)
nma_dbus_device_update_one_network (applet, op, *item, active_network_path);
}
+ } else if (type == DEVICE_TYPE_802_3_ETHERNET) {
+ if (active && strlen (active_network_path) > 0)
+ network_device_set_active_wired_network (dev, active_network_path);
}
+
dbus_free_string_array (networks);
applet->device_list = g_slist_append (applet->device_list, dev);
@@ -925,7 +929,11 @@
message = g_strdup (_("You are now connected to the wired network with a self-assigned address."));
icon = "nm-device-wired-autoip";
} else {
- message = g_strdup (_("You are now connected to the wired network."));
+ if (essid)
+ message = g_strdup_printf (_("You are now connected to the wired network '%s'."), essid);
+ else
+ message = g_strdup (_("You are now connected to the wired network."));
+
icon = "nm-device-wired";
}
}
@@ -1286,22 +1294,56 @@
{
const char *dev_path = network_device_get_nm_path (dev);
- if (network_device_is_wireless (dev))
- {
- /* Build up the required args */
- dbus_message_append_args (message, DBUS_TYPE_OBJECT_PATH, &dev_path,
- DBUS_TYPE_STRING, &essid,
- DBUS_TYPE_INVALID);
+ nm_info ("Forcing device '%s'\n", dev_path);
- /* If we have specific wireless security options, add them */
- if (opt)
- success = wso_append_dbus_params (opt, essid, message);
- }
- else
- {
- nm_info ("Forcing device '%s'\n", network_device_get_nm_path (dev));
- dbus_message_append_args (message, DBUS_TYPE_OBJECT_PATH, &dev_path, DBUS_TYPE_INVALID);
+ dbus_message_append_args (message, DBUS_TYPE_OBJECT_PATH, &dev_path, DBUS_TYPE_INVALID);
+
+ if (essid)
+ dbus_message_append_args (message, DBUS_TYPE_STRING, &essid, DBUS_TYPE_INVALID);
+
+ if (opt)
+ success = wso_append_dbus_params (opt, essid, message);
+
+ if (success)
+ dbus_connection_send (connection, message, NULL);
+ dbus_message_unref (message);
+ }
+ else
+ nm_warning ("Couldn't allocate the dbus message\n");
+}
+
+
+void nma_dbus_set_device_with_gconf_wso (DBusConnection *connection,
+ NetworkDevice *dev,
+ const char *essid,
+ NMGConfWSO *opt)
+{
+ DBusMessage * message;
+ gboolean success = TRUE;
+
+ g_return_if_fail (connection != NULL);
+ g_return_if_fail (dev != NULL);
+ if (network_device_is_wireless (dev))
+ g_return_if_fail (essid != NULL);
+
+ if ((message = dbus_message_new_method_call (NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_INTERFACE, "setActiveDevice")))
+ {
+ const char *dev_path = network_device_get_nm_path (dev);
+
+ nm_info ("Forcing device '%s'\n", dev_path);
+
+ dbus_message_append_args (message, DBUS_TYPE_OBJECT_PATH, &dev_path, DBUS_TYPE_INVALID);
+
+ if (essid)
+ dbus_message_append_args (message, DBUS_TYPE_STRING, &essid, DBUS_TYPE_INVALID);
+
+ if (opt) {
+ DBusMessageIter iter;
+
+ dbus_message_iter_init_append (message, &iter);
+ success = nm_gconf_wso_serialize_dbus (opt, &iter);
}
+
if (success)
dbus_connection_send (connection, message, NULL);
dbus_message_unref (message);
Modified: branches/network-manager-applet-0-6/src/applet-dbus-devices.h
==============================================================================
--- branches/network-manager-applet-0-6/src/applet-dbus-devices.h (original)
+++ branches/network-manager-applet-0-6/src/applet-dbus-devices.h Wed Jan 30 20:32:27 2008
@@ -30,6 +30,7 @@
#include "nm-device.h"
#include "wireless-network.h"
#include "wireless-security-option.h"
+#include "nm-gconf-wso.h"
void nma_dbus_update_one_vpn_connection (DBusConnection *connection, const char *name, NMApplet *applet, gboolean is_active);
void nma_dbus_update_vpn_connections (NMApplet *applet);
@@ -50,6 +51,12 @@
void nma_dbus_device_remove_one_network (NMApplet *applet, const char *dev_path, const char *net_path);
void nma_dbus_update_strength (NMApplet *applet, const char *dev_path, const char *net_path, int strength);
void nma_dbus_set_device (DBusConnection *connection, NetworkDevice *dev, const char *essid, WirelessSecurityOption *opt);
+
+void nma_dbus_set_device_with_gconf_wso (DBusConnection *connection,
+ NetworkDevice *dev,
+ const char *essid,
+ NMGConfWSO *opt);
+
void nma_dbus_create_network (DBusConnection *connection, NetworkDevice *dev, const char *essid, WirelessSecurityOption *opt);
void nma_free_data_model (NMApplet *applet);
Modified: branches/network-manager-applet-0-6/src/applet-dbus-info.c
==============================================================================
--- branches/network-manager-applet-0-6/src/applet-dbus-info.c (original)
+++ branches/network-manager-applet-0-6/src/applet-dbus-info.c Wed Jan 30 20:32:27 2008
@@ -36,6 +36,7 @@
#include "applet-dbus.h"
#include "applet-dbus-info.h"
#include "passphrase-dialog.h"
+#include "nm-wired-dialog.h"
#include "nm-utils.h"
#include "nm-gconf-wso.h"
#include "gconf-helpers.h"
@@ -89,7 +90,8 @@
WirelessNetwork * net = NULL;
char * temp = NULL;
char * escaped_network;
- int we_cipher = -1;
+ NMNetworkType type = NETWORK_TYPE_ALLOWED;
+ const char *gconf_prefix = GCONF_PATH_WIRELESS_NETWORKS;
g_return_val_if_fail (applet != NULL, NULL);
g_return_val_if_fail (message != NULL, NULL);
@@ -106,20 +108,24 @@
if (!(dev = nma_get_device_for_nm_path (applet->device_list, dev_path)))
return NULL;
+ if (network_device_is_wired (dev)) {
+ type = NETWORK_TYPE_WIRED;
+ gconf_prefix = GCONF_PATH_WIRED_NETWORKS;
+ }
+
/* If we don't have a record of the network yet in GConf, ask for
* a new key no matter what NM says.
*/
escaped_network = gconf_escape_key (essid, strlen (essid));
- nm_gconf_get_int_helper (applet->gconf_client,
- GCONF_PATH_WIRELESS_NETWORKS,
- "we_cipher", escaped_network, &we_cipher);
if (!nm_gconf_get_string_helper (applet->gconf_client,
- GCONF_PATH_WIRELESS_NETWORKS,
+ gconf_prefix,
"essid",
escaped_network, &temp)
|| !temp)
new_key = TRUE;
+ g_free (temp);
+
/* It's not a new key, so try to get the key from the keyring. */
if (!new_key)
{
@@ -132,7 +138,7 @@
if (applet->dropdown_menu && GTK_WIDGET_VISIBLE (GTK_WIDGET (applet->dropdown_menu)))
gtk_menu_shell_deactivate (GTK_MENU_SHELL (applet->dropdown_menu));
- gconf_wso = nm_gconf_wso_new_deserialize_gconf (applet->gconf_client, escaped_network);
+ gconf_wso = nm_gconf_wso_new_deserialize_gconf (applet->gconf_client, type, escaped_network);
if (!gconf_wso) {
new_key = TRUE;
goto new_key;
@@ -149,13 +155,17 @@
new_key:
if (new_key) {
- /* We only ask the user for a new key when we know about the network from NM,
- * since throwing up a dialog with a random essid from somewhere is a security issue.
- */
- if ((net = network_device_get_wireless_network_by_nm_path (dev, net_path)))
- {
- nmi_passphrase_dialog_destroy (applet);
- applet->passphrase_dialog = nmi_passphrase_dialog_new (applet, 0, dev, net, message);
+ if (network_device_is_wireless (dev)) {
+ /* We only ask the user for a new key when we know about the network from NM,
+ * since throwing up a dialog with a random essid from somewhere is a security issue.
+ */
+ if ((net = network_device_get_wireless_network_by_nm_path (dev, net_path)))
+ nmi_passphrase_dialog_new (applet, dev, net, message);
+
+ } else if (network_device_is_wired (dev)) {
+ nma_wired_dialog_ask_password (applet, escaped_network, message);
+ } else {
+ nm_warning ("Unhandled device type ('%s')", G_OBJECT_TYPE_NAME (dev));
}
}
@@ -201,7 +211,8 @@
g_return_val_if_fail (applet != NULL, NULL);
- nmi_passphrase_dialog_destroy (applet);
+ if (applet->passphrase_dialog)
+ gtk_widget_destroy (applet->passphrase_dialog);
return NULL;
}
@@ -389,7 +400,7 @@
}
/* Get the network's security information from GConf */
- if (!(gconf_wso = nm_gconf_wso_new_deserialize_gconf (client, escaped_network)))
+ if (!(gconf_wso = nm_gconf_wso_new_deserialize_gconf (client, type, escaped_network)))
{
nm_warning ("%s:%d - couldn't retrieve security information from "
"GConf for '%s'.", __FILE__, __LINE__, essid);
@@ -762,13 +773,21 @@
char * key;
GConfEntry * gconf_entry;
char * escaped_network;
+ const char *gconf_prefix = GCONF_PATH_WIRELESS_NETWORKS;
+ NMNetworkType type = NETWORK_TYPE_ALLOWED;
g_return_if_fail (applet != NULL);
g_return_if_fail (essid != NULL);
g_return_if_fail (gconf_wso != NULL);
+ /* Crappy hack */
+ if (!strncmp (bssid, "WIRED", 5)) {
+ type = NETWORK_TYPE_WIRED;
+ gconf_prefix = GCONF_PATH_WIRED_NETWORKS;
+ }
+
escaped_network = gconf_escape_key (essid, strlen (essid));
- key = g_strdup_printf ("%s/%s", GCONF_PATH_WIRELESS_NETWORKS, escaped_network);
+ key = g_strdup_printf ("%s/%s", gconf_prefix, escaped_network);
gconf_entry = gconf_client_get_entry (applet->gconf_client, key, NULL, TRUE, NULL);
g_free (key);
if (!gconf_entry)
@@ -778,7 +797,7 @@
}
gconf_entry_unref (gconf_entry);
- key = g_strdup_printf ("%s/%s/essid", GCONF_PATH_WIRELESS_NETWORKS, escaped_network);
+ key = g_strdup_printf ("%s/%s/essid", gconf_prefix, escaped_network);
gconf_client_set_string (applet->gconf_client, key, essid, NULL);
g_free (key);
@@ -787,7 +806,7 @@
*/
if (!automatic)
{
- key = g_strdup_printf ("%s/%s/timestamp", GCONF_PATH_WIRELESS_NETWORKS, escaped_network);
+ key = g_strdup_printf ("%s/%s/timestamp", gconf_prefix, escaped_network);
gconf_client_set_int (applet->gconf_client, key, time (NULL), NULL);
g_free (key);
}
@@ -799,7 +818,7 @@
gboolean found = FALSE;
/* Get current list of access point BSSIDs for this AP from GConf */
- key = g_strdup_printf ("%s/%s/bssids", GCONF_PATH_WIRELESS_NETWORKS, escaped_network);
+ key = g_strdup_printf ("%s/%s/bssids", gconf_prefix, escaped_network);
if ((value = gconf_client_get (applet->gconf_client, key, NULL)))
{
if ((value->type == GCONF_VALUE_LIST) && (gconf_value_get_list_type (value) == GCONF_VALUE_STRING))
@@ -835,7 +854,7 @@
}
/* Stuff the security information into GConf */
- if (!nm_gconf_wso_serialize_gconf (gconf_wso, applet->gconf_client, escaped_network))
+ if (!nm_gconf_wso_serialize_gconf (gconf_wso, applet->gconf_client, type, escaped_network))
{
nm_warning ("%s:%d - Couldn't serialize security info for '%s'.",
__FILE__, __LINE__, essid);
Modified: branches/network-manager-applet-0-6/src/applet-dbus.c
==============================================================================
--- branches/network-manager-applet-0-6/src/applet-dbus.c (original)
+++ branches/network-manager-applet-0-6/src/applet-dbus.c Wed Jan 30 20:32:27 2008
@@ -111,7 +111,9 @@
{
nma_set_state (applet, NM_STATE_DISCONNECTED);
nma_set_running (applet, FALSE);
- nmi_passphrase_dialog_destroy (applet);
+
+ if (applet->passphrase_dialog)
+ gtk_widget_destroy (applet->passphrase_dialog);
/* One last redraw to capture new state before sleeping */
nma_update_state (applet);
Modified: branches/network-manager-applet-0-6/src/applet.c
==============================================================================
--- branches/network-manager-applet-0-6/src/applet.c (original)
+++ branches/network-manager-applet-0-6/src/applet.c Wed Jan 30 20:32:27 2008
@@ -60,6 +60,7 @@
#include "other-network-dialog.h"
#include "passphrase-dialog.h"
#include "menu-items.h"
+#include "nm-wired-dialog.h"
#include "vpn-password-dialog.h"
#include "vpn-connection.h"
#include "nm-utils.h"
@@ -1538,7 +1539,7 @@
GtkCheckMenuItem *gtk_item = wired_menu_item_get_check_item (item);
wired_menu_item_update (item, device, n_devices);
- if (network_device_get_active (device))
+ if (network_device_get_active (device) && network_device_get_active_wired_network (device) == NULL)
gtk_check_menu_item_set_active (gtk_item, TRUE);
gtk_check_menu_item_set_draw_as_radio (gtk_item, TRUE);
@@ -1620,6 +1621,26 @@
g_signal_connect (menu_item, "activate", G_CALLBACK (new_network_item_selected), applet);
}
+static void wired_network_item_selected (GtkWidget *menu_item, NMApplet *applet)
+{
+ nma_wired_dialog_create (applet);
+}
+
+
+static void nma_menu_add_wired_network_item (GtkWidget *menu, NMApplet *applet)
+{
+ GtkWidget *menu_item;
+ GtkWidget *label;
+
+ menu_item = gtk_menu_item_new ();
+ label = gtk_label_new_with_mnemonic (_("Connect to 802.1X _Protected Wired Network..."));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_container_add (GTK_CONTAINER (menu_item), label);
+ gtk_widget_show_all (menu_item);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+ g_signal_connect (menu_item, "activate", G_CALLBACK (wired_network_item_selected), applet);
+}
+
typedef struct AddNetworksCB
{
@@ -1668,6 +1689,25 @@
}
+static void nma_add_wired_networks (NMApplet *applet, NetworkDevice *device, GtkWidget *menu)
+{
+ GSList *networks;
+ GSList *iter;
+
+ networks = nma_wired_read_networks (applet->gconf_client);
+ for (iter = networks; iter; iter = iter->next) {
+ char *network_id = (char *) iter->data;
+ NMGConfWSO *opt;
+ GtkWidget *w;
+
+ opt = nm_gconf_wso_new_deserialize_gconf (applet->gconf_client, NETWORK_TYPE_WIRED, network_id);
+ w = nma_wired_menu_item_new (applet, device, network_id, opt);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), w);
+ }
+
+ g_slist_free (networks);
+}
+
/*
* nma_has_encrypted_networks_helper
*
@@ -1696,27 +1736,28 @@
static void nma_menu_device_add_networks (GtkWidget *menu, NetworkDevice *dev, NMApplet *applet)
{
gboolean has_encrypted = FALSE;
- AddNetworksCB * add_networks_cb = NULL;
+ AddNetworksCB add_networks_cb;
g_return_if_fail (menu != NULL);
g_return_if_fail (applet != NULL);
g_return_if_fail (dev != NULL);
- if (!network_device_is_wireless (dev) || !applet->wireless_enabled)
+ if (network_device_is_wired (dev)) {
+ if ((network_device_get_capabilities (dev) & NM_DEVICE_CAP_CARRIER_DETECT) && network_device_get_link (dev))
+ nma_add_wired_networks (applet, dev, menu);
+ return;
+ } else if (!network_device_is_wireless (dev) || !applet->wireless_enabled)
return;
/* Check for any security */
network_device_foreach_wireless_network (dev, nma_has_encrypted_networks_helper, &has_encrypted);
- add_networks_cb = g_malloc0 (sizeof (AddNetworksCB));
- add_networks_cb->applet = applet;
- add_networks_cb->has_encrypted = has_encrypted;
- add_networks_cb->menu = menu;
+ add_networks_cb.applet = applet;
+ add_networks_cb.has_encrypted = has_encrypted;
+ add_networks_cb.menu = menu;
/* Add all networks in our network list to the menu */
- network_device_foreach_wireless_network (dev, nma_add_networks_helper, add_networks_cb);
-
- g_free (add_networks_cb);
+ network_device_foreach_wireless_network (dev, nma_add_networks_helper, &add_networks_cb);
}
@@ -1867,6 +1908,7 @@
GSList *element;
gint n_wireless_interfaces = 0;
gint n_wired_interfaces = 0;
+ gint n_wired_interfaces_with_link = 0;
gboolean vpn_available, dialup_available;
g_return_if_fail (menu != NULL);
@@ -1901,6 +1943,9 @@
break;
case DEVICE_TYPE_802_3_ETHERNET:
n_wired_interfaces++;
+ if ((network_device_get_capabilities (dev) & NM_DEVICE_CAP_CARRIER_DETECT) &&
+ network_device_get_link (dev))
+ n_wired_interfaces_with_link++;
break;
default:
break;
@@ -1961,6 +2006,12 @@
nma_menu_add_custom_essid_item (menu, applet);
nma_menu_add_create_network_item (menu, applet);
}
+
+
+ if (n_wired_interfaces_with_link > 0) {
+ nma_menu_add_separator_item (menu);
+ nma_menu_add_wired_network_item (menu, applet);
+ }
}
@@ -2545,7 +2596,9 @@
nma_icons_free (applet);
- nmi_passphrase_dialog_destroy (applet);
+ if (applet->passphrase_dialog)
+ gtk_widget_destroy (applet->passphrase_dialog);
+
#ifdef ENABLE_NOTIFY
if (applet->notification)
{
Modified: branches/network-manager-applet-0-6/src/applet.h
==============================================================================
--- branches/network-manager-applet-0-6/src/applet.h (original)
+++ branches/network-manager-applet-0-6/src/applet.h Wed Jan 30 20:32:27 2008
@@ -48,6 +48,7 @@
* Preference locations
*/
#define GCONF_PATH_WIRELESS_NETWORKS "/system/networking/wireless/networks"
+#define GCONF_PATH_WIRED_NETWORKS "/system/networking/wired/networks"
#define GCONF_PATH_WIRELESS "/system/networking/wireless"
#define GCONF_PATH_VPN_CONNECTIONS "/system/networking/vpn_connections"
#define GCONF_PATH_PREFS "/apps/NetworkManagerApplet"
Modified: branches/network-manager-applet-0-6/src/nm-device.c
==============================================================================
--- branches/network-manager-applet-0-6/src/nm-device.c (original)
+++ branches/network-manager-applet-0-6/src/nm-device.c Wed Jan 30 20:32:27 2008
@@ -53,6 +53,7 @@
gint strength;
gint speed;
GSList * networks;
+ char * active_wired_network;
NMActStage act_stage;
};
@@ -110,6 +111,7 @@
dev->active = src->active;
dev->act_stage = src->act_stage;
dev->strength = src->strength;
+ dev->active_wired_network = src->active_wired_network ? g_strdup (src->active_wired_network) : NULL;
for (elt = src->networks; elt; elt = g_slist_next (elt))
{
@@ -131,11 +133,13 @@
* Increment the reference count of the network device
*
*/
-void network_device_ref (NetworkDevice *dev)
+NetworkDevice *network_device_ref (NetworkDevice *dev)
{
g_return_if_fail (dev != NULL);
dev->refcount++;
+
+ return dev;
}
@@ -166,6 +170,7 @@
g_free (dev->ip4addr);
g_free (dev->primary_dns);
g_free (dev->secondary_dns);
+ g_free (dev->active_wired_network);
memset (dev, 0, sizeof (NetworkDevice));
g_free (dev);
}
@@ -406,6 +411,25 @@
}
+void network_device_set_active_wired_network (NetworkDevice *dev, const char *network_id)
+{
+ g_return_if_fail (dev != NULL);
+ g_return_if_fail (dev->type == DEVICE_TYPE_802_3_ETHERNET);
+
+ g_free (dev->active_wired_network);
+ dev->active_wired_network = network_id ? g_strdup (network_id) : NULL;
+}
+
+
+const char *network_device_get_active_wired_network (NetworkDevice *dev)
+{
+ g_return_val_if_fail (dev != NULL, NULL);
+ g_return_val_if_fail (dev->type == DEVICE_TYPE_802_3_ETHERNET, NULL);
+
+ return dev->active_wired_network;
+}
+
+
/*
* Accessors for driver name
*/
@@ -713,6 +737,9 @@
g_return_if_fail (dev != NULL);
dev->active = active;
+
+ if (!active && network_device_is_wired (dev))
+ network_device_set_active_wired_network (dev, NULL);
}
/*
Modified: branches/network-manager-applet-0-6/src/nm-device.h
==============================================================================
--- branches/network-manager-applet-0-6/src/nm-device.h (original)
+++ branches/network-manager-applet-0-6/src/nm-device.h Wed Jan 30 20:32:27 2008
@@ -34,7 +34,7 @@
NetworkDevice * network_device_new (const char *iface, NMDeviceType type, const char *nm_path);
NetworkDevice * network_device_copy (NetworkDevice *src);
-void network_device_ref (NetworkDevice *dev);
+NetworkDevice * network_device_ref (NetworkDevice *dev);
void network_device_unref (NetworkDevice *dev);
gboolean network_device_is_wired (NetworkDevice *dev);
@@ -57,6 +57,10 @@
guint network_device_get_num_wireless_networks (NetworkDevice *dev);
+void network_device_set_active_wired_network (NetworkDevice *dev, const char *network_id);
+const char * network_device_get_active_wired_network (NetworkDevice *dev);
+
+
const char * network_device_get_address (NetworkDevice *dev);
void network_device_set_address (NetworkDevice *dev, const char *addr);
Modified: branches/network-manager-applet-0-6/src/nm-gconf-wso-leap.c
==============================================================================
--- branches/network-manager-applet-0-6/src/nm-gconf-wso-leap.c (original)
+++ branches/network-manager-applet-0-6/src/nm-gconf-wso-leap.c Wed Jan 30 20:32:27 2008
@@ -72,13 +72,14 @@
NMGConfWSOLEAP *
-nm_gconf_wso_leap_new_deserialize_gconf (GConfClient *client, const char *network, int we_cipher)
+nm_gconf_wso_leap_new_deserialize_gconf (GConfClient *client, NMNetworkType type, const char *network, int we_cipher)
{
NMGConfWSOLEAP * security = NULL;
char * username = NULL;
char * key_mgmt = NULL;
g_return_val_if_fail (client != NULL, NULL);
+ g_return_val_if_fail (type == NETWORK_TYPE_ALLOWED, NULL);
g_return_val_if_fail (network != NULL, NULL);
g_return_val_if_fail ((we_cipher == NM_AUTH_TYPE_LEAP), NULL);
@@ -116,11 +117,13 @@
}
static gboolean
-real_serialize_gconf (NMGConfWSO *instance, GConfClient *client, const char *network)
+real_serialize_gconf (NMGConfWSO *instance, NMNetworkType type, GConfClient *client, const char *network)
{
NMGConfWSOLEAP * self = NM_GCONF_WSO_LEAP (instance);
char * key;
+ g_return_val_if_fail (type == NETWORK_TYPE_ALLOWED, FALSE);
+
key = g_strdup_printf ("%s/%s/%susername", GCONF_PATH_WIRELESS_NETWORKS, network, LEAP_PREFIX);
gconf_client_set_string (client, key, self->priv->username, NULL);
g_free (key);
Modified: branches/network-manager-applet-0-6/src/nm-gconf-wso-leap.h
==============================================================================
--- branches/network-manager-applet-0-6/src/nm-gconf-wso-leap.h (original)
+++ branches/network-manager-applet-0-6/src/nm-gconf-wso-leap.h Wed Jan 30 20:32:27 2008
@@ -55,6 +55,6 @@
NMGConfWSOLEAP * nm_gconf_wso_leap_new_deserialize_dbus (DBusMessageIter *iter, int we_cipher);
-NMGConfWSOLEAP * nm_gconf_wso_leap_new_deserialize_gconf (GConfClient *client, const char *network, int we_cipher);
+NMGConfWSOLEAP * nm_gconf_wso_leap_new_deserialize_gconf (GConfClient *client, NMNetworkType type, const char *network, int we_cipher);
#endif /* NM_GCONF_WSO_LEAP_H */
Modified: branches/network-manager-applet-0-6/src/nm-gconf-wso-wep.c
==============================================================================
--- branches/network-manager-applet-0-6/src/nm-gconf-wso-wep.c (original)
+++ branches/network-manager-applet-0-6/src/nm-gconf-wso-wep.c Wed Jan 30 20:32:27 2008
@@ -67,12 +67,13 @@
}
NMGConfWSOWEP *
-nm_gconf_wso_wep_new_deserialize_gconf (GConfClient *client, const char *network, int we_cipher)
+nm_gconf_wso_wep_new_deserialize_gconf (GConfClient *client, NMNetworkType type, const char *network, int we_cipher)
{
NMGConfWSOWEP * security = NULL;
int auth_algorithm;
g_return_val_if_fail (client != NULL, NULL);
+ g_return_val_if_fail (type == NETWORK_TYPE_ALLOWED, NULL);
g_return_val_if_fail (network != NULL, NULL);
g_return_val_if_fail ((we_cipher == IW_AUTH_CIPHER_WEP40) || (we_cipher == IW_AUTH_CIPHER_WEP104), NULL);
@@ -105,11 +106,13 @@
}
static gboolean
-real_serialize_gconf (NMGConfWSO *instance, GConfClient *client, const char *network)
+real_serialize_gconf (NMGConfWSO *instance, GConfClient *client, NMNetworkType type, const char *network)
{
NMGConfWSOWEP *self = NM_GCONF_WSO_WEP (instance);
char * key;
+ g_return_val_if_fail (type == NETWORK_TYPE_ALLOWED, FALSE);
+
key = g_strdup_printf ("%s/%s/%sauth_algorithm", GCONF_PATH_WIRELESS_NETWORKS, network, WEP_PREFIX);
gconf_client_set_int (client, key, self->priv->auth_algorithm, NULL);
g_free (key);
Modified: branches/network-manager-applet-0-6/src/nm-gconf-wso-wep.h
==============================================================================
--- branches/network-manager-applet-0-6/src/nm-gconf-wso-wep.h (original)
+++ branches/network-manager-applet-0-6/src/nm-gconf-wso-wep.h Wed Jan 30 20:32:27 2008
@@ -58,6 +58,7 @@
int we_cipher);
NMGConfWSOWEP * nm_gconf_wso_wep_new_deserialize_gconf (GConfClient *client,
+ NMNetworkType type,
const char *network,
int we_cipher);
Modified: branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-eap.c
==============================================================================
--- branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-eap.c (original)
+++ branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-eap.c Wed Jan 30 20:32:27 2008
@@ -102,9 +102,10 @@
NMGConfWSOWPA_EAP *
-nm_gconf_wso_wpa_eap_new_deserialize_gconf (GConfClient *client, const char *network, int we_cipher)
+nm_gconf_wso_wpa_eap_new_deserialize_gconf (GConfClient *client, NMNetworkType type, const char *network, int we_cipher)
{
NMGConfWSOWPA_EAP * security = NULL;
+ const char *gconf_prefix;
char * identity = NULL;
char * anon_identity = NULL;
char * private_key_file = NULL;
@@ -120,62 +121,71 @@
g_return_val_if_fail (network != NULL, NULL);
g_return_val_if_fail ((we_cipher == NM_AUTH_TYPE_WPA_EAP), NULL);
+ if (type == NETWORK_TYPE_ALLOWED)
+ gconf_prefix = GCONF_PATH_WIRELESS_NETWORKS;
+ else if (type == NETWORK_TYPE_WIRED)
+ gconf_prefix = GCONF_PATH_WIRED_NETWORKS;
+ else {
+ nm_warning ("Invalid network type");
+ return NULL;
+ }
+
nm_gconf_get_int_helper (client,
- GCONF_PATH_WIRELESS_NETWORKS,
+ gconf_prefix,
WPA_EAP_PREFIX"eap_method",
network,
&eap_method);
nm_gconf_get_int_helper (client,
- GCONF_PATH_WIRELESS_NETWORKS,
+ gconf_prefix,
WPA_EAP_PREFIX"key_type",
network,
&key_type);
nm_gconf_get_int_helper (client,
- GCONF_PATH_WIRELESS_NETWORKS,
+ gconf_prefix,
WPA_EAP_PREFIX"phase2_type",
network,
&phase2_type);
nm_gconf_get_int_helper (client,
- GCONF_PATH_WIRELESS_NETWORKS,
+ gconf_prefix,
WPA_EAP_PREFIX"wpa_version",
network,
&wpa_version);
nm_gconf_get_int_helper (client,
- GCONF_PATH_WIRELESS_NETWORKS,
+ gconf_prefix,
WPA_EAP_PREFIX"key_mgt",
network,
&key_mgmt);
nm_gconf_get_string_helper (client,
- GCONF_PATH_WIRELESS_NETWORKS,
+ gconf_prefix,
WPA_EAP_PREFIX"identity",
network,
&identity);
nm_gconf_get_string_helper (client,
- GCONF_PATH_WIRELESS_NETWORKS,
+ gconf_prefix,
WPA_EAP_PREFIX"anon_identity",
network,
&anon_identity);
nm_gconf_get_string_helper (client,
- GCONF_PATH_WIRELESS_NETWORKS,
+ gconf_prefix,
WPA_EAP_PREFIX"private_key_file",
network,
&private_key_file);
nm_gconf_get_string_helper (client,
- GCONF_PATH_WIRELESS_NETWORKS,
+ gconf_prefix,
WPA_EAP_PREFIX"client_cert_file",
network,
&client_cert_file);
nm_gconf_get_string_helper (client,
- GCONF_PATH_WIRELESS_NETWORKS,
+ gconf_prefix,
WPA_EAP_PREFIX"ca_cert_file",
network,
&ca_cert_file);
@@ -225,62 +235,72 @@
}
static gboolean
-real_serialize_gconf (NMGConfWSO *instance, GConfClient *client, const char *network)
+real_serialize_gconf (NMGConfWSO *instance, GConfClient *client, NMNetworkType type, const char *network)
{
NMGConfWSOWPA_EAP * self = NM_GCONF_WSO_WPA_EAP (instance);
+ const char *gconf_prefix;
char * key;
- key = g_strdup_printf ("%s/%s/%seap_method", GCONF_PATH_WIRELESS_NETWORKS, network, WPA_EAP_PREFIX);
+ if (type == NETWORK_TYPE_ALLOWED)
+ gconf_prefix = GCONF_PATH_WIRELESS_NETWORKS;
+ else if (type == NETWORK_TYPE_WIRED)
+ gconf_prefix = GCONF_PATH_WIRED_NETWORKS;
+ else {
+ nm_warning ("Invalid network type");
+ return FALSE;
+ }
+
+ key = g_strdup_printf ("%s/%s/%seap_method", gconf_prefix, network, WPA_EAP_PREFIX);
gconf_client_set_int (client, key, self->priv->eap_method, NULL);
g_free (key);
- key = g_strdup_printf ("%s/%s/%skey_type", GCONF_PATH_WIRELESS_NETWORKS, network, WPA_EAP_PREFIX);
+ key = g_strdup_printf ("%s/%s/%skey_type", gconf_prefix, network, WPA_EAP_PREFIX);
gconf_client_set_int (client, key, self->priv->key_type, NULL);
g_free (key);
- key = g_strdup_printf ("%s/%s/%sphase2_type", GCONF_PATH_WIRELESS_NETWORKS, network, WPA_EAP_PREFIX);
+ key = g_strdup_printf ("%s/%s/%sphase2_type", gconf_prefix, network, WPA_EAP_PREFIX);
gconf_client_set_int (client, key, self->priv->phase2_type, NULL);
g_free (key);
- key = g_strdup_printf ("%s/%s/%swpa_version", GCONF_PATH_WIRELESS_NETWORKS, network, WPA_EAP_PREFIX);
+ key = g_strdup_printf ("%s/%s/%swpa_version", gconf_prefix, network, WPA_EAP_PREFIX);
gconf_client_set_int (client, key, self->priv->wpa_version, NULL);
g_free (key);
- key = g_strdup_printf ("%s/%s/%skey_mgt", GCONF_PATH_WIRELESS_NETWORKS, network, WPA_EAP_PREFIX);
+ key = g_strdup_printf ("%s/%s/%skey_mgt", gconf_prefix, network, WPA_EAP_PREFIX);
gconf_client_set_int (client, key, self->priv->key_mgmt, NULL);
g_free (key);
if (self->priv->identity && strlen (self->priv->identity) > 0)
{
- key = g_strdup_printf ("%s/%s/%sidentity", GCONF_PATH_WIRELESS_NETWORKS, network, WPA_EAP_PREFIX);
+ key = g_strdup_printf ("%s/%s/%sidentity", gconf_prefix, network, WPA_EAP_PREFIX);
gconf_client_set_string (client, key, self->priv->identity, NULL);
g_free (key);
}
if (self->priv->anon_identity && strlen (self->priv->anon_identity) > 0)
{
- key = g_strdup_printf ("%s/%s/%sanon_identity", GCONF_PATH_WIRELESS_NETWORKS, network, WPA_EAP_PREFIX);
+ key = g_strdup_printf ("%s/%s/%sanon_identity", gconf_prefix, network, WPA_EAP_PREFIX);
gconf_client_set_string (client, key, self->priv->anon_identity, NULL);
g_free (key);
}
if (self->priv->private_key_file && strlen (self->priv->private_key_file) > 0)
{
- key = g_strdup_printf ("%s/%s/%sprivate_key_file", GCONF_PATH_WIRELESS_NETWORKS, network, WPA_EAP_PREFIX);
+ key = g_strdup_printf ("%s/%s/%sprivate_key_file", gconf_prefix, network, WPA_EAP_PREFIX);
gconf_client_set_string (client, key, self->priv->private_key_file, NULL);
g_free (key);
}
if (self->priv->client_cert_file && strlen (self->priv->client_cert_file) > 0)
{
- key = g_strdup_printf ("%s/%s/%sclient_cert_file", GCONF_PATH_WIRELESS_NETWORKS, network, WPA_EAP_PREFIX);
+ key = g_strdup_printf ("%s/%s/%sclient_cert_file", gconf_prefix, network, WPA_EAP_PREFIX);
gconf_client_set_string (client, key, self->priv->client_cert_file, NULL);
g_free (key);
}
if (self->priv->ca_cert_file && strlen (self->priv->ca_cert_file) > 0)
{
- key = g_strdup_printf ("%s/%s/%sca_cert_file", GCONF_PATH_WIRELESS_NETWORKS, network, WPA_EAP_PREFIX);
+ key = g_strdup_printf ("%s/%s/%sca_cert_file", gconf_prefix, network, WPA_EAP_PREFIX);
gconf_client_set_string (client, key, self->priv->ca_cert_file, NULL);
g_free (key);
}
Modified: branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-eap.h
==============================================================================
--- branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-eap.h (original)
+++ branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-eap.h Wed Jan 30 20:32:27 2008
@@ -57,6 +57,6 @@
NMGConfWSOWPA_EAP * nm_gconf_wso_wpa_eap_new_deserialize_dbus (DBusMessageIter *iter, int we_cipher);
-NMGConfWSOWPA_EAP * nm_gconf_wso_wpa_eap_new_deserialize_gconf (GConfClient *client, const char *network, int we_cipher);
+NMGConfWSOWPA_EAP * nm_gconf_wso_wpa_eap_new_deserialize_gconf (GConfClient *client, NMNetworkType type, const char *network, int we_cipher);
#endif /* NM_GCONF_WSO_WPA_EAP_H */
Modified: branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-psk.c
==============================================================================
--- branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-psk.c (original)
+++ branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-psk.c Wed Jan 30 20:32:27 2008
@@ -68,13 +68,14 @@
}
NMGConfWSOWPA_PSK *
-nm_gconf_wso_wpa_psk_new_deserialize_gconf (GConfClient *client, const char *network, int we_cipher)
+nm_gconf_wso_wpa_psk_new_deserialize_gconf (GConfClient *client, NMNetworkType type, const char *network, int we_cipher)
{
NMGConfWSOWPA_PSK * security = NULL;
int wpa_version;
int key_mgt;
g_return_val_if_fail (client != NULL, NULL);
+ g_return_val_if_fail (type == NETWORK_TYPE_ALLOWED, NULL);
g_return_val_if_fail (network != NULL, NULL);
g_return_val_if_fail ((we_cipher == NM_AUTH_TYPE_WPA_PSK_AUTO || we_cipher == IW_AUTH_CIPHER_TKIP) || (we_cipher == IW_AUTH_CIPHER_CCMP), NULL);
@@ -116,11 +117,13 @@
}
static gboolean
-real_serialize_gconf (NMGConfWSO *instance, GConfClient *client, const char *network)
+real_serialize_gconf (NMGConfWSO *instance, GConfClient *client, NMNetworkType type, const char *network)
{
NMGConfWSOWPA_PSK * self = NM_GCONF_WSO_WPA_PSK (instance);
char * key;
+ g_return_val_if_fail (type == NETWORK_TYPE_ALLOWED, FALSE);
+
key = g_strdup_printf ("%s/%s/%swpa_version", GCONF_PATH_WIRELESS_NETWORKS, network, WPA_PSK_PREFIX);
gconf_client_set_int (client, key, self->priv->wpa_version, NULL);
g_free (key);
Modified: branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-psk.h
==============================================================================
--- branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-psk.h (original)
+++ branches/network-manager-applet-0-6/src/nm-gconf-wso-wpa-psk.h Wed Jan 30 20:32:27 2008
@@ -56,6 +56,6 @@
NMGConfWSOWPA_PSK * nm_gconf_wso_wpa_psk_new_deserialize_dbus (DBusMessageIter *iter, int we_cipher);
-NMGConfWSOWPA_PSK * nm_gconf_wso_wpa_psk_new_deserialize_gconf (GConfClient *client, const char *network, int we_cipher);
+NMGConfWSOWPA_PSK * nm_gconf_wso_wpa_psk_new_deserialize_gconf (GConfClient *client, NMNetworkType type, const char *network, int we_cipher);
#endif /* NM_GCONF_WSO_WPA_PSK_H */
Modified: branches/network-manager-applet-0-6/src/nm-gconf-wso.c
==============================================================================
--- branches/network-manager-applet-0-6/src/nm-gconf-wso.c (original)
+++ branches/network-manager-applet-0-6/src/nm-gconf-wso.c Wed Jan 30 20:32:27 2008
@@ -115,15 +115,27 @@
NMGConfWSO *
nm_gconf_wso_new_deserialize_gconf (GConfClient *client,
+ NMNetworkType type,
const char *network)
{
NMGConfWSO * security = NULL;
int we_cipher;
+ const char *gconf_prefix;
g_return_val_if_fail (client != NULL, NULL);
g_return_val_if_fail (network != NULL, NULL);
+
+ if (type == NETWORK_TYPE_ALLOWED)
+ gconf_prefix = GCONF_PATH_WIRELESS_NETWORKS;
+ else if (type == NETWORK_TYPE_WIRED)
+ gconf_prefix = GCONF_PATH_WIRED_NETWORKS;
+ else {
+ nm_warning ("Invalid network type");
+ return FALSE;
+ }
+
if (!nm_gconf_get_int_helper (client,
- GCONF_PATH_WIRELESS_NETWORKS,
+ gconf_prefix,
"we_cipher",
network,
&we_cipher))
@@ -137,21 +149,21 @@
{
case IW_AUTH_CIPHER_WEP40:
case IW_AUTH_CIPHER_WEP104:
- security = NM_GCONF_WSO (nm_gconf_wso_wep_new_deserialize_gconf (client, network, we_cipher));
+ security = NM_GCONF_WSO (nm_gconf_wso_wep_new_deserialize_gconf (client, type, network, we_cipher));
break;
case NM_AUTH_TYPE_WPA_PSK_AUTO:
case IW_AUTH_CIPHER_TKIP:
case IW_AUTH_CIPHER_CCMP:
- security = NM_GCONF_WSO (nm_gconf_wso_wpa_psk_new_deserialize_gconf (client, network, we_cipher));
+ security = NM_GCONF_WSO (nm_gconf_wso_wpa_psk_new_deserialize_gconf (client, type, network, we_cipher));
break;
case NM_AUTH_TYPE_WPA_EAP:
- security = NM_GCONF_WSO (nm_gconf_wso_wpa_eap_new_deserialize_gconf (client, network, we_cipher));
+ security = NM_GCONF_WSO (nm_gconf_wso_wpa_eap_new_deserialize_gconf (client, type, network, we_cipher));
break;
case NM_AUTH_TYPE_LEAP:
- security = NM_GCONF_WSO (nm_gconf_wso_leap_new_deserialize_gconf (client, network, we_cipher));
+ security = NM_GCONF_WSO (nm_gconf_wso_leap_new_deserialize_gconf (client, type, network, we_cipher));
break;
default:
@@ -236,6 +248,7 @@
static int
real_serialize_gconf (NMGConfWSO *self,
GConfClient *client,
+ NMNetworkType type,
const char *network)
{
/* Nothing to do */
@@ -280,9 +293,11 @@
gboolean
nm_gconf_wso_serialize_gconf (NMGConfWSO *self,
GConfClient *client,
+ NMNetworkType type,
const char *network)
{
char * key;
+ const char *gconf_prefix;
g_return_val_if_fail (self != NULL, FALSE);
g_return_val_if_fail (client != NULL, FALSE);
@@ -291,13 +306,22 @@
if (self->priv->dispose_has_run)
return FALSE;
- key = g_strdup_printf ("%s/%s/we_cipher", GCONF_PATH_WIRELESS_NETWORKS, network);
+ if (type == NETWORK_TYPE_ALLOWED)
+ gconf_prefix = GCONF_PATH_WIRELESS_NETWORKS;
+ else if (type == NETWORK_TYPE_WIRED)
+ gconf_prefix = GCONF_PATH_WIRED_NETWORKS;
+ else {
+ nm_warning ("Invalid network type");
+ return FALSE;
+ }
+
+ key = g_strdup_printf ("%s/%s/we_cipher", gconf_prefix, network);
gconf_client_set_int (client, key, self->priv->we_cipher, NULL);
g_free (key);
/* Encryption key doesn't get serialized since its stored in the keyring */
- return NM_GCONF_WSO_GET_CLASS (self)->serialize_gconf_func (self, client, network);
+ return NM_GCONF_WSO_GET_CLASS (self)->serialize_gconf_func (self, client, type, network);
}
gboolean
Modified: branches/network-manager-applet-0-6/src/nm-gconf-wso.h
==============================================================================
--- branches/network-manager-applet-0-6/src/nm-gconf-wso.h (original)
+++ branches/network-manager-applet-0-6/src/nm-gconf-wso.h Wed Jan 30 20:32:27 2008
@@ -1,3 +1,5 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+
/* NetworkManager -- Network link manager
*
* Dan Williams <dcbw redhat com>
@@ -26,6 +28,7 @@
#include <gconf/gconf-client.h>
#include <dbus/dbus.h>
+#include <NetworkManager.h>
#include "wireless-security-option.h"
#define NM_TYPE_GCONF_WSO (nm_gconf_wso_get_type ())
@@ -56,7 +59,10 @@
/* class members */
gboolean (*serialize_dbus_func) (NMGConfWSO *self, DBusMessageIter *iter);
- gboolean (*serialize_gconf_func) (NMGConfWSO *self, GConfClient *client, const char *network);
+ gboolean (*serialize_gconf_func) (NMGConfWSO *self,
+ GConfClient *client,
+ NMNetworkType type,
+ const char *network);
gboolean (*read_secrets_func) (NMGConfWSO *self, const char *ssid);
@@ -68,7 +74,9 @@
NMGConfWSO * nm_gconf_wso_new_deserialize_dbus (DBusMessageIter *iter);
-NMGConfWSO * nm_gconf_wso_new_deserialize_gconf (GConfClient *client, const char *network);
+NMGConfWSO * nm_gconf_wso_new_deserialize_gconf (GConfClient *client,
+ NMNetworkType type,
+ const char *network);
NMGConfWSO * nm_gconf_wso_new_from_wso (WirelessSecurityOption *opt, const char *ssid);
@@ -80,7 +88,10 @@
gboolean nm_gconf_wso_serialize_dbus (NMGConfWSO *self, DBusMessageIter *iter);
-gboolean nm_gconf_wso_serialize_gconf (NMGConfWSO *self, GConfClient *client, const char *network);
+gboolean nm_gconf_wso_serialize_gconf (NMGConfWSO *self,
+ GConfClient *client,
+ NMNetworkType type,
+ const char *network);
gboolean nm_gconf_wso_read_secrets (NMGConfWSO *self, const char *ssid);
Added: branches/network-manager-applet-0-6/src/nm-wired-dialog.c
==============================================================================
--- (empty file)
+++ branches/network-manager-applet-0-6/src/nm-wired-dialog.c Wed Jan 30 20:32:27 2008
@@ -0,0 +1,375 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+
+#include <config.h>
+#include <string.h>
+#include <glade/glade.h>
+#include <glib/gi18n.h>
+
+#include "nm-wired-dialog.h"
+#include "applet-dbus-info.h"
+#include "applet-dbus-devices.h"
+#include "nm-utils.h"
+#include "NetworkManager.h"
+#include "wso-wpa-eap.h"
+
+
+#define WIRED_DIALOG_INFO_TAG "wired-dialog-info-tag"
+
+typedef struct {
+ NMApplet *applet;
+ GladeXML *xml;
+ WirelessSecurityOption *opt;
+
+ char *network_id;
+ DBusMessage *message;
+} WiredDialogInfo;
+
+static void
+wired_dialog_info_destroy (gpointer data)
+{
+ WiredDialogInfo *info = (WiredDialogInfo *) data;
+
+ g_object_unref (info->xml);
+ wso_free (info->opt);
+ g_free (info->network_id);
+
+ if (info->message)
+ dbus_message_unref (info->message);
+
+ g_free (data);
+}
+
+static void
+wired_dialog_destroyed (gpointer data, GObject *destroyed_object)
+{
+ NMApplet *applet = (NMApplet *) data;
+
+ applet->passphrase_dialog = NULL;
+}
+
+static void
+create_response (GtkDialog *dialog, gint response, gpointer data)
+{
+ WiredDialogInfo *info;
+
+ info = (WiredDialogInfo *) g_object_get_data (G_OBJECT (dialog), WIRED_DIALOG_INFO_TAG);
+ g_assert (info);
+
+ if (response == GTK_RESPONSE_OK) {
+ const char *network_id;
+ GSList *iter;
+ NetworkDevice *dev = NULL;
+
+ for (iter = info->applet->device_list; iter; iter = iter->next) {
+ dev = (NetworkDevice *) iter->data;
+ if (network_device_is_wired (dev) && network_device_get_link (dev))
+ break;
+
+ dev = NULL;
+ }
+
+ g_assert (dev);
+
+ network_id = gtk_entry_get_text (GTK_ENTRY (glade_xml_get_widget (info->xml, "network_name_entry")));
+ nma_dbus_set_device (info->applet->connection, dev, network_id, info->opt);
+ }
+
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+}
+
+static void
+ask_password_response (GtkDialog *dialog, gint response, gpointer data)
+{
+ WiredDialogInfo *info;
+ NMGConfWSO *gconf_wso;
+
+ info = (WiredDialogInfo *) g_object_get_data (G_OBJECT (dialog), WIRED_DIALOG_INFO_TAG);
+ g_assert (info);
+
+ if (response != GTK_RESPONSE_OK) {
+ DBusMessage *reply;
+
+ reply = dbus_message_new_error (info->message, NMI_DBUS_USER_KEY_CANCELED_ERROR, "Request was cancelled.");
+ dbus_connection_send (info->applet->connection, reply, NULL);
+ goto out;
+ }
+
+ gconf_wso = nm_gconf_wso_new_from_wso (info->opt, info->network_id);
+
+ /* Return new security information to NM */
+ nmi_dbus_return_user_key (info->applet->connection, info->message, gconf_wso);
+ g_object_unref (gconf_wso);
+
+out:
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+}
+
+static void
+wired_dialog_modified (GtkWidget *widget, gpointer user_data)
+{
+ WiredDialogInfo *info = (WiredDialogInfo *) user_data;
+ const char *network_id;
+ gboolean enabled = FALSE;
+
+ network_id = gtk_entry_get_text (GTK_ENTRY (glade_xml_get_widget (info->xml, "network_name_entry")));
+ if (network_id && strlen (network_id) > 0)
+ enabled = wso_validate_input (info->opt, network_id, NULL);
+
+ gtk_widget_set_sensitive (glade_xml_get_widget (info->xml, "ok_button"), enabled);
+}
+
+static GtkDialog *
+wired_dialog_init (NMApplet *applet, const char *network_id, DBusMessage *message)
+{
+ GladeXML *xml;
+ GtkDialog *dialog;
+ GtkWidget *w;
+ char *label;
+ GtkWidget *wso_widget;
+ WiredDialogInfo *info;
+
+ xml = glade_xml_new (applet->glade_file, "other_network_dialog", NULL);
+ if (!xml) {
+ nma_schedule_warning_dialog (applet, _("The NetworkManager Applet could not find some required resources (the glade file was not found)."));
+ return NULL;
+ }
+
+ dialog = GTK_DIALOG (glade_xml_get_widget (xml, "other_network_dialog"));
+ if (!dialog) {
+ g_object_unref (xml);
+ return NULL;
+ }
+
+ gtk_window_set_title (GTK_WINDOW (dialog), _("Connect to 802.1X protected wired network"));
+ gtk_widget_hide (glade_xml_get_widget (xml, "security_combo_label"));
+ gtk_widget_hide (glade_xml_get_widget (xml, "security_combo"));
+
+ /* FIXME: For now, hide the device selector and use the first wired device */
+ gtk_widget_hide (glade_xml_get_widget (xml, "wireless_adapter_label"));
+ gtk_widget_hide (glade_xml_get_widget (xml, "wireless_adapter_combo"));
+
+ if (network_id) {
+ label = g_strdup_printf (_("<span size=\"larger\" weight=\"bold\">Connect to a 802.1X protected wired network</span>\n\n"
+ "A passphrase or encryption key is required to access the network '%s'."), network_id);
+ gtk_label_set_markup (GTK_LABEL (glade_xml_get_widget (xml, "caption_label")), label);
+ g_free (label);
+ } else {
+ label = _("<span size=\"larger\" weight=\"bold\">Connect to a 802.1X protected wired network</span>\n\n"
+ "Enter the name and security settings of the network you wish to join.");
+ gtk_label_set_markup (GTK_LABEL (glade_xml_get_widget (xml, "caption_label")), label);
+ }
+
+ info = g_new (WiredDialogInfo, 1);
+ info->applet = applet;
+ info->xml = xml;
+ info->opt = wso_wpa_eap_new (applet->glade_file, NM_802_11_CAP_KEY_MGMT_802_1X, FALSE);
+ info->network_id = network_id ? g_strdup (network_id) : NULL;
+ info->message = message ? dbus_message_ref (message) : NULL;
+
+ g_object_set_data_full (G_OBJECT (dialog), WIRED_DIALOG_INFO_TAG,
+ info, wired_dialog_info_destroy);
+
+ wso_widget = wso_get_widget (info->opt, GTK_SIGNAL_FUNC (wired_dialog_modified), info);
+ if (wso_widget) {
+ gtk_container_add (GTK_CONTAINER (glade_xml_get_widget (xml, "wireless_security_vbox")), wso_widget);
+ wso_wpa_eap_set_wired (info->opt);
+ }
+
+ w = glade_xml_get_widget (xml, "ok_button");
+ gtk_widget_grab_default (w);
+ gtk_widget_set_sensitive (w, FALSE);
+
+#if GTK_CHECK_VERSION(2,6,0)
+ {
+ GtkWidget *connect_image = gtk_image_new_from_stock (GTK_STOCK_CONNECT, GTK_ICON_SIZE_BUTTON);
+ gtk_button_set_image (GTK_BUTTON (w), connect_image);
+ }
+#endif
+
+ w = glade_xml_get_widget (xml, "network_name_entry");
+ if (network_id)
+ gtk_entry_set_text (GTK_ENTRY (w), network_id);
+
+ gtk_widget_grab_focus (w);
+ g_signal_connect (w, "changed", G_CALLBACK (wired_dialog_modified), info);
+
+ return dialog;
+}
+
+void
+nma_wired_dialog_create (NMApplet *applet)
+{
+ GtkWidget *dialog;
+
+ g_return_if_fail (applet != NULL);
+
+ dialog = GTK_WIDGET (wired_dialog_init (applet, NULL, NULL));
+ if (!dialog)
+ return;
+
+ g_signal_connect (dialog, "response", G_CALLBACK (create_response), NULL);
+
+ gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ALWAYS);
+ gtk_widget_realize (GTK_WIDGET (dialog));
+ gdk_x11_window_set_user_time (dialog->window, gdk_x11_get_server_time (dialog->window));
+ gtk_window_present (GTK_WINDOW (dialog));
+}
+
+void
+nma_wired_dialog_ask_password (NMApplet *applet,
+ const char *network_id,
+ DBusMessage *message)
+{
+ GtkWidget *dialog;
+
+ g_return_if_fail (applet != NULL);
+
+ if (applet->passphrase_dialog)
+ gtk_widget_destroy (applet->passphrase_dialog);
+
+ dialog = GTK_WIDGET (wired_dialog_init (applet, network_id, message));
+ if (!dialog)
+ return;
+
+ applet->passphrase_dialog = dialog;
+ g_object_weak_ref (G_OBJECT (dialog), wired_dialog_destroyed, applet);
+
+ g_signal_connect (dialog, "response", G_CALLBACK (ask_password_response), NULL);
+
+ gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ALWAYS);
+ gtk_widget_realize (dialog);
+ gdk_x11_window_set_user_time (dialog->window, gdk_x11_get_server_time (dialog->window));
+ gtk_window_present (GTK_WINDOW (dialog));
+}
+
+/*****************************************************************************/
+
+GSList *
+nma_wired_read_networks (GConfClient *gconf_client)
+{
+ g_return_val_if_fail (gconf_client != NULL, NULL);
+
+ GSList *networks = NULL;
+ GSList *dir_list;
+ GSList *iter;
+
+ dir_list = gconf_client_all_dirs (gconf_client, GCONF_PATH_WIRED_NETWORKS, NULL);
+
+ for (iter = dir_list; iter; iter = iter->next) {
+ char *dir = (char *) iter->data;
+ char key[100];
+ GConfValue *value;
+
+ g_snprintf (&key[0], 99, "%s/essid", dir);
+ if ((value = gconf_client_get (gconf_client, key, NULL))) {
+ if (value->type == GCONF_VALUE_STRING)
+ networks = g_slist_prepend (networks, g_strdup (gconf_value_get_string (value)));
+
+ gconf_value_free (value);
+ }
+ g_free (dir);
+ }
+
+ g_slist_free (dir_list);
+
+ networks = g_slist_sort (networks, (GCompareFunc) strcmp);
+
+ return networks;
+}
+
+/*****************************************************************************/
+
+typedef struct {
+ NMApplet *applet;
+ NetworkDevice *device;
+ char *network_id;
+ NMGConfWSO *opt;
+} WiredMenuItemInfo;
+
+static void
+wired_menu_item_activate (GtkMenuItem *item, gpointer user_data)
+{
+ WiredMenuItemInfo *info = (WiredMenuItemInfo *) user_data;
+
+ g_print ("Activate!\n");
+ nma_dbus_set_device_with_gconf_wso (info->applet->connection, info->device, info->network_id, info->opt);
+}
+
+static void
+wired_menu_item_info_destroy (gpointer data, GObject *destroyed_object)
+{
+ WiredMenuItemInfo *info = (WiredMenuItemInfo *) data;
+
+ g_free (info->network_id);
+ g_object_unref (info->opt);
+ g_free (info);
+}
+
+static GtkWidget *
+wired_menu_item_get_image ()
+{
+ GtkWidget *image;
+ GtkIconTheme *icon_theme;
+ GdkPixbuf *pixbuf = NULL;
+
+ icon_theme = gtk_icon_theme_get_default ();
+
+ if (gtk_icon_theme_has_icon (icon_theme, "network-wireless-encrypted"))
+ pixbuf = gtk_icon_theme_load_icon (icon_theme, "network-wireless-encrypted", GTK_ICON_SIZE_MENU, 0, NULL);
+ if (!pixbuf)
+ pixbuf = gtk_icon_theme_load_icon (icon_theme, "gnome-lockscreen", GTK_ICON_SIZE_MENU, 0, NULL);
+
+ image = gtk_image_new_from_pixbuf (pixbuf);
+ g_object_unref (pixbuf);
+
+ return image;
+}
+
+/* Takes over the ownership of network_id and wireless option. */
+GtkWidget *
+nma_wired_menu_item_new (NMApplet *applet,
+ NetworkDevice *device,
+ char *network_id,
+ NMGConfWSO *opt)
+{
+ GtkWidget *menu_item;
+ GtkWidget *hbox;
+ GtkWidget *w;
+ WiredMenuItemInfo *info;
+
+ g_return_val_if_fail (applet != NULL, NULL);
+ g_return_val_if_fail (device != NULL, NULL);
+ g_return_val_if_fail (network_id != NULL, NULL);
+ g_return_val_if_fail (opt != NULL, NULL);
+
+ menu_item = gtk_check_menu_item_new ();
+ gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (menu_item), TRUE);
+
+ hbox = gtk_hbox_new (FALSE, 6);
+ gtk_container_add (GTK_CONTAINER (menu_item), hbox);
+
+ w = gtk_label_new (network_id);
+ gtk_misc_set_alignment (GTK_MISC (w), 0.0, 0.5);
+ gtk_box_pack_start_defaults (GTK_BOX (hbox), w);
+
+ w = wired_menu_item_get_image ();
+ gtk_box_pack_end (GTK_BOX (hbox), w, FALSE, FALSE, 0);
+
+ if (network_device_get_active (device)) {
+ const char *active_network_id = network_device_get_active_wired_network (device);
+
+ if (active_network_id && !strcmp (active_network_id, network_id))
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item), TRUE);
+ }
+
+ info = g_new (WiredMenuItemInfo, 1);
+ info->applet = applet;
+ info->device = device;
+ info->network_id = network_id;
+ info->opt = opt;
+
+ g_object_weak_ref (G_OBJECT (menu_item), wired_menu_item_info_destroy, info);
+ g_signal_connect (menu_item, "activate", G_CALLBACK (wired_menu_item_activate), info);
+
+ return menu_item;
+}
Added: branches/network-manager-applet-0-6/src/nm-wired-dialog.h
==============================================================================
--- (empty file)
+++ branches/network-manager-applet-0-6/src/nm-wired-dialog.h Wed Jan 30 20:32:27 2008
@@ -0,0 +1,21 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+
+#ifndef NM_WIRED_DIALOG_H
+#define NM_WIRED_DIALOG_H 1
+
+#include "applet.h"
+#include "nm-gconf-wso.h"
+
+void nma_wired_dialog_create (NMApplet *applet);
+void nma_wired_dialog_ask_password (NMApplet *applet,
+ const char *network_id,
+ DBusMessage *message);
+
+GSList *nma_wired_read_networks (GConfClient *gconf_client);
+
+GtkWidget *nma_wired_menu_item_new (NMApplet *applet,
+ NetworkDevice *device,
+ char *network_id,
+ NMGConfWSO *opt);
+
+#endif /* NM_WIRED_DIALOG_H */
Modified: branches/network-manager-applet-0-6/src/other-network-dialog.c
==============================================================================
--- branches/network-manager-applet-0-6/src/other-network-dialog.c (original)
+++ branches/network-manager-applet-0-6/src/other-network-dialog.c Wed Jan 30 20:32:27 2008
@@ -1,3 +1,5 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+
/* NetworkManager Wireless Applet -- Display wireless access points and allow user control
*
* Dan Williams <dcbw redhat com>
Modified: branches/network-manager-applet-0-6/src/passphrase-dialog.c
==============================================================================
--- branches/network-manager-applet-0-6/src/passphrase-dialog.c (original)
+++ branches/network-manager-applet-0-6/src/passphrase-dialog.c Wed Jan 30 20:32:27 2008
@@ -1,3 +1,5 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+
/* NetworkManager Wireless Applet -- Display wireless access points and allow user control
*
* Dan Williams <dcbw redhat com>
@@ -37,38 +39,46 @@
#include "NetworkManager.h"
#include "wireless-security-manager.h"
-static GladeXML *get_dialog_xml (GtkWidget *dialog)
+typedef struct {
+ NMApplet *applet;
+ DBusMessage *message;
+ GladeXML *xml;
+ NetworkDevice *device;
+ WirelessNetwork *net;
+ WirelessSecurityManager *wsm;
+} PassphraseDialogInfo;
+
+static void
+passphrase_dialog_destroy (gpointer data, GObject *destroyed_object)
{
- g_return_val_if_fail (dialog != NULL, NULL);
+ PassphraseDialogInfo *info = (PassphraseDialogInfo *) data;
+
+ info->applet->passphrase_dialog = NULL;
+
+ network_device_unref (info->device);
+ wireless_network_unref (info->net);
+ dbus_message_unref (info->message);
+ wsm_free (info->wsm);
+ g_object_unref (info->xml);
- return (GladeXML *) g_object_get_data (G_OBJECT (dialog), "glade-xml");
+ g_free (info);
}
-static void update_button_cb (GtkWidget *unused, GtkDialog *dialog)
+static void update_button_cb (GtkWidget *unused, PassphraseDialogInfo *info)
{
gboolean enable = FALSE;
const char * ssid = NULL;
GtkWidget * button;
- GladeXML * xml;
- WirelessSecurityManager * wsm;
GtkComboBox * security_combo;
- WirelessNetwork *net;
-
- g_return_if_fail (dialog != NULL);
- xml = get_dialog_xml (GTK_WIDGET (dialog));
- g_return_if_fail (xml != NULL);
- wsm = (WirelessSecurityManager *) g_object_get_data (G_OBJECT (dialog), "wireless-security-manager");
- g_return_if_fail (wsm != NULL);
- if ((net = g_object_get_data (G_OBJECT (dialog), "network")) &&
- (ssid = wireless_network_get_essid (net)))
+ if ((ssid = wireless_network_get_essid (info->net)) != NULL)
{
/* Validate the wireless security choices */
- security_combo = GTK_COMBO_BOX (glade_xml_get_widget (xml, "security_combo"));
- enable = wsm_validate_active (wsm, security_combo, ssid);
+ security_combo = GTK_COMBO_BOX (glade_xml_get_widget (info->xml, "security_combo"));
+ enable = wsm_validate_active (info->wsm, security_combo, ssid);
}
- button = glade_xml_get_widget (xml, "login_button");
+ button = glade_xml_get_widget (info->xml, "login_button");
gtk_widget_set_sensitive (button, enable);
}
@@ -81,22 +91,13 @@
*/
static void nmi_passphrase_dialog_security_combo_changed (GtkWidget *security_combo, gpointer user_data)
{
- GtkDialog * dialog = (GtkDialog *) user_data;
- WirelessSecurityManager * wsm;
+ PassphraseDialogInfo *info = (PassphraseDialogInfo *) user_data;
GtkWidget * wso_widget;
- GladeXML * xml;
GtkWidget * vbox;
GList * children;
GList * elt;
- g_return_if_fail (dialog != NULL);
- xml = get_dialog_xml (GTK_WIDGET (dialog));
- g_return_if_fail (xml != NULL);
-
- wsm = g_object_get_data (G_OBJECT (dialog), "wireless-security-manager");
- g_return_if_fail (wsm != NULL);
-
- vbox = GTK_WIDGET (glade_xml_get_widget (xml, "wireless_security_vbox"));
+ vbox = GTK_WIDGET (glade_xml_get_widget (info->xml, "wireless_security_vbox"));
/* Remove any previous wireless security widgets */
children = gtk_container_get_children (GTK_CONTAINER (vbox));
@@ -111,11 +112,12 @@
g_list_free (children);
/* Determine and add the correct wireless security widget to the dialog */
- wso_widget = wsm_get_widget_for_active (wsm, GTK_COMBO_BOX (security_combo), GTK_SIGNAL_FUNC (update_button_cb), dialog);
+ wso_widget = wsm_get_widget_for_active (info->wsm, GTK_COMBO_BOX (security_combo),
+ GTK_SIGNAL_FUNC (update_button_cb), info);
if (wso_widget)
gtk_container_add (GTK_CONTAINER (vbox), wso_widget);
- update_button_cb (NULL, dialog);
+ update_button_cb (NULL, info);
}
@@ -132,61 +134,41 @@
gint response,
gpointer user_data)
{
- NMApplet * applet;
- GladeXML * xml;
+ PassphraseDialogInfo *info = (PassphraseDialogInfo *) user_data;
GtkComboBox * security_combo;
- DBusMessage * message;
- WirelessSecurityManager *wsm;
WirelessSecurityOption * opt;
- WirelessNetwork * net;
NMGConfWSO * gconf_wso;
- message = (DBusMessage *) g_object_get_data (G_OBJECT (dialog), "dbus-message");
- g_assert (message);
-
- applet = (NMApplet *) g_object_get_data (G_OBJECT (dialog), "applet");
- g_assert (applet);
-
if (response != GTK_RESPONSE_OK)
{
DBusMessage * reply;
- reply = dbus_message_new_error (message, NMI_DBUS_USER_KEY_CANCELED_ERROR, "Request was cancelled.");
- dbus_connection_send (applet->connection, reply, NULL);
+ reply = dbus_message_new_error (info->message, NMI_DBUS_USER_KEY_CANCELED_ERROR, "Request was cancelled.");
+ dbus_connection_send (info->applet->connection, reply, NULL);
goto out;
}
- xml = get_dialog_xml (dialog);
- g_assert (xml);
-
- wsm = g_object_get_data (G_OBJECT (dialog), "wireless-security-manager");
- g_assert (wsm);
-
- security_combo = GTK_COMBO_BOX (glade_xml_get_widget (xml, "security_combo"));
- opt = wsm_get_option_for_active (wsm, security_combo);
+ security_combo = GTK_COMBO_BOX (glade_xml_get_widget (info->xml, "security_combo"));
+ opt = wsm_get_option_for_active (info->wsm, security_combo);
- net = (WirelessNetwork *) g_object_get_data (G_OBJECT (dialog), "network");
- g_assert (net);
- gconf_wso = nm_gconf_wso_new_from_wso (opt, wireless_network_get_essid (net));
+ gconf_wso = nm_gconf_wso_new_from_wso (opt, wireless_network_get_essid (info->net));
/* Return new security information to NM */
- nmi_dbus_return_user_key (applet->connection, message, gconf_wso);
- g_object_unref (G_OBJECT (gconf_wso));
+ nmi_dbus_return_user_key (info->applet->connection, info->message, gconf_wso);
+ g_object_unref (gconf_wso);
out:
- nmi_passphrase_dialog_destroy (applet);
+ gtk_widget_destroy (dialog);
}
/*
* nmi_passphrase_dialog_new
*
- * Create a new passphrase dialog instance and tie it
- * to the given UID.
+ * Create a new passphrase dialog instance.
*/
GtkWidget *
nmi_passphrase_dialog_new (NMApplet *applet,
- guint32 uid,
NetworkDevice *dev,
WirelessNetwork *net,
DBusMessage *message)
@@ -200,12 +182,16 @@
const char * orig_label_text;
char * new_label_text;
guint32 caps;
+ PassphraseDialogInfo *info;
g_return_val_if_fail (applet != NULL, NULL);
g_return_val_if_fail (dev != NULL, NULL);
g_return_val_if_fail (net != NULL, NULL);
g_return_val_if_fail (message != NULL, NULL);
+ if (applet->passphrase_dialog)
+ gtk_widget_destroy (applet->passphrase_dialog);
+
wsm = wsm_new (applet->glade_file);
caps = network_device_get_type_capabilities (dev);
@@ -237,10 +223,15 @@
dialog = glade_xml_get_widget (xml, "passphrase_dialog");
gtk_widget_hide (dialog);
- g_object_set_data (G_OBJECT (dialog), "wireless-security-manager", (gpointer) wsm);
- g_object_set_data (G_OBJECT (dialog), "glade-xml", xml);
- g_object_set_data (G_OBJECT (dialog), "applet", applet);
- g_object_set_data (G_OBJECT (dialog), "uid", GINT_TO_POINTER (uid));
+ info = g_new (PassphraseDialogInfo, 1);
+ info->applet = applet;
+ info->message = dbus_message_ref (message);
+ info->xml = xml;
+ info->device = network_device_ref (dev);
+ info->net = wireless_network_ref (net);
+ info->wsm = wsm;
+
+ g_object_weak_ref (G_OBJECT (dialog), passphrase_dialog_destroy, info);
ok_button = GTK_BUTTON (glade_xml_get_widget (xml, "login_button"));
gtk_widget_grab_default (GTK_WIDGET (ok_button));
@@ -252,22 +243,15 @@
gtk_label_set_label (GTK_LABEL (label), new_label_text);
g_free (new_label_text);
- network_device_ref (dev);
- g_object_set_data (G_OBJECT (dialog), "device", dev);
- wireless_network_ref (net);
- g_object_set_data (G_OBJECT (dialog), "network", net);
- dbus_message_ref (message);
- g_object_set_data (G_OBJECT (dialog), "dbus-message", message);
-
gtk_widget_set_sensitive (GTK_WIDGET (ok_button), FALSE);
security_combo = GTK_COMBO_BOX (glade_xml_get_widget (xml, "security_combo"));
wsm_update_combo (wsm, security_combo);
- g_signal_connect (G_OBJECT (security_combo), "changed", GTK_SIGNAL_FUNC (nmi_passphrase_dialog_security_combo_changed), dialog);
- nmi_passphrase_dialog_security_combo_changed (GTK_WIDGET (security_combo), dialog);
+ g_signal_connect (security_combo, "changed", GTK_SIGNAL_FUNC (nmi_passphrase_dialog_security_combo_changed), info);
+ nmi_passphrase_dialog_security_combo_changed (GTK_WIDGET (security_combo), info);
- g_signal_connect (G_OBJECT (dialog), "response", GTK_SIGNAL_FUNC (nmi_passphrase_dialog_response_received), dialog);
+ g_signal_connect (dialog, "response", GTK_SIGNAL_FUNC (nmi_passphrase_dialog_response_received), info);
/* Bash focus-stealing prevention in the face */
gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ALWAYS);
@@ -275,59 +259,7 @@
gdk_x11_window_set_user_time (dialog->window, gdk_x11_get_server_time (dialog->window));
gtk_window_present (GTK_WINDOW (dialog));
- return dialog;
-}
-
+ applet->passphrase_dialog = dialog;
-/*
- * nmi_passphrase_dialog_destroy
- *
- * Dispose of the passphrase dialog and its data
- *
- */
-void nmi_passphrase_dialog_destroy (NMApplet *applet)
-{
- char * data;
- GtkWidget * dialog;
-
- g_return_if_fail (applet != NULL);
-
- if (!applet->passphrase_dialog)
- return;
-
- dialog = applet->passphrase_dialog;
- gtk_widget_hide (dialog);
-
- if ((data = g_object_get_data (G_OBJECT (dialog), "device")))
- {
- network_device_unref ((NetworkDevice *) data);
- g_object_set_data (G_OBJECT (dialog), "device", NULL);
- }
-
- if ((data = g_object_get_data (G_OBJECT (dialog), "network")))
- {
- wireless_network_unref ((WirelessNetwork *) data);
- g_object_set_data (G_OBJECT (dialog), "network", NULL);
- }
-
- if ((data = g_object_get_data (G_OBJECT (dialog), "dbus-message")))
- {
- dbus_message_unref ((DBusMessage *) data);
- g_object_set_data (G_OBJECT (dialog), "dbus-message", NULL);
- }
-
- if ((data = g_object_get_data (G_OBJECT (dialog), "wireless-security-manager")))
- {
- wsm_free ((WirelessSecurityManager *) data);
- g_object_set_data (G_OBJECT (dialog), "wireless-security-manager", NULL);
- }
-
- if ((data = g_object_get_data (G_OBJECT (dialog), "glade-xml")))
- {
- g_object_unref (G_OBJECT (data));
- g_object_set_data (G_OBJECT (dialog), "glade-xml", NULL);
- }
-
- gtk_widget_destroy (dialog);
- applet->passphrase_dialog = NULL;
+ return dialog;
}
Modified: branches/network-manager-applet-0-6/src/passphrase-dialog.h
==============================================================================
--- branches/network-manager-applet-0-6/src/passphrase-dialog.h (original)
+++ branches/network-manager-applet-0-6/src/passphrase-dialog.h Wed Jan 30 20:32:27 2008
@@ -27,12 +27,9 @@
#include "wireless-network.h"
GtkWidget * nmi_passphrase_dialog_new (NMApplet *applet,
- guint32 uid,
NetworkDevice *dev,
WirelessNetwork *net,
DBusMessage *message);
-void nmi_passphrase_dialog_destroy (NMApplet *applet);
-
#endif /* PASSPHRASE_DIALOG_H */
Modified: branches/network-manager-applet-0-6/src/wireless-network.c
==============================================================================
--- branches/network-manager-applet-0-6/src/wireless-network.c (original)
+++ branches/network-manager-applet-0-6/src/wireless-network.c Wed Jan 30 20:32:27 2008
@@ -93,11 +93,13 @@
* Increment the reference count of the wireless network
*
*/
-void wireless_network_ref (WirelessNetwork *net)
+WirelessNetwork *wireless_network_ref (WirelessNetwork *net)
{
g_return_if_fail (net != NULL);
net->refcount++;
+
+ return net;
}
Modified: branches/network-manager-applet-0-6/src/wireless-network.h
==============================================================================
--- branches/network-manager-applet-0-6/src/wireless-network.h (original)
+++ branches/network-manager-applet-0-6/src/wireless-network.h Wed Jan 30 20:32:27 2008
@@ -28,7 +28,7 @@
WirelessNetwork * wireless_network_new (const char *essid, const char *nm_path);
WirelessNetwork * wireless_network_copy (WirelessNetwork *src);
-void wireless_network_ref (WirelessNetwork *net);
+WirelessNetwork * wireless_network_ref (WirelessNetwork *net);
void wireless_network_unref (WirelessNetwork *net);
gboolean wireless_network_get_active (WirelessNetwork *net);
Modified: branches/network-manager-applet-0-6/src/wso-wpa-eap.c
==============================================================================
--- branches/network-manager-applet-0-6/src/wso-wpa-eap.c (original)
+++ branches/network-manager-applet-0-6/src/wso-wpa-eap.c Wed Jan 30 20:32:27 2008
@@ -313,3 +313,33 @@
return opt;
}
+void
+wso_wpa_eap_set_wired (WirelessSecurityOption *opt)
+{
+ GtkTreeModel *model;
+ GtkComboBox *combo;
+ GtkTreeIter iter;
+ gboolean valid;
+
+ g_return_if_fail (opt != NULL);
+
+ /* Select the 802.1X key type */
+ combo = GTK_COMBO_BOX (glade_xml_get_widget (opt->uixml, "wpa_eap_key_type_combo"));
+ model = gtk_combo_box_get_model (combo);
+ valid = gtk_tree_model_get_iter_first (model, &iter);
+ while (valid) {
+ int cipher;
+
+ gtk_tree_model_get (model, &iter, WPA_KEY_TYPE_CIPHER_COL, &cipher, -1);
+ if (cipher == IW_AUTH_CIPHER_WEP104) {
+ gtk_combo_box_set_active_iter (combo, &iter);
+ break;
+ }
+
+ valid = gtk_tree_model_iter_next (model, &iter);
+ }
+
+ /* And hide it */
+ gtk_widget_hide (GTK_WIDGET (combo));
+ gtk_widget_hide (glade_xml_get_widget (opt->uixml, "wpa-key-type-label"));
+}
Modified: branches/network-manager-applet-0-6/src/wso-wpa-eap.h
==============================================================================
--- branches/network-manager-applet-0-6/src/wso-wpa-eap.h (original)
+++ branches/network-manager-applet-0-6/src/wso-wpa-eap.h Wed Jan 30 20:32:27 2008
@@ -25,4 +25,6 @@
WirelessSecurityOption * wso_wpa_eap_new (const char *glade_file, int capabilities, gboolean wpa2);
+void wso_wpa_eap_set_wired (WirelessSecurityOption *opt);
+
#endif /* WSO_WPA_EAP_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]