* Fixes NB#87102, add the signature to the forwarded mails that include the original...
authorSergio Villar Senin <svillar@igalia.com>
Tue, 14 Oct 2008 10:16:14 +0000 (10:16 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Tue, 14 Oct 2008 10:16:14 +0000 (10:16 +0000)
* Use the same signature marker all along modest-formatter.c

pmo-trunk-r6038

src/modest-formatter.c
src/modest-text-utils.c

index 8eb4c75..f2ecfd9 100644 (file)
@@ -177,6 +177,7 @@ modest_formatter_attach (ModestFormatter *self, TnyMsg *msg, TnyHeader *header)
        TnyMsg *new_msg = NULL;
        TnyMimePart *body_part = NULL;
        ModestFormatterPrivate *priv;
        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);
 
        /* 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);
 
        /* 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) {
        g_object_unref (body_part);
 
        if (msg) {
index 6e89e71..54d7679 100644 (file)
@@ -63,7 +63,7 @@
  * will hang modest
  */
 #define HYPERLINKIFY_MAX_LENGTH (1024*50)
  * 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) {
        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 = 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;
        }
 
        return retval;
@@ -941,6 +941,17 @@ modest_text_utils_quote_plain_text (const gchar *text,
        return g_string_free (q, FALSE);
 }
 
        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<br/>", html_text);
+               g_free (html_text);
+       }
+}
+
 static gchar*
 modest_text_utils_quote_html (const gchar *text, 
                              const gchar *cite, 
 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)
 {
                              GList *attachments,
                              int limit)
 {
-       gchar *result = NULL;
-       gchar *signature_result = NULL;
-       const gchar *format = \
-               "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n" \
-               "<html>\n" \
-               "<body>\n" \
-               "<pre>%s<br/>%s<br/>%s</pre>\n" \
-               "<br/>--<br/>%s<br/>\n" \
-               "</body>\n" \
-               "</html>\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 ( \
+                             "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n" \
+                             "<html>\n"                                \
+                             "<body>\n");
+
+       if (text || cite || signature) {
+               g_string_append (result_string, "<pre>");
+               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, "</pre>");
+       }
+       g_string_append (result_string, "</body>");
+       g_string_append (result_string, "</html>");
 
 
-       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 
 }
 
 static gint