From: Dirk-Jan C. Binnema Date: Mon, 3 Sep 2007 13:33:42 +0000 (+0000) Subject: * fix for NB#67837, NB#63633 X-Git-Tag: git_migration_finished~2432 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=8df610f0be41b018033b2143018f54ff732736eb * fix for NB#67837, NB#63633 - don't try to convert ' --> ' [ 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 --- diff --git a/src/modest-formatter.c b/src/modest-formatter.c index 73fdfbb..39f0448 100644 --- a/src/modest-formatter.c +++ b/src/modest-formatter.c @@ -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); diff --git a/src/modest-text-utils.c b/src/modest-text-utils.c index e42cfee..8a83e60 100644 --- a/src/modest-text-utils.c +++ b/src/modest-text-utils.c @@ -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, ">"); break; case '&' : g_string_append (html, "&"); break; case '"' : g_string_append (html, """); break; - case '\'' : g_string_append (html, "'"); break; + + /* don't convert ' --> wpeditor will try to re-convert it... */ + //case '\'' : g_string_append (html, "'"); break; case '\n' : g_string_append (html, "
\n"); break_dist= 0; break; case '\t' : g_string_append (html, "    "); 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; } diff --git a/src/modest-tny-msg.c b/src/modest-tny-msg.c index 8de5a03..4595afa 100644 --- a/src/modest-tny-msg.c +++ b/src/modest-tny-msg.c @@ -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; }