[gnome-control-center] network: Make it possible to delete virtual devices
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] network: Make it possible to delete virtual devices
- Date: Mon, 15 Apr 2013 12:16:06 +0000 (UTC)
commit dffb46e6dbdaba4cab9a2751ba19d03a902ccb8b
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Apr 12 20:27:26 2013 -0400
network: Make it possible to delete virtual devices
Bridges, bonds and vlans should be deletable, like they are
in nm-connection-editor. The delete button was already sensitive
for these devices, but it didn't do anything. This commit hooks
up the necessary functionality.
https://bugzilla.gnome.org/show_bug.cgi?id=697919
panels/network/net-virtual-device.c | 55 +++++++++++++++++++++++++++++++++++--
1 file changed, 52 insertions(+), 3 deletions(-)
---
diff --git a/panels/network/net-virtual-device.c b/panels/network/net-virtual-device.c
index b1c2378..b41629b 100644
--- a/panels/network/net-virtual-device.c
+++ b/panels/network/net-virtual-device.c
@@ -60,6 +60,39 @@ static guint signals[SIGNAL_LAST] = { 0 };
G_DEFINE_TYPE (NetVirtualDevice, net_virtual_device, NET_TYPE_DEVICE)
static void
+connection_changed_cb (NMConnection *connection,
+ NetObject *object)
+{
+ net_object_emit_changed (object);
+}
+
+static void
+connection_removed_cb (NMConnection *connection,
+ NetObject *object)
+{
+ net_object_emit_removed (object);
+}
+
+static void
+net_virtual_device_set_connection (NetVirtualDevice *virtual_device,
+ NMConnection *connection)
+{
+ NetVirtualDevicePrivate *priv = virtual_device->priv;
+
+ priv->connection = g_object_ref (connection);
+ priv->iface = nm_connection_get_virtual_iface_name (priv->connection);
+
+ g_signal_connect (priv->connection,
+ NM_REMOTE_CONNECTION_REMOVED,
+ G_CALLBACK (connection_removed_cb),
+ virtual_device);
+ g_signal_connect (priv->connection,
+ NM_REMOTE_CONNECTION_UPDATED,
+ G_CALLBACK (connection_changed_cb),
+ virtual_device);
+}
+
+static void
net_virtual_device_get_property (GObject *object,
guint prop_id,
GValue *value,
@@ -86,12 +119,12 @@ net_virtual_device_set_property (GObject *object,
GParamSpec *pspec)
{
NetVirtualDevice *virtual_device = NET_VIRTUAL_DEVICE (object);
- NetVirtualDevicePrivate *priv = virtual_device->priv;
+ NMConnection *connection;
switch (prop_id) {
case PROP_CONNECTION:
- priv->connection = g_value_dup_object (value);
- priv->iface = nm_connection_get_virtual_iface_name (priv->connection);
+ connection = NM_CONNECTION (g_value_get_object (value));
+ net_virtual_device_set_connection (virtual_device, connection);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (virtual_device, prop_id, pspec);
@@ -198,6 +231,21 @@ net_virtual_device_refresh (NetObject *object)
}
static void
+net_virtual_device_delete (NetObject *object)
+{
+ NetVirtualDevice *virtual_device = NET_VIRTUAL_DEVICE (object);
+ NetVirtualDevicePrivate *priv = virtual_device->priv;
+ const char *path;
+ NMRemoteSettings *settings;
+ NMRemoteConnection *connection;
+
+ settings = net_object_get_remote_settings (object);
+ path = nm_connection_get_path (priv->connection);
+ connection = nm_remote_settings_get_connection_by_path (settings, path);
+ nm_remote_connection_delete (connection, NULL, NULL);
+}
+
+static void
device_added_cb (NMClient *client, NMDevice *nm_device, gpointer user_data)
{
NetVirtualDevice *virtual_device = user_data;
@@ -333,6 +381,7 @@ net_virtual_device_class_init (NetVirtualDeviceClass *klass)
net_object_class->refresh = net_virtual_device_refresh;
net_object_class->add_to_notebook = net_virtual_device_add_to_notebook;
+ net_object_class->delete = net_virtual_device_delete;
device_class->get_find_connection = net_virtual_device_get_find_connection;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]