X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-formatter.c;h=ff73f89e9d6e30ff2af5cf0768e390d6fb96b071;hb=3266fbf87e009daf846687835198f80ae3a2d923;hp=2e175a6752ce8d8da505c57f8043f201123cdf79;hpb=3084439a659fa9aec750337f94cad4bca0c92898;p=modest diff --git a/src/modest-formatter.c b/src/modest-formatter.c index 2e175a6..ff73f89 100644 --- a/src/modest-formatter.c +++ b/src/modest-formatter.c @@ -27,12 +27,16 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#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 { @@ -46,9 +50,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); @@ -71,25 +73,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; } @@ -115,18 +115,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); @@ -141,19 +147,19 @@ modest_formatter_do (ModestFormatter *self, TnyMsg * modest_formatter_cite (ModestFormatter *self, TnyMimePart *body, TnyHeader *header) { - modest_formatter_do (self, body, header, modest_formatter_wrapper_cite); + return modest_formatter_do (self, body, header, modest_formatter_wrapper_cite); } TnyMsg * modest_formatter_quote (ModestFormatter *self, TnyMimePart *body, TnyHeader *header) { - modest_formatter_do (self, body, header, modest_formatter_wrapper_quote); + return modest_formatter_do (self, body, header, modest_formatter_wrapper_quote); } TnyMsg * modest_formatter_inline (ModestFormatter *self, TnyMimePart *body, TnyHeader *header) { - modest_formatter_do (self, body, header, modest_formatter_wrapper_inline); + return modest_formatter_do (self, body, header, modest_formatter_wrapper_inline); } TnyMsg * @@ -161,20 +167,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); @@ -227,7 +237,8 @@ modest_formatter_class_init (ModestFormatterClass *class) parent_class = g_type_class_peek_parent (class); object_class = (GObjectClass*) class; - + object_class->finalize = modest_formatter_finalize; + g_type_class_add_private (object_class, sizeof (ModestFormatterPrivate)); }