[evolution] Bug #553057 - Show signer's information in a message window/preview



commit a4def5c093033ffe2fd645624235afaea8720f91
Author: Matthew W. S. Bell <matthew bells23 org uk>
Date:   Wed Dec 16 20:19:58 2009 +0100

    Bug #553057 - Show signer's information in a message window/preview

 mail/em-format-html-display.c |    8 +++++
 mail/em-format-html.c         |   61 +++++++++++++++++++++++++++++++++++++++-
 mail/em-format-html.h         |    2 +
 3 files changed, 69 insertions(+), 2 deletions(-)
---
diff --git a/mail/em-format-html-display.c b/mail/em-format-html-display.c
index 9519707..c795929 100644
--- a/mail/em-format-html-display.c
+++ b/mail/em-format-html-display.c
@@ -565,12 +565,20 @@ efhd_format_secure (EMFormat *emf,
 		g_free (classid);
 
 		if (valid->sign.status != CAMEL_CIPHER_VALIDITY_SIGN_NONE) {
+			gchar *signers;
 			const gchar *desc;
 			gint status;
 
 			status = valid->sign.status;
 			desc = smime_sign_table[status].shortdesc;
+
 			camel_stream_printf (stream, "%s", gettext (desc));
+
+			signers = em_format_html_format_cert_infos ((CamelCipherCertInfo *)valid->sign.signers.head);
+			if (signers && *signers) {
+				camel_stream_printf (stream, " (%s)", signers);
+			}
+			g_free (signers);
 		}
 
 		if (valid->encrypt.status != CAMEL_CIPHER_VALIDITY_ENCRYPT_NONE) {
diff --git a/mail/em-format-html.c b/mail/em-format-html.c
index 6fbc607..86ad0a5 100644
--- a/mail/em-format-html.c
+++ b/mail/em-format-html.c
@@ -1595,11 +1595,23 @@ efh_format_secure(EMFormat *emf, CamelStream *stream, CamelMimePart *part, Camel
 		g_free(classid);
 
 		if (valid->sign.status != CAMEL_CIPHER_VALIDITY_SIGN_NONE) {
-			camel_stream_printf(stream, "%s<br>", _(smime_sign_table[valid->sign.status].shortdesc));
+			gchar *signers;
+
+			camel_stream_printf (stream, "%s", _(smime_sign_table[valid->sign.status].shortdesc));
+
+			signers = em_format_html_format_cert_infos ((CamelCipherCertInfo *)valid->sign.signers.head);
+			if (signers && *signers) {
+				camel_stream_printf (stream, " (%s)", signers);
+			}
+			g_free (signers);
 		}
 
 		if (valid->encrypt.status != CAMEL_CIPHER_VALIDITY_ENCRYPT_NONE) {
-			camel_stream_printf(stream, "%s<br>", _(smime_encrypt_table[valid->encrypt.status].shortdesc));
+			if (valid->sign.status != CAMEL_CIPHER_VALIDITY_SIGN_NONE) {
+				camel_stream_printf (stream, "<br>");
+			}
+
+			camel_stream_printf (stream, "%s", _(smime_encrypt_table[valid->encrypt.status].shortdesc));
 		}
 
 		camel_stream_printf(stream, "</td></tr></table>");
@@ -2776,3 +2788,48 @@ efh_format_message(EMFormat *emf, CamelStream *stream, CamelMimePart *part, cons
 	emf->valid = save;
 	emf->valid_parent = save_parent;
 }
+
+gchar *
+em_format_html_format_cert_infos (CamelCipherCertInfo *first_cinfo)
+{
+	GString *res = NULL;
+	CamelCipherCertInfo *cinfo;
+
+	if (!first_cinfo)
+		return NULL;
+
+	#define append(x) G_STMT_START {		\
+		if (!res) {				\
+			res = g_string_new (x);		\
+		} else {				\
+			g_string_append (res, x);	\
+		}					\
+	} G_STMT_END
+
+	for (cinfo = first_cinfo; cinfo && cinfo->next; cinfo = cinfo->next) {
+		if (!cinfo->name && !cinfo->email)
+			continue;
+
+		if (res)
+			append (", ");
+
+		if (cinfo->name && *cinfo->name) {
+			append (cinfo->name);
+
+			if (cinfo->email && *cinfo->email) {
+				append (" &lt;");
+				append (cinfo->email);
+				append ("&gt;");
+			}
+		} else if (cinfo->email && *cinfo->email) {
+			append (cinfo->email);
+		}
+	}
+
+	#undef append
+
+	if (!res)
+		return NULL;
+
+	return g_string_free (res, FALSE);
+}
diff --git a/mail/em-format-html.h b/mail/em-format-html.h
index 9d96c40..bac45d8 100644
--- a/mail/em-format-html.h
+++ b/mail/em-format-html.h
@@ -282,6 +282,8 @@ gboolean	em_format_html_get_show_real_date(EMFormatHTML *efh);
 void		em_format_html_set_show_real_date(EMFormatHTML *efh,
 						 gboolean show_real_date);
 
+gchar *		em_format_html_format_cert_infos (CamelCipherCertInfo *first_cinfo);
+
 G_END_DECLS
 
 #endif /* EM_FORMAT_HTML_H */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]