X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-formatter.c;h=8fcbf0d1e4edcf3ff8fcdbdc36c33c007c16be1f;hb=93fe40ca03182bc1615c3fd30d4e3549fa512ac9;hp=0375b1824b4070e9a277f6b83b3a9f6da216166d;hpb=d5bee34a102dfc92754e669bf930a290d69586be;p=modest diff --git a/src/modest-formatter.c b/src/modest-formatter.c index 0375b18..8fcbf0d 100644 --- a/src/modest-formatter.c +++ b/src/modest-formatter.c @@ -27,20 +27,21 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include #include #include #include #include #include -#include #include #include "modest-formatter.h" #include "modest-text-utils.h" +#include "modest-tny-platform-factory.h" +#include typedef struct _ModestFormatterPrivate ModestFormatterPrivate; struct _ModestFormatterPrivate { gchar *content_type; + gchar *signature; }; #define MODEST_FORMATTER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ MODEST_TYPE_FORMATTER, \ @@ -50,9 +51,7 @@ static GObjectClass *parent_class = NULL; typedef gchar* FormatterFunc (ModestFormatter *self, const gchar *text, TnyHeader *header); -static TnyMsg *modest_formatter_do (ModestFormatter *self, - TnyMimePart *body, - TnyHeader *header, +static TnyMsg *modest_formatter_do (ModestFormatter *self, TnyMimePart *body, TnyHeader *header, FormatterFunc func); static gchar* modest_formatter_wrapper_cite (ModestFormatter *self, const gchar *text, TnyHeader *header); @@ -75,26 +74,23 @@ extract_text (ModestFormatter *self, TnyMimePart *body) tny_stream_reset (stream); g_object_unref (G_OBJECT(stream)); - g_object_unref (G_OBJECT(body)); gtk_text_buffer_get_bounds (buf, &start, &end); text = gtk_text_buffer_get_text (buf, &start, &end, FALSE); - g_object_unref (buf); + g_object_unref (G_OBJECT(buf)); /* Convert to desired content type if needed */ priv = MODEST_FORMATTER_GET_PRIVATE (self); - if (strcmp (tny_mime_part_get_content_type (body), priv->content_type)) { + if (strcmp (tny_mime_part_get_content_type (body), priv->content_type) == 0) { if (!strcmp (priv->content_type, "text/html")) converted_text = modest_text_utils_convert_to_html (text); else converted_text = g_strdup (text); -/* converted_text = modest_text_utils_convert_to_plain (text); */ g_free (text); text = converted_text; } - return text; } @@ -120,23 +116,24 @@ construct_from_text (TnyMimePart *part, } static TnyMsg * -modest_formatter_do (ModestFormatter *self, - TnyMimePart *body, - TnyHeader *header, - FormatterFunc func) +modest_formatter_do (ModestFormatter *self, TnyMimePart *body, TnyHeader *header, FormatterFunc func) { - TnyMsg *new_msg; + TnyMsg *new_msg = NULL; gchar *body_text = NULL, *txt = NULL; ModestFormatterPrivate *priv; g_return_val_if_fail (self, NULL); - g_return_val_if_fail (body, NULL); g_return_val_if_fail (header, NULL); g_return_val_if_fail (func, NULL); /* Build new part */ - new_msg = TNY_MSG (tny_camel_msg_new ()); - body_text = extract_text (self, body); + new_msg = tny_platform_factory_new_msg (modest_runtime_get_platform_factory()); + + if (body) + body_text = extract_text (self, body); + else + body_text = g_strdup (""); + txt = (gchar *) func (self, (const gchar*) body_text, header); priv = MODEST_FORMATTER_GET_PRIVATE (self); construct_from_text (TNY_MIME_PART (new_msg), (const gchar*) txt, priv->content_type); @@ -171,20 +168,24 @@ modest_formatter_attach (ModestFormatter *self, TnyMimePart *body, TnyHeader *he { TnyMsg *new_msg = NULL; gchar *attach_text = NULL; + const gchar *subject; TnyMimePart *body_part = NULL, *attach_part = NULL; ModestFormatterPrivate *priv; + TnyPlatformFactory *fact; + fact = modest_runtime_get_platform_factory (); /* Build new part */ - new_msg = TNY_MSG (tny_camel_msg_new ()); - body_part = TNY_MIME_PART (tny_camel_mime_part_new (camel_mime_part_new())); - attach_part = TNY_MIME_PART (tny_camel_mime_part_new (camel_mime_part_new())); + new_msg = tny_platform_factory_new_msg (fact); + body_part = tny_platform_factory_new_mime_part (fact); + attach_part = tny_platform_factory_new_mime_part (fact); /* Create the two parts */ priv = MODEST_FORMATTER_GET_PRIVATE (self); attach_text = extract_text (self, body); construct_from_text (body_part, "", priv->content_type); construct_from_text (attach_part, (const gchar*) attach_text, priv->content_type); - tny_mime_part_set_filename (attach_part, tny_header_get_subject (header)); + subject = tny_header_get_subject (header); + tny_mime_part_set_filename (attach_part, subject ? subject : _("No subject")); /* Add parts */ tny_mime_part_add_part (TNY_MIME_PART (new_msg), body_part); @@ -197,7 +198,7 @@ modest_formatter_attach (ModestFormatter *self, TnyMimePart *body, TnyHeader *he } ModestFormatter* -modest_formatter_new (const gchar *content_type) +modest_formatter_new (const gchar *content_type, const gchar *signature) { ModestFormatter *formatter; ModestFormatterPrivate *priv; @@ -205,6 +206,7 @@ modest_formatter_new (const gchar *content_type) formatter = g_object_new (MODEST_TYPE_FORMATTER, NULL); priv = MODEST_FORMATTER_GET_PRIVATE (formatter); priv->content_type = g_strdup (content_type); + priv->signature = g_strdup (signature); return formatter; } @@ -227,6 +229,9 @@ modest_formatter_finalize (GObject *object) if (priv->content_type) g_free (priv->content_type); + if (priv->signature) + g_free (priv->signature); + (*parent_class->finalize) (object); } @@ -278,6 +283,7 @@ modest_formatter_wrapper_cite (ModestFormatter *self, const gchar *text, TnyHead return modest_text_utils_cite (text, priv->content_type, + priv->signature, tny_header_get_from (header), tny_header_get_date_sent (header)); } @@ -289,6 +295,7 @@ modest_formatter_wrapper_inline (ModestFormatter *self, const gchar *text, TnyHe return modest_text_utils_inline (text, priv->content_type, + priv->signature, tny_header_get_from (header), tny_header_get_date_sent (header), tny_header_get_to (header), @@ -303,6 +310,7 @@ modest_formatter_wrapper_quote (ModestFormatter *self, const gchar *text, TnyHea /* TODO: get 80 from the configuration */ return modest_text_utils_quote (text, priv->content_type, + priv->signature, tny_header_get_from (header), tny_header_get_date_sent (header), 80);