* Moved two methods from mail operation API to ModestTnyMsg API
[modest] / src / modest-mail-operation.c
index 1c5e43f..97a76fa 100644 (file)
@@ -47,7 +47,6 @@
 #include "modest-tny-msg.h"
 #include "modest-tny-platform-factory.h"
 #include "modest-marshal.h"
-#include "modest-formatter.h"
 #include "modest-error.h"
 
 /* 'private'/'protected' functions */
@@ -68,8 +67,6 @@ static void     update_folders_cb    (TnyFolderStore *self,
                                      TnyList *list, 
                                      GError **err, 
                                      gpointer user_data);
-static void     add_attachments      (TnyMsg *msg, 
-                                     GList *attachments_list);
 
 enum _ModestMailOperationSignals 
 {
@@ -257,169 +254,6 @@ modest_mail_operation_send_new_mail (ModestMailOperation *self,
 }
 
 static void
-add_if_attachment (gpointer data, gpointer user_data)
-{
-       TnyMimePart *part;
-       GList *attachments_list;
-
-       part = TNY_MIME_PART (data);
-       attachments_list = (GList *) user_data;
-
-       if (tny_mime_part_is_attachment (part))
-               attachments_list = g_list_prepend (attachments_list, part);
-}
-
-
-static TnyMsg *
-create_reply_forward_mail (TnyMsg *msg, const gchar *from, gboolean is_reply, guint type)
-{
-       TnyMsg *new_msg;
-       TnyHeader *new_header, *header;
-       gchar *new_subject;
-       TnyMimePart *body;
-       ModestFormatter *formatter;
-
-       /* Get body from original msg. Always look for the text/plain
-          part of the message to create the reply/forwarded mail */
-       header = tny_msg_get_header (msg);
-       body   = modest_tny_msg_find_body_part (msg, FALSE);
-
-       /* TODO: select the formatter from account prefs */
-       formatter = modest_formatter_new ("text/plain");
-
-       /* Format message body */
-       if (is_reply) {
-               switch (type) {
-               case MODEST_MAIL_OPERATION_REPLY_TYPE_CITE:
-               default:
-                       new_msg = modest_formatter_cite  (formatter, body, header);
-                       break;
-               case MODEST_MAIL_OPERATION_REPLY_TYPE_QUOTE:
-                       new_msg = modest_formatter_quote (formatter, body, header);
-                       break;
-               }
-       } else {
-               switch (type) {
-               case MODEST_MAIL_OPERATION_FORWARD_TYPE_INLINE:
-               default:
-                       new_msg = modest_formatter_inline  (formatter, body, header);
-                       break;
-               case MODEST_MAIL_OPERATION_FORWARD_TYPE_ATTACHMENT:
-                       new_msg = modest_formatter_attach (formatter, body, header);
-                       break;
-               }
-       }
-       g_object_unref (G_OBJECT(formatter));
-       g_object_unref (G_OBJECT(body));
-       
-       /* Fill the header */
-       new_header = tny_msg_get_header (new_msg);      
-       tny_header_set_from (new_header, from);
-       tny_header_set_replyto (new_header, from);
-
-       /* Change the subject */
-       new_subject =
-               (gchar *) modest_text_utils_derived_subject (tny_header_get_subject(header),
-                                                            (is_reply) ? _("Re:") : _("Fwd:"));
-       tny_header_set_subject (new_header, (const gchar *) new_subject);
-       g_free (new_subject);
-
-       /* Clean */
-       g_object_unref (G_OBJECT (new_header));
-       g_object_unref (G_OBJECT (header));
-
-       return new_msg;
-}
-
-TnyMsg* 
-modest_mail_operation_create_forward_mail (TnyMsg *msg, 
-                                          const gchar *from,
-                                          ModestMailOperationForwardType forward_type)
-{
-       TnyMsg *new_msg;
-       TnyList *parts = NULL;
-       GList *attachments_list = NULL;
-
-       new_msg = create_reply_forward_mail (msg, from, FALSE, forward_type);
-
-       /* Add attachments */
-       parts = TNY_LIST (tny_simple_list_new());
-       tny_mime_part_get_parts (TNY_MIME_PART (msg), parts);
-       tny_list_foreach (parts, add_if_attachment, attachments_list);
-       add_attachments (new_msg, attachments_list);
-
-       /* Clean */
-       if (attachments_list)
-               g_list_free (attachments_list);
-       g_object_unref (G_OBJECT (parts));
-
-       return new_msg;
-}
-
-TnyMsg* 
-modest_mail_operation_create_reply_mail (TnyMsg *msg, 
-                                        const gchar *from,
-                                        ModestMailOperationReplyType reply_type,
-                                        ModestMailOperationReplyMode reply_mode)
-{
-       TnyMsg *new_msg = NULL;
-       TnyHeader *new_header, *header;
-       const gchar* reply_to;
-       gchar *new_cc = NULL;
-       const gchar *cc = NULL, *bcc = NULL;
-       GString *tmp = NULL;
-
-       new_msg = create_reply_forward_mail (msg, from, TRUE, reply_type);
-
-       /* Fill the header */
-       header = tny_msg_get_header (msg);
-       new_header = tny_msg_get_header (new_msg);
-       reply_to = tny_header_get_replyto (header);
-
-       if (reply_to)
-               tny_header_set_to (new_header, reply_to);
-       else
-               tny_header_set_to (new_header, tny_header_get_from (header));
-
-       switch (reply_mode) {
-       case MODEST_MAIL_OPERATION_REPLY_MODE_SENDER:
-               /* Do not fill neither cc nor bcc */
-               break;
-       case MODEST_MAIL_OPERATION_REPLY_MODE_LIST:
-               /* TODO */
-               break;
-       case MODEST_MAIL_OPERATION_REPLY_MODE_ALL:
-               /* Concatenate to, cc and bcc */
-               cc = tny_header_get_cc (header);
-               bcc = tny_header_get_bcc (header);
-
-               tmp = g_string_new (tny_header_get_to (header));
-               if (cc)  g_string_append_printf (tmp, ",%s",cc);
-               if (bcc) g_string_append_printf (tmp, ",%s",bcc);
-
-               /* Remove my own address from the cc list. TODO:
-                  remove also the To: of the new message, needed due
-                  to the new reply_to feature */
-               new_cc = (gchar *)
-                       modest_text_utils_remove_address ((const gchar *) tmp->str,
-                                                         from);
-               /* FIXME: remove also the mails from the new To: */
-               tny_header_set_cc (new_header, new_cc);
-
-               /* Clean */
-               g_string_free (tmp, TRUE);
-               g_free (new_cc);
-               break;
-       }
-
-       /* Clean */
-       g_object_unref (G_OBJECT (new_header));
-       g_object_unref (G_OBJECT (header));
-
-       return new_msg;
-}
-
-static void
 status_update_cb (TnyFolder *folder, const gchar *what, gint status, gint oftotal, gpointer user_data) 
 {
        g_print ("%s status: %d, of total %d\n", what, status, oftotal);
@@ -839,40 +673,3 @@ modest_mail_operation_xfer_msg (ModestMailOperation *self,
 
        return TRUE;
 }
-
-
-/* ******************************************************************* */
-/* ************************* UTILIY FUNCTIONS ************************ */
-/* ******************************************************************* */
-
-static void
-add_attachments (TnyMsg *msg, GList *attachments_list)
-{
-       GList *pos;
-       TnyMimePart *attachment_part, *old_attachment;
-       const gchar *attachment_content_type;
-       const gchar *attachment_filename;
-       TnyStream *attachment_stream;
-
-       for (pos = (GList *)attachments_list; pos; pos = pos->next) {
-
-               old_attachment = pos->data;
-               attachment_filename = tny_mime_part_get_filename (old_attachment);
-               attachment_stream = tny_mime_part_get_stream (old_attachment);
-               attachment_part = tny_platform_factory_new_mime_part
-                       (modest_runtime_get_platform_factory());
-               
-               attachment_content_type = tny_mime_part_get_content_type (old_attachment);
-                                
-               tny_mime_part_construct_from_stream (attachment_part,
-                                                    attachment_stream,
-                                                    attachment_content_type);
-               tny_stream_reset (attachment_stream);
-               
-               tny_mime_part_set_filename (attachment_part, attachment_filename);
-               
-               tny_mime_part_add_part (TNY_MIME_PART (msg), attachment_part);
-/*             g_object_unref (attachment_part); */
-       }
-}
-