From a257b9e8b31184a663ccb7676362d4ac2cb1b039 Mon Sep 17 00:00:00 2001 From: Sergio Villar Senin Date: Tue, 14 Oct 2008 10:16:14 +0000 Subject: [PATCH 1/1] * Fixes NB#87102, add the signature to the forwarded mails that include the original as attachments * Use the same signature marker all along modest-formatter.c pmo-trunk-r6038 --- src/modest-formatter.c | 6 +++- src/modest-text-utils.c | 74 +++++++++++++++++++++++++---------------------- 2 files changed, 45 insertions(+), 35 deletions(-) diff --git a/src/modest-formatter.c b/src/modest-formatter.c index 8eb4c75..f2ecfd9 100644 --- a/src/modest-formatter.c +++ b/src/modest-formatter.c @@ -177,6 +177,7 @@ modest_formatter_attach (ModestFormatter *self, TnyMsg *msg, TnyHeader *header) TnyMsg *new_msg = NULL; TnyMimePart *body_part = NULL; ModestFormatterPrivate *priv; + gchar *txt; /* Build new part */ new_msg = modest_formatter_create_message (self, TRUE, TRUE, FALSE); @@ -184,7 +185,10 @@ modest_formatter_attach (ModestFormatter *self, TnyMsg *msg, TnyHeader *header) /* Create the two parts */ priv = MODEST_FORMATTER_GET_PRIVATE (self); - construct_from_text (body_part, "", priv->content_type); + txt = modest_text_utils_cite ("", priv->content_type, priv->signature, + NULL, tny_header_get_date_sent (header)); + construct_from_text (body_part, txt, priv->content_type); + g_free (txt); g_object_unref (body_part); if (msg) { diff --git a/src/modest-text-utils.c b/src/modest-text-utils.c index 6e89e71..54d7679 100644 --- a/src/modest-text-utils.c +++ b/src/modest-text-utils.c @@ -63,7 +63,7 @@ * will hang modest */ #define HYPERLINKIFY_MAX_LENGTH (1024*50) - +#define SIGNATURE_MARKER "--" /* @@ -215,11 +215,11 @@ modest_text_utils_cite (const gchar *text, if (!signature) retval = g_strdup (""); else if (strcmp(content_type, "text/html") == 0) { - tmp_sig = g_strconcat ("\n", signature, NULL); + tmp_sig = g_strconcat (SIGNATURE_MARKER,"\n", signature, NULL); retval = modest_text_utils_convert_to_html_body(tmp_sig, -1, TRUE); g_free (tmp_sig); } else { - retval = g_strconcat (text, "\n", signature, NULL); + retval = g_strconcat (text, SIGNATURE_MARKER, "\n", signature, NULL); } return retval; @@ -941,6 +941,17 @@ modest_text_utils_quote_plain_text (const gchar *text, return g_string_free (q, FALSE); } +static void +quote_html_add_to_gstring (GString *string, + const gchar *text) +{ + if (text && strcmp (text, "")) { + gchar *html_text = modest_text_utils_convert_to_html_body (text, -1, TRUE); + g_string_append_printf (string, "%s
", html_text); + g_free (html_text); + } +} + static gchar* modest_text_utils_quote_html (const gchar *text, const gchar *cite, @@ -948,38 +959,33 @@ modest_text_utils_quote_html (const gchar *text, GList *attachments, int limit) { - gchar *result = NULL; - gchar *signature_result = NULL; - const gchar *format = \ - "\n" \ - "\n" \ - "\n" \ - "
%s
%s
%s
\n" \ - "
--
%s
\n" \ - "\n" \ - "\n"; - gchar *attachments_string = NULL; - gchar *q_attachments_string = NULL; - gchar *q_cite = NULL; - gchar *html_text = NULL; - - if (signature == NULL) - signature_result = g_strdup (""); - else - signature_result = modest_text_utils_convert_to_html_body (signature, -1, TRUE); + GString *result_string; + + result_string = + g_string_new ( \ + "\n" \ + "\n" \ + "\n"); + + if (text || cite || signature) { + g_string_append (result_string, "
");
+		quote_html_add_to_gstring (result_string, cite);
+		quote_html_add_to_gstring (result_string, text);
+		if (attachments) {
+			gchar *attachments_string = quoted_attachments (attachments);
+			quote_html_add_to_gstring (result_string, attachments_string);
+			g_free (attachments_string);
+		}
+		if (signature) {
+			quote_html_add_to_gstring (result_string, SIGNATURE_MARKER);
+			quote_html_add_to_gstring (result_string, signature);
+		}
+		g_string_append (result_string, "
"); + } + g_string_append (result_string, ""); + g_string_append (result_string, ""); - attachments_string = quoted_attachments (attachments); - q_attachments_string = modest_text_utils_convert_to_html_body (attachments_string, -1, TRUE); - q_cite = modest_text_utils_convert_to_html_body (cite, -1, TRUE); - html_text = modest_text_utils_convert_to_html_body (text, -1, TRUE); - result = g_strdup_printf (format, q_cite, html_text, q_attachments_string, signature_result); - g_free (q_cite); - g_free (html_text); - g_free (attachments_string); - g_free (q_attachments_string); - g_free (signature_result); - - return result; + return g_string_free (result_string, FALSE); } static gint -- 1.7.9.5