* fix for NB#67837, NB#63633
authorDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Mon, 3 Sep 2007 13:33:42 +0000 (13:33 +0000)
committerDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Mon, 3 Sep 2007 13:33:42 +0000 (13:33 +0000)
  - don't try to convert ' --> &apos; [ while technically correct,
    apparently, wpeditor does not like it
  - clean up writing of reply/forward msgs a bit. it could use more cleanup

pmo-trunk-r3191

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

index 73fdfbb..39f0448 100644 (file)
@@ -55,9 +55,12 @@ typedef gchar* FormatterFunc (ModestFormatter *self, const gchar *text, TnyHeade
 static TnyMsg *modest_formatter_do (ModestFormatter *self, TnyMimePart *body,  TnyHeader *header, 
                                    FormatterFunc func, GList *attachments);
 
-static gchar*  modest_formatter_wrapper_cite   (ModestFormatter *self, const gchar *text, TnyHeader *header, GList *attachments);
-static gchar*  modest_formatter_wrapper_quote  (ModestFormatter *self, const gchar *text, TnyHeader *header, GList *attachments);
-static gchar*  modest_formatter_wrapper_inline (ModestFormatter *self, const gchar *text, TnyHeader *header, GList *attachments);
+static gchar*  modest_formatter_wrapper_cite   (ModestFormatter *self, const gchar *text,
+                                               TnyHeader *header, GList *attachments);
+static gchar*  modest_formatter_wrapper_quote  (ModestFormatter *self, const gchar *text,
+                                               TnyHeader *header, GList *attachments);
+static gchar*  modest_formatter_wrapper_inline (ModestFormatter *self, const gchar *text,
+                                               TnyHeader *header, GList *attachments);
 
 static gchar *
 extract_text (ModestFormatter *self, TnyMimePart *body)
@@ -117,7 +120,8 @@ construct_from_text (TnyMimePart *part,
 }
 
 static TnyMsg *
-modest_formatter_do (ModestFormatter *self, TnyMimePart *body, TnyHeader *header, FormatterFunc func, GList *attachments)
+modest_formatter_do (ModestFormatter *self, TnyMimePart *body, TnyHeader *header, FormatterFunc func,
+                    GList *attachments)
 {
        TnyMsg *new_msg = NULL;
        gchar *body_text = NULL, *txt = NULL;
@@ -141,7 +145,7 @@ modest_formatter_do (ModestFormatter *self, TnyMimePart *body, TnyHeader *header
        priv = MODEST_FORMATTER_GET_PRIVATE (self);
        construct_from_text (TNY_MIME_PART (body_part), (const gchar*) txt, priv->content_type);
        g_object_unref (body_part);
-
+       
        /* Clean */
        g_free (body_text);
        g_free (txt);
@@ -271,10 +275,11 @@ modest_formatter_get_type (void)
 
 /****************/
 static gchar *
-modest_formatter_wrapper_cite (ModestFormatter *self, const gchar *text, TnyHeader *header, GList *attachments) 
+modest_formatter_wrapper_cite (ModestFormatter *self, const gchar *text, TnyHeader *header,
+                              GList *attachments) 
 {
        ModestFormatterPrivate *priv = MODEST_FORMATTER_GET_PRIVATE (self);
-
+       
        return modest_text_utils_cite (text, 
                                       priv->content_type, 
                                       priv->signature,
@@ -283,7 +288,8 @@ modest_formatter_wrapper_cite (ModestFormatter *self, const gchar *text, TnyHead
 }
 
 static gchar *
-modest_formatter_wrapper_inline (ModestFormatter *self, const gchar *text, TnyHeader *header, GList *attachments) 
+modest_formatter_wrapper_inline (ModestFormatter *self, const gchar *text, TnyHeader *header,
+                                GList *attachments) 
 {
        ModestFormatterPrivate *priv = MODEST_FORMATTER_GET_PRIVATE (self);
 
@@ -297,7 +303,8 @@ modest_formatter_wrapper_inline (ModestFormatter *self, const gchar *text, TnyHe
 }
 
 static gchar *
-modest_formatter_wrapper_quote (ModestFormatter *self, const gchar *text, TnyHeader *header, GList *attachments) 
+modest_formatter_wrapper_quote (ModestFormatter *self, const gchar *text, TnyHeader *header,
+                               GList *attachments) 
 {
        ModestFormatterPrivate *priv = MODEST_FORMATTER_GET_PRIVATE (self);
        GList *filenames = NULL;
@@ -382,7 +389,7 @@ modest_formatter_create_body_part (ModestFormatter *self, TnyMsg *msg)
                TnyList *parts = NULL;
                TnyIterator *iter = NULL;
                TnyMimePart *alternative_part = NULL;
-
+               
                parts = TNY_LIST (tny_simple_list_new ());
                tny_mime_part_get_parts (TNY_MIME_PART (msg), parts);
                iter = tny_list_create_iterator (parts);
index e42cfee..8a83e60 100644 (file)
@@ -180,18 +180,18 @@ modest_text_utils_cite (const gchar *text,
 {
        gchar *retval;
        gchar *tmp_sig;
-
+       
        g_return_val_if_fail (text, NULL);
        g_return_val_if_fail (content_type, NULL);
-
+       
        if (!signature)
                retval = g_strdup ("");
-       else if (!strcmp(content_type, "text/html")) {
+       else if (strcmp(content_type, "text/html") == 0) {
                tmp_sig = g_strconcat ("\n", signature, NULL);
                retval = modest_text_utils_convert_to_html_body(tmp_sig);
                g_free (tmp_sig);
        } else {
-               retval = g_strconcat ("\n", signature, NULL);
+               retval = g_strconcat (text, "\n", signature, NULL);
        }
 
        return retval;
@@ -199,9 +199,9 @@ modest_text_utils_cite (const gchar *text,
 
 static gchar *
 forward_cite (const gchar *from,
-                   const gchar *sent,
-                   const gchar *to,
-                   const gchar *subject)
+             const gchar *sent,
+             const gchar *to,
+             const gchar *subject)
 {
        return g_strdup_printf ("%s\n%s %s\n%s %s\n%s %s\n%s %s\n", 
                                FORWARD_STRING, 
@@ -354,7 +354,9 @@ modest_text_utils_convert_buffer_to_html (GString *html, const gchar *data)
                case '>'  : g_string_append (html, "&gt;");   break;
                case '&'  : g_string_append (html, "&amp;");  break;
                case '"'  : g_string_append (html, "&quot;");  break;
-               case '\'' : g_string_append (html, "&apos;"); break;
+
+               /* don't convert &apos; --> wpeditor will try to re-convert it... */    
+               //case '\'' : g_string_append (html, "&apos;"); break;
                case '\n' : g_string_append (html, "<br>\n");              break_dist= 0; break;
                case '\t' : g_string_append (html, "&nbsp;&nbsp;&nbsp; "); break_dist=0; break; /* note the space at the end*/
                case ' ':
@@ -833,6 +835,7 @@ modest_text_utils_quote_html (const gchar *text,
        g_free (attachments_string);
        g_free (q_attachments_string);
        g_free (signature_result);
+       
        return result;
 }
 
index 8de5a03..4595afa 100644 (file)
@@ -401,8 +401,9 @@ modest_tny_msg_find_body_part (TnyMsg *msg, gboolean want_html)
 #define MODEST_TNY_MSG_PARENT_UID "parent-uid"
 
 static TnyMsg *
-create_reply_forward_mail (TnyMsg *msg, TnyHeader *header, const gchar *from, const gchar *signature, 
-                          gboolean is_reply, guint type, GList *attachments)
+create_reply_forward_mail (TnyMsg *msg, TnyHeader *header, const gchar *from,
+                          const gchar *signature, gboolean is_reply,
+                          guint type /*ignored*/, GList *attachments)
 {
        TnyMsg *new_msg;
        TnyHeader *new_header;
@@ -410,48 +411,42 @@ create_reply_forward_mail (TnyMsg *msg, TnyHeader *header, const gchar *from, co
        TnyMimePart *body = NULL;
        ModestFormatter *formatter;
        gchar *subject_prefix;
+       gboolean no_text_part;
        
-       /* Get body from original msg. Always look for the text/plain
-          part of the message to create the reply/forwarded mail */
        if (header)
                g_object_ref (header);
        else
                header = tny_msg_get_header (msg);
 
+       /* Get body from original msg. Always look for the text/plain
+          part of the message to create the reply/forwarded mail */
        if (msg != NULL)
-               body   = modest_tny_msg_find_body_part (msg, !is_reply);
-
-       /* TODO: select the formatter from account prefs */
-       if (modest_conf_get_bool (modest_runtime_get_conf (), MODEST_CONF_PREFER_FORMATTED_TEXT, NULL))
+               body   = modest_tny_msg_find_body_part (msg, FALSE);
+       
+       if (modest_conf_get_bool (modest_runtime_get_conf (), MODEST_CONF_PREFER_FORMATTED_TEXT,
+                                 NULL))
                formatter = modest_formatter_new ("text/html", signature);
        else
                formatter = modest_formatter_new ("text/plain", signature);
 
-       /* Format message body */
-       if (is_reply) {
-               switch (type) {
-               case MODEST_TNY_MSG_REPLY_TYPE_CITE:
-               default:
-                       new_msg = modest_formatter_cite  (formatter, body, header);
-                       break;
-               case MODEST_TNY_MSG_REPLY_TYPE_QUOTE:
-                       new_msg = modest_formatter_quote (formatter, body, header, attachments);
-                       break;
-               }
-       } else {
-               switch (type) {
-               case MODEST_TNY_MSG_FORWARD_TYPE_INLINE:
-               default:
-                       if (strcmp (tny_mime_part_get_content_type (body), "text/html")==0)
-                               new_msg = modest_formatter_attach (formatter, msg, header);
-                       else 
-                               new_msg = modest_formatter_inline  (formatter, body, header, attachments);
-                       break;
-               case MODEST_TNY_MSG_FORWARD_TYPE_ATTACHMENT:
+
+       /* if we don't have a text-part */
+       no_text_part = (strcmp (tny_mime_part_get_content_type (body), "text/html")==0);
+       
+       /* when we're reply, include the text part if we have it, or nothing otherwise. */
+       if (is_reply)
+               new_msg = modest_formatter_inline  (formatter, no_text_part ? NULL: body, header,
+                                                   attachments);
+       else {
+               /* for attachements; inline if there is a text part, and include the
+                * full old mail if there was none */
+               if (no_text_part) 
                        new_msg = modest_formatter_attach (formatter, msg, header);
-                       break;
-               }
+               else 
+                       new_msg = modest_formatter_inline  (formatter, body, header,
+                                                           attachments);
        }
+       
        g_object_unref (G_OBJECT(formatter));
        if (body)
                g_object_unref (G_OBJECT(body));
@@ -472,8 +467,7 @@ create_reply_forward_mail (TnyMsg *msg, TnyHeader *header, const gchar *from, co
        g_free (subject_prefix);
        tny_header_set_subject (new_header, (const gchar *) new_subject);
        g_free (new_subject);
-
-
+       
        /* get the parent uid, and set it as a gobject property on the new msg */
        if (new_msg) {
                gchar* parent_uid = modest_tny_folder_get_header_unique_id (header);
@@ -483,7 +477,8 @@ create_reply_forward_mail (TnyMsg *msg, TnyHeader *header, const gchar *from, co
        
        /* Clean */
        g_object_unref (G_OBJECT (new_header));
-       g_object_unref (G_OBJECT (header)); /* ugly to unref it here instead of in the calling func */
+       g_object_unref (G_OBJECT (header));
+       /* ugly to unref it here instead of in the calling func */
 
        return new_msg;
 }