* Moved two methods from mail operation API to ModestTnyMsg API
authorSergio Villar Senin <svillar@igalia.com>
Wed, 21 Mar 2007 10:28:19 +0000 (10:28 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Wed, 21 Mar 2007 10:28:19 +0000 (10:28 +0000)
pmo-trunk-r915

src/gnome/modest-main-window.c
src/maemo/modest-main-window.c
src/modest-mail-operation.c
src/modest-mail-operation.h
src/modest-tny-msg.c
src/modest-tny-msg.h
src/modest-ui-actions.c

index 1b43e42..b8cc009 100644 (file)
@@ -104,8 +104,8 @@ struct _ModestMainWindowPrivate {
 typedef struct _GetMsgAsyncHelper {
        ModestMainWindowPrivate *main_window_private;
        guint action;
-       ModestMailOperationReplyType reply_type;
-       ModestMailOperationForwardType forward_type;
+       ModestTnyMsgReplyType reply_type;
+       ModestTnyMsgForwardType forward_type;
        gchar *from;
        TnyIterator *iter;
 } GetMsgAsyncHelper;
index c6da458..5d24933 100644 (file)
@@ -86,8 +86,8 @@ struct _ModestMainWindowPrivate {
 typedef struct _GetMsgAsyncHelper {
        ModestMainWindowPrivate *main_window_private;
        guint action;
-       ModestMailOperationReplyType reply_type;
-       ModestMailOperationForwardType forward_type;
+       ModestTnyMsgReplyType reply_type;
+       ModestTnyMsgForwardType forward_type;
        gchar *from;
        TnyIterator *iter;
 } GetMsgAsyncHelper;
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); */
-       }
-}
-
index c03d4ec..c3ec8d2 100644 (file)
@@ -47,37 +47,6 @@ typedef struct _ModestMailOperation      ModestMailOperation;
 typedef struct _ModestMailOperationClass ModestMailOperationClass;
 
 /**
- * ModestMailOperationForwardType:
- *
- * How the original message will be forwarded to the recipient
- */
-typedef enum _ModestMailOperationForwardType {
-       MODEST_MAIL_OPERATION_FORWARD_TYPE_INLINE = 1,
-       MODEST_MAIL_OPERATION_FORWARD_TYPE_ATTACHMENT
-} ModestMailOperationForwardType;
-
-/**
- * ModestMailOperationReplyType:
- *
- * How the original message will be forwarded to the recipient
- */
-typedef enum _ModestMailOperationReplyType {
-       MODEST_MAIL_OPERATION_REPLY_TYPE_CITE = 1,
-       MODEST_MAIL_OPERATION_REPLY_TYPE_QUOTE
-} ModestMailOperationReplyType;
-
-/**
- * ModestMailOperationReplyMode:
- *
- * Who will be the recipients of the replied message
- */
-typedef enum _ModestMailOperationReplyMode {
-       MODEST_MAIL_OPERATION_REPLY_MODE_SENDER,
-       MODEST_MAIL_OPERATION_REPLY_MODE_LIST,
-       MODEST_MAIL_OPERATION_REPLY_MODE_ALL
-} ModestMailOperationReplyMode;
-
-/**
  * ModestMailOperationStatus:
  *
  * The state of a mail operation
@@ -154,34 +123,6 @@ void    modest_mail_operation_send_new_mail   (ModestMailOperation *self,
                                               const GList *attachments_list);
 
 /**
- * modest_mail_operation_create_forward_mail:
- * @msg: a valid #TnyMsg instance
- * @forward_type: the type of formatting used to create the forwarded message
- * 
- * Creates a forwarded message from an existing one
- * 
- * Returns: a new #TnyMsg, or NULL in case of error
- **/
-TnyMsg* modest_mail_operation_create_forward_mail (TnyMsg *msg, 
-                                                  const gchar *from,
-                                                  ModestMailOperationForwardType forward_type);
-
-/**
- * modest_mail_operation_create_reply_mail:
- * @msg: a valid #TnyMsg instance
- * @reply_type: the type of formatting used to create the reply message
- * @reply_mode: the mode of reply: to the sender only, to a mail list or to all
- * 
- * Creates a new message to reply to an existing one
- * 
- * Returns: Returns: a new #TnyMsg, or NULL in case of error
- **/
-TnyMsg* modest_mail_operation_create_reply_mail    (TnyMsg *msg, 
-                                                   const gchar *from,
-                                                   ModestMailOperationReplyType reply_type,
-                                                   ModestMailOperationReplyMode reply_mode);
-
-/**
  * modest_mail_operation_update_account:
  * @self: a #ModestMailOperation
  * @store_account: a #TnyStoreAccount
index fac56d5..6a4f827 100644 (file)
@@ -33,6 +33,7 @@
 #include <tny-simple-list.h>
 #include <tny-folder.h>
 #include <modest-runtime.h>
+#include "modest-formatter.h"
 #include <tny-camel-stream.h>
 #include <camel/camel-stream-mem.h>
 
@@ -261,6 +262,168 @@ modest_tny_msg_find_body_part (TnyMsg *msg, gboolean want_html)
 }
 
 
+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_TNY_MSG_REPLY_TYPE_CITE:
+               default:
+                       new_msg = modest_formatter_cite  (formatter, body, header);
+                       break;
+               case MODEST_TNY_MSG_REPLY_TYPE_QUOTE:
+                       new_msg = modest_formatter_quote (formatter, body, header);
+                       break;
+               }
+       } else {
+               switch (type) {
+               case MODEST_TNY_MSG_FORWARD_TYPE_INLINE:
+               default:
+                       new_msg = modest_formatter_inline  (formatter, body, header);
+                       break;
+               case MODEST_TNY_MSG_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;
+}
+
+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);
+}
+
+TnyMsg* 
+modest_tny_msg_create_forward_msg (TnyMsg *msg, 
+                                  const gchar *from,
+                                  ModestTnyMsgForwardType 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_tny_msg_create_reply_msg (TnyMsg *msg, 
+                                const gchar *from,
+                                ModestTnyMsgReplyType reply_type,
+                                ModestTnyMsgReplyMode 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_TNY_MSG_REPLY_MODE_SENDER:
+               /* Do not fill neither cc nor bcc */
+               break;
+       case MODEST_TNY_MSG_REPLY_MODE_LIST:
+               /* TODO */
+               break;
+       case MODEST_TNY_MSG_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 gboolean
 is_ascii(const gchar *s)
