+ result = modest_text_utils_quote (text,
+ priv->content_type,
+ priv->signature,
+ tny_header_get_from (header),
+ tny_header_get_date_sent (header),
+ filenames,
+ 80);
+
+ g_list_foreach (filenames, (GFunc) g_free, NULL);
+ g_list_free (filenames);
+ return result;
+}
+
+TnyMsg *
+modest_formatter_create_message (ModestFormatter *self, gboolean single_body, gboolean has_attachments)
+{
+ TnyMsg *result = NULL;
+ TnyPlatformFactory *fact = NULL;
+ TnyMimePart *body_mime_part = NULL;
+ fact = modest_runtime_get_platform_factory ();
+ result = tny_platform_factory_new_msg (fact);
+ if (has_attachments) {
+ tny_mime_part_set_content_type (TNY_MIME_PART (result), "multipart/mixed");
+ if (!single_body) {
+ body_mime_part = tny_platform_factory_new_mime_part (fact);
+ tny_mime_part_set_content_type (body_mime_part, "multipart/alternative");
+ tny_mime_part_add_part (TNY_MIME_PART (result), body_mime_part);
+ g_object_unref (body_mime_part);
+ }
+ } else if (!single_body) {
+ tny_mime_part_set_content_type (TNY_MIME_PART (result), "multipart/alternative");
+ }
+
+ return result;
+}
+
+TnyMimePart *
+modest_formatter_create_body_part (ModestFormatter *self, TnyMsg *msg)
+{
+ TnyMimePart *result = NULL;
+ const gchar *msg_content_type = NULL;
+ TnyPlatformFactory *fact = NULL;
+
+ fact = modest_runtime_get_platform_factory ();
+ msg_content_type = tny_mime_part_get_content_type (TNY_MIME_PART (msg));
+ /* First it checks if the main part is alternative */
+ if ((msg_content_type != NULL) &&
+ (!g_strcasecmp (msg_content_type, "multipart/alternative"))) {
+ result = tny_platform_factory_new_mime_part (fact);
+ tny_mime_part_add_part (TNY_MIME_PART (msg), result);
+ return result;
+ } else if ((msg_content_type != NULL) &&
+ (!g_strcasecmp (msg_content_type, "multipart/mixed"))) {
+ 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);
+ while (!tny_iterator_is_done (iter)) {
+ TnyMimePart *part = TNY_MIME_PART (tny_iterator_get_current (iter));
+ if (!g_strcasecmp(tny_mime_part_get_content_type (part), "multipart/alternative")) {
+ alternative_part = part;
+ break;
+ }
+ tny_iterator_next (iter);
+ }
+ result = tny_platform_factory_new_mime_part (fact);
+ if (alternative_part != NULL) {
+ tny_mime_part_add_part (alternative_part, result);
+ } else {
+ tny_mime_part_add_part (TNY_MIME_PART (msg), result);
+ }
+ g_object_unref (G_OBJECT (parts));
+ return result;
+ } else {
+ /* We add a reference as this method is intended to obtain
+ a ref'ed part */
+ g_object_ref (msg);
+ return TNY_MIME_PART (msg);
+ }