diff pidgin/gtkcertmgr.c @ 19066:b631b409a515

- Make tls_peers_mgmt delete button prompt for yes/no before removing the cert
author William Ehlhardt <williamehlhardt@gmail.com>
date Wed, 01 Aug 2007 07:39:38 +0000
parents ebae00bbb57e
children 8828d7aec7b6
line wrap: on
line diff
--- a/pidgin/gtkcertmgr.c	Wed Aug 01 07:24:56 2007 +0000
+++ b/pidgin/gtkcertmgr.c	Wed Aug 01 07:39:38 2007 +0000
@@ -353,6 +353,18 @@
 }
 
 static void
+tls_peers_mgmt_delete_confirm_cb(gchar *id, gint choice)
+{
+	if (1 == choice) {
+		/* Yes, delete was confirmed */
+		/* Now delete the thing */
+		g_assert(purple_certificate_pool_delete(tpm_dat->tls_peers, id));
+	}
+
+	g_free(id);
+}
+	
+static void
 tls_peers_mgmt_delete_cb(GtkWidget *button, gpointer data)
 {
 	GtkTreeSelection *select = tpm_dat->listselect;
@@ -363,14 +375,25 @@
 	if (gtk_tree_selection_get_selected(select, &model, &iter)) {
 
 		gchar *id;
+		gchar *primary;
 
 		/* Retrieve the selected hostname */
 		gtk_tree_model_get(model, &iter, TPM_HOSTNAME_COLUMN, &id, -1);
 
-		/* Now delete the thing */
-		g_assert(purple_certificate_pool_delete(tpm_dat->tls_peers, id));
+		/* Prompt to confirm deletion */
+		primary = g_strdup_printf(
+			_("Really delete certificate for %s?"), id );
 		
-		g_free(id);
+		purple_request_yes_no(tpm_dat, _("Confirm certificate delete"),
+				      primary, NULL, /* Can this be NULL? */
+				      2, /* NO is default action */
+				      NULL, NULL, NULL,
+				      id, /* id ownership passed to callback */
+				      tls_peers_mgmt_delete_confirm_cb,
+				      tls_peers_mgmt_delete_confirm_cb );
+		
+		g_free(primary);
+				      
 	} else {
 		purple_debug_warning("gtkcertmgr/tls_peers_mgmt",
 				     "Delete clicked with no selection?\n");