index d99b0cc..250c6f8 100644 (file)
 #define __MODEST_TNY_MSG_H__
 
 /**
+ * ModestTnyMsgForwardType:
+ *
+ * How the original message will be forwarded to the recipient
+ */
+typedef enum _ModestTnyMsgForwardType {
+       MODEST_TNY_MSG_FORWARD_TYPE_INLINE = 1,
+       MODEST_TNY_MSG_FORWARD_TYPE_ATTACHMENT
+} ModestTnyMsgForwardType;
+
+/**
+ * ModestTnyMsgReplyType:
+ *
+ * How the original message will be forwarded to the recipient
+ */
+typedef enum _ModestTnyMsgReplyType {
+       MODEST_TNY_MSG_REPLY_TYPE_CITE = 1,
+       MODEST_TNY_MSG_REPLY_TYPE_QUOTE
+} ModestTnyMsgReplyType;
+
+/**
+ * ModestTnyMsgReplyMode:
+ *
+ * Who will be the recipients of the replied message
+ */
+typedef enum _ModestTnyMsgReplyMode {
+       MODEST_TNY_MSG_REPLY_MODE_SENDER,
+       MODEST_TNY_MSG_REPLY_MODE_LIST,
+       MODEST_TNY_MSG_REPLY_MODE_ALL
+} ModestTnyMsgReplyMode;
+
+/**
  * modest_tny_msg_new:
  * @mailto: recipient for the message
  * @mailfrom: sender of this message
@@ -58,7 +89,7 @@ TnyMsg* modest_tny_msg_new (const gchar* mailto, const gchar* mailfrom, const gc
  * 
  * Returns: the TnyMsgMimePart for the found part, or NULL if no matching part is found
  */     
