From 343d0d815a4b59c13316e7125ef392be7ccdefcb Mon Sep 17 00:00:00 2001 From: Chris Toshok Date: Fri, 30 Apr 2004 21:04:15 +0000 Subject: [ fixes bug #52724 ] 2004-04-30 Chris Toshok [ fixes bug #52724 ] * gui/ca-trust-dialog.c (ca_trust_dialog_set_trust): new function, set the toggle buttons' states. * gui/ca-trust-dialog.h (ca_trust_dialog_set_trust): add prototype. * gui/certificate-manager.c (edit_ca): flesh out the rest of the editing here. set the existing trust levels and get them back from the dialog when OK is clicked (and store them to the cert db.) svn path=/trunk/; revision=25726 --- smime/ChangeLog | 15 +++++++++++++++ smime/gui/ca-trust-dialog.c | 14 ++++++++++++++ smime/gui/ca-trust-dialog.h | 1 + smime/gui/certificate-manager.c | 27 +++++++++++++++++++++++---- 4 files changed, 53 insertions(+), 4 deletions(-) (limited to 'smime') diff --git a/smime/ChangeLog b/smime/ChangeLog index 48a8661d67..09c0d9c029 100644 --- a/smime/ChangeLog +++ b/smime/ChangeLog @@ -1,3 +1,18 @@ +2004-04-30 Chris Toshok + + [ fixes bug #52724 ] + + * gui/ca-trust-dialog.c (ca_trust_dialog_set_trust): new function, + set the toggle buttons' states. + + * gui/ca-trust-dialog.h (ca_trust_dialog_set_trust): add + prototype. + + * gui/certificate-manager.c (edit_ca): flesh out the rest of the + editing here. set the existing trust levels and get them back + from the dialog when OK is clicked (and store them to the cert + db.) + 2004-03-24 Chris Toshok * lib/smime-marshal.list: add BOOL:POINTER,POINTER,POINTER,POINTER diff --git a/smime/gui/ca-trust-dialog.c b/smime/gui/ca-trust-dialog.c index 2e97653601..b59e189b9e 100644 --- a/smime/gui/ca-trust-dialog.c +++ b/smime/gui/ca-trust-dialog.c @@ -98,6 +98,20 @@ ca_trust_dialog_show (ECert *cert, gboolean importing) return ctd_data->dialog; } +void +ca_trust_dialog_set_trust (GtkWidget *widget, gboolean ssl, gboolean email, gboolean objsign) +{ + CATrustDialogData *ctd_data; + + ctd_data = g_object_get_data (G_OBJECT (widget), "CATrustDialogData"); + if (!ctd_data) + return; + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ctd_data->ssl_checkbutton), ssl); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ctd_data->email_checkbutton), email); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ctd_data->objsign_checkbutton), objsign); +} + void ca_trust_dialog_get_trust (GtkWidget *widget, gboolean *ssl, gboolean *email, gboolean *objsign) { diff --git a/smime/gui/ca-trust-dialog.h b/smime/gui/ca-trust-dialog.h index e15d98170a..8345da2901 100644 --- a/smime/gui/ca-trust-dialog.h +++ b/smime/gui/ca-trust-dialog.h @@ -28,6 +28,7 @@ GtkWidget* ca_trust_dialog_show (ECert *cert, gboolean importing); +void ca_trust_dialog_set_trust (GtkWidget *widget, gboolean ssl, gboolean email, gboolean objsign); void ca_trust_dialog_get_trust (GtkWidget *widget, gboolean *ssl, gboolean *email, gboolean *objsign); #endif /* _CA_TRUST_DIALOG_H_ */ diff --git a/smime/gui/certificate-manager.c b/smime/gui/certificate-manager.c index a59f8a0d96..f291fffea4 100644 --- a/smime/gui/certificate-manager.c +++ b/smime/gui/certificate-manager.c @@ -487,10 +487,29 @@ edit_ca (GtkWidget *widget, CertificateManagerData *cfm) if (cert) { GtkWidget *dialog = ca_trust_dialog_show (cert, FALSE); - - gtk_dialog_run (GTK_DIALOG (dialog)); - - /* XXX more stuff here surely */ + CERTCertificate *icert = e_cert_get_internal_cert (cert); + + ca_trust_dialog_set_trust (dialog, + e_cert_trust_has_trusted_ca (icert->trust, TRUE, FALSE, FALSE), + e_cert_trust_has_trusted_ca (icert->trust, FALSE, TRUE, FALSE), + e_cert_trust_has_trusted_ca (icert->trust, FALSE, FALSE, TRUE)); + + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { + gboolean trust_ssl, trust_email, trust_objsign; + CERTCertTrust trust; + + ca_trust_dialog_get_trust (dialog, + &trust_ssl, &trust_email, &trust_objsign); + + e_cert_trust_init (&trust); + e_cert_trust_set_valid_ca (&trust); + e_cert_trust_add_ca_trust (&trust, + trust_ssl, + trust_email, + trust_objsign); + + CERT_ChangeCertTrust (e_cert_db_peek (), icert, &trust); + } gtk_widget_destroy (dialog); } -- cgit v1.2.3