[gnome-control-center] network: Add the 'Forget Network' button in the wireless page
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] network: Add the 'Forget Network' button in the wireless page
- Date: Wed, 8 Feb 2012 14:46:38 +0000 (UTC)
commit a34184910a28cf58aa995c8aaf5a053928061e77
Author: Richard Hughes <richard hughsie com>
Date: Wed Feb 8 13:43:02 2012 +0000
network: Add the 'Forget Network' button in the wireless page
panels/network/cc-network-panel.c | 102 +++++++++++++++++++++++++++++++++++++
panels/network/network.ui | 23 +++++++--
2 files changed, 121 insertions(+), 4 deletions(-)
---
diff --git a/panels/network/cc-network-panel.c b/panels/network/cc-network-panel.c
index 63cced9..43b88bc 100644
--- a/panels/network/cc-network-panel.c
+++ b/panels/network/cc-network-panel.c
@@ -1823,6 +1823,10 @@ device_refresh_wifi_ui (CcNetworkPanel *panel, NetDevice *device)
g_ptr_array_unref (aps_unique);
}
+ /* setup wireless button */
+ widget = GTK_WIDGET (gtk_builder_get_object (panel->priv->builder,
+ "button_wireless_button"));
+ gtk_widget_set_visible (widget, active_ap != NULL);
}
static void
@@ -2635,6 +2639,98 @@ add_connection_cb (GtkToolButton *button, CcNetworkPanel *panel)
}
static void
+forget_network_connection_delete_cb (NMRemoteConnection *connection,
+ GError *error,
+ gpointer user_data)
+{
+ if (error == NULL)
+ return;
+ g_warning ("failed to delete connection %s: %s",
+ nm_object_get_path (NM_OBJECT (connection)),
+ error->message);
+}
+
+static void
+forget_network_response_cb (GtkWidget *dialog,
+ gint response,
+ CcNetworkPanel *panel)
+{
+ NetObject *object;
+ NMDevice *device;
+ NMRemoteConnection *remote_connection;
+
+ if (response != GTK_RESPONSE_OK)
+ goto out;
+
+ /* get current device */
+ object = get_selected_object (panel);
+ if (object == NULL)
+ return;
+ device = net_device_get_nm_device (NET_DEVICE (object));
+ if (device == NULL)
+ goto out;
+
+ /* delete the connection */
+ remote_connection = NM_REMOTE_CONNECTION (find_connection_for_device (panel, device));
+ if (remote_connection == NULL) {
+ g_warning ("failed to get remote connection");
+ goto out;
+ }
+ nm_remote_connection_delete (remote_connection,
+ forget_network_connection_delete_cb,
+ panel);
+out:
+ gtk_widget_destroy (dialog);
+}
+
+static void
+wireless_button_clicked_cb (GtkButton *button, CcNetworkPanel *panel)
+{
+ gboolean ret;
+ gchar *ssid_pretty = NULL;
+ gchar *ssid_target = NULL;
+ gchar *warning = NULL;
+ GtkComboBox *combobox;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ GtkWidget *dialog;
+ GtkWidget *window;
+
+ combobox = GTK_COMBO_BOX (gtk_builder_get_object (panel->priv->builder,
+ "combobox_wireless_network_name"));
+ ret = gtk_combo_box_get_active_iter (combobox, &iter);
+ if (!ret)
+ goto out;
+
+ /* get entry */
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (combobox));
+ gtk_tree_model_get (model, &iter,
+ PANEL_WIRELESS_COLUMN_TITLE, &ssid_target,
+ -1);
+
+ ssid_pretty = g_strdup_printf ("<b>%s</b>", ssid_target);
+ warning = g_strdup_printf (_("Network details for %s including password and any custom configuration will be lost"), ssid_pretty);
+ window = gtk_widget_get_toplevel (GTK_WIDGET (panel));
+ dialog = gtk_message_dialog_new (GTK_WINDOW (window),
+ GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_OTHER,
+ GTK_BUTTONS_NONE,
+ NULL);
+ gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), warning);
+ gtk_dialog_add_buttons (GTK_DIALOG (dialog),
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ _("Forget"), GTK_RESPONSE_OK,
+ NULL);
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (forget_network_response_cb), panel);
+ gtk_window_present (GTK_WINDOW (dialog));
+out:
+ g_free (ssid_target);
+ g_free (ssid_pretty);
+ g_free (warning);
+}
+
+static void
remove_connection (GtkToolButton *button, CcNetworkPanel *panel)
{
NetObject *object;
@@ -3523,6 +3619,12 @@ cc_network_panel_init (CcNetworkPanel *panel)
g_signal_connect (widget, "clicked",
G_CALLBACK (remove_connection), panel);
+ /* setup wireless button */
+ widget = GTK_WIDGET (gtk_builder_get_object (panel->priv->builder,
+ "button_wireless_button"));
+ g_signal_connect (widget, "clicked",
+ G_CALLBACK (wireless_button_clicked_cb), panel);
+
/* nothing to unlock yet */
widget = GTK_WIDGET (gtk_builder_get_object (panel->priv->builder,
"button_unlock"));
diff --git a/panels/network/network.ui b/panels/network/network.ui
index 6b1fbd3..f951e07 100644
--- a/panels/network/network.ui
+++ b/panels/network/network.ui
@@ -962,7 +962,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">3</property>
+ <property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
@@ -981,7 +981,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">4</property>
+ <property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
@@ -1030,7 +1030,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">3</property>
+ <property name="top_attach">2</property>
<property name="width">2</property>
<property name="height">1</property>
</packing>
@@ -1050,7 +1050,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">4</property>
+ <property name="top_attach">3</property>
<property name="width">2</property>
<property name="height">1</property>
</packing>
@@ -1086,6 +1086,21 @@
</packing>
</child>
<child>
+ <object class="GtkButton" id="button_wireless_button">
+ <property name="label" translatable="yes">Forget Network</property>
+ <property name="use_action_appearance">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">4</property>
+ <property name="width">2</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
<placeholder/>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]