-TnyMimePart *modest_tny_msg_find_body_part (TnyMsg * self, gboolean want_html);
+TnyMimePart*  modest_tny_msg_find_body_part  (TnyMsg * self, gboolean want_html);
 
 
 /**
@@ -72,6 +103,38 @@ TnyMimePart *modest_tny_msg_find_body_part (TnyMsg * self, gboolean want_html);
  * Returns: the body of the message as text, or NULL if it is not found
  * the text should be freed with 
  **/
-gchar* modest_tny_msg_get_body (TnyMsg *self, gboolean want_html);
+gchar*        modest_tny_msg_get_body        (TnyMsg *self, gboolean want_html);
+
+
+/**
+ * modest_tny_msg_create_forward_msg:
+ * @msg: a valid #TnyMsg instance
+ * @from: the sender of the forwarded mail
+ * @forward_type: the type of formatting used to create the forwarded message
+ * 
+ * Creates a forwarded message from an existing one
+ * 
+ * Returns: a new #TnyMsg, or NULL in case of error
+ **/
+TnyMsg*       modest_tny_msg_create_forward_msg   (TnyMsg *msg, 
+                                                  const gchar *from,
+                                                  ModestTnyMsgForwardType forward_type);
+
+/**
+ * modest_tny_msg_create_reply_msg:
+ * @msg: a valid #TnyMsg instance
+ * @from: the sender of the forwarded mail
+ * @reply_type: the type of formatting used to create the reply message
+ * @reply_mode: the mode of reply: to the sender only, to a mail list or to all
+ * 
+ * Creates a new message to reply to an existing one
+ * 
+ * Returns: Returns: a new #TnyMsg, or NULL in case of error
+ **/
+TnyMsg*       modest_tny_msg_create_reply_msg     (TnyMsg *msg, 
+                                                  const gchar *from,
+                                                  ModestTnyMsgReplyType reply_type,
+                                                  ModestTnyMsgReplyMode reply_mode);
+
 
 #endif /* __MODEST_TNY_MSG_H__ */
index c705470..032a094 100644 (file)
@@ -331,19 +331,19 @@ reply_forward_func (gpointer data, gpointer user_data)
        switch (rf_helper->action) {
        case ACTION_REPLY:
                new_msg = 
-                       modest_mail_operation_create_reply_mail (msg,  from, 
-                                                                rf_helper->reply_forward_type,
-                                                                MODEST_MAIL_OPERATION_REPLY_MODE_SENDER);
+                       modest_tny_msg_create_reply_msg (msg,  from, 
+                                                        rf_helper->reply_forward_type,
+                                                        MODEST_TNY_MSG_REPLY_MODE_SENDER);
                break;
        case ACTION_REPLY_TO_ALL:
                new_msg = 
-                       modest_mail_operation_create_reply_mail (msg, from, rf_helper->reply_forward_type,
-                                                                MODEST_MAIL_OPERATION_REPLY_MODE_ALL);
+                       modest_tny_msg_create_reply_msg (msg, from, rf_helper->reply_forward_type,
+                                                        MODEST_TNY_MSG_REPLY_MODE_ALL);
                edit_type = MODEST_EDIT_TYPE_REPLY;
                break;
        case ACTION_FORWARD:
                new_msg = 
-                       modest_mail_operation_create_forward_mail (msg, from, rf_helper->reply_forward_type);
+                       modest_tny_msg_create_forward_msg (msg, from, rf_helper->reply_forward_type);
                edit_type = MODEST_EDIT_TYPE_FORWARD;
                break;
        default: