* Fixed a compilation warning
[modest] / src / modest-formatter.c
index 81af6dc..8fcbf0d 100644 (file)
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <gtk/gtk.h>
 #include <glib/gi18n.h>
 #include <string.h>
 #include <tny-header.h>
 #include <tny-gtk-text-buffer-stream.h>
 #include <tny-camel-stream.h>
-#include <tny-camel-msg.h>
 #include <camel/camel-stream-mem.h>
 #include "modest-formatter.h"
 #include "modest-text-utils.h"
+#include "modest-tny-platform-factory.h"
+#include <modest-runtime.h>
 
 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,25 +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 = modest_text_utils_convert_to_plain (text); */
+               else
+                       converted_text = g_strdup (text);
 
                g_free (text);
                text = converted_text;
        }
-
        return text;
 }
 
@@ -119,18 +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 (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);
@@ -165,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);
@@ -191,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;
@@ -199,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;
 }
@@ -221,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);
 }
 
@@ -272,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));
 }
@@ -283,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),
@@ -297,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);