* fix all compiler warnings (when using gtk/ frontend)
[modest] / src / modest-mail-operation.c
index 5ea906b..59d3509 100644 (file)
@@ -39,9 +39,9 @@
 #include <tny-simple-list.h>
 #include <camel/camel-stream-mem.h>
 #include <glib/gi18n.h>
-
+#include <modest-tny-account.h>
 #include "modest-text-utils.h"
-#include "modest-tny-msg-actions.h"
+#include "modest-tny-msg.h"
 #include "modest-tny-platform-factory.h"
 #include "modest-marshal.h"
 #include "modest-formatter.h"
@@ -85,10 +85,6 @@ static gboolean    modest_mail_operation_xfer_msg          (ModestMailOperation
                                                            TnyFolder *folder, 
                                                            gboolean delete_original);
 
-static TnyFolder * modest_mail_operation_find_trash_folder (ModestMailOperation *self,
-                                                           TnyStoreAccount *store_account);
-
-
 enum _ModestMailOperationSignals 
 {
        PROGRESS_CHANGED_SIGNAL,
@@ -312,7 +308,7 @@ create_reply_forward_mail (TnyMsg *msg, const gchar *from, gboolean is_reply, gu
        /* 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_actions_find_body_part (msg, FALSE);
+       body   = modest_tny_msg_find_body_part (msg, FALSE);
 
        /* TODO: select the formatter from account prefs */
        formatter = modest_formatter_new ("text/plain");
@@ -339,8 +335,9 @@ create_reply_forward_mail (TnyMsg *msg, const gchar *from, gboolean is_reply, gu
                        break;
                }
        }
-       g_object_unref (G_OBJECT (formatter));
-
+       g_object_unref (G_OBJECT(formatter));
+       g_object_unref (G_OBJECT(body));
+       
        /* Fill the header */
        fact = modest_tny_platform_factory_get_instance ();
        new_header = TNY_HEADER (tny_platform_factory_new_header (fact));
@@ -349,8 +346,8 @@ create_reply_forward_mail (TnyMsg *msg, const gchar *from, gboolean is_reply, gu
        tny_header_set_replyto (new_header, from);
 
        /* Change the subject */
-       new_subject = 
-               (gchar *) modest_text_utils_derived_subject (tny_header_get_subject(header), 
+       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);
@@ -392,7 +389,7 @@ modest_mail_operation_create_reply_mail (TnyMsg *msg,
                                         ModestMailOperationReplyType reply_type,
                                         ModestMailOperationReplyMode reply_mode)
 {
-       TnyMsg *new_msg;
+       TnyMsg *new_msg = NULL;
        TnyHeader *new_header, *header;
        const gchar* reply_to;
        gchar *new_cc = NULL;
@@ -405,6 +402,7 @@ modest_mail_operation_create_reply_mail (TnyMsg *msg,
        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
@@ -429,8 +427,8 @@ modest_mail_operation_create_reply_mail (TnyMsg *msg,
                /* 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, 
+               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);
@@ -496,10 +494,11 @@ folder_refresh_cb (TnyFolder *folder, gboolean canceled, GError **err, gpointer
                g_object_unref (G_OBJECT (list));
                g_slice_free (RefreshFolderAsyncHelper, helper);
        } else {
-               tny_folder_refresh_async (TNY_FOLDER (tny_iterator_get_current (helper->iter)),
-                                         folder_refresh_cb,
+               TnyFolder *folder = TNY_FOLDER (tny_iterator_get_current (helper->iter));
+               tny_folder_refresh_async (folder, folder_refresh_cb,
                                          status_update_cb, 
                                          helper);
+               g_object_unref (G_OBJECT(folder));
        }
        g_signal_emit (G_OBJECT (self), signals[PROGRESS_CHANGED_SIGNAL], 0, NULL);
 }
@@ -511,7 +510,8 @@ update_folders_cb (TnyFolderStore *folder_store, TnyList *list, GError **err, gp
        ModestMailOperation *self;
        ModestMailOperationPrivate *priv;
        RefreshFolderAsyncHelper *helper;
-
+       TnyFolder *folder;
+       
        self  = MODEST_MAIL_OPERATION (user_data);
        priv  = MODEST_MAIL_OPERATION_GET_PRIVATE (self);
 
@@ -532,10 +532,10 @@ update_folders_cb (TnyFolderStore *folder_store, TnyList *list, GError **err, gp
        helper->canceled = 0;
 
        /* Async refresh folders */
-       tny_folder_refresh_async (TNY_FOLDER (tny_iterator_get_current (helper->iter)),
-                                 folder_refresh_cb,
-                                 status_update_cb, 
-                                 helper);
+       folder = TNY_FOLDER (tny_iterator_get_current (helper->iter));
+       tny_folder_refresh_async (folder, folder_refresh_cb,
+                                 status_update_cb, helper);
+       g_object_unref (G_OBJECT(folder));
 }
 
 gboolean
@@ -687,13 +687,10 @@ modest_mail_operation_remove_folder (ModestMailOperation *self,
        /* Delete folder or move to trash */
        if (remove_to_trash) {
                TnyFolder *trash_folder;
-
-               trash_folder = modest_mail_operation_find_trash_folder (self,
-                                                                       TNY_STORE_ACCOUNT (folder_store));
-
+               trash_folder = modest_tny_account_get_special_folder (TNY_ACCOUNT(folder_store),
+                                                                     TNY_FOLDER_TYPE_TRASH);
                /* TODO: error_handling */
-               modest_mail_operation_move_folder (self, 
-                                                  folder, 
+               modest_mail_operation_move_folder (self, folder, 
                                                   TNY_FOLDER_STORE (trash_folder));
        } else {
                tny_folder_store_remove_folder (folder_store, folder, NULL); /* FIXME */
@@ -761,8 +758,7 @@ modest_mail_operation_xfer_folder (ModestMailOperation *self,
 
        /* Create the destination folder */
        folder_name = tny_folder_get_name (folder);
-       dest_folder = modest_mail_operation_create_folder (self, 
-                                                          parent, folder_name);
+       dest_folder = modest_mail_operation_create_folder (self, parent, folder_name);
 
        /* Transfer messages */
        headers = TNY_LIST (tny_simple_list_new ());
@@ -775,12 +771,11 @@ modest_mail_operation_xfer_folder (ModestMailOperation *self,
        iter = tny_list_create_iterator (folders);
 
        while (!tny_iterator_is_done (iter)) {
-
                child = TNY_FOLDER (tny_iterator_get_current (iter));
-               modest_mail_operation_xfer_folder (self, child,
-                                                  TNY_FOLDER_STORE (dest_folder),
+               modest_mail_operation_xfer_folder (self, child, TNY_FOLDER_STORE (dest_folder),
                                                   delete_original);
                tny_iterator_next (iter);
+               g_object_unref (G_OBJECT(child));
        }
 
        /* Delete source folder (if needed) */
@@ -795,45 +790,6 @@ modest_mail_operation_xfer_folder (ModestMailOperation *self,
 }
 
 
-/* FIXME: this method should be rewritten when the policy for the
-   Trash folder becomes clearer */
-static TnyFolder *
-modest_mail_operation_find_trash_folder (ModestMailOperation *self,
-                                        TnyStoreAccount *store_account)
-{
-       TnyList *folders;
-       TnyIterator *iter;
-       gboolean found;
-       /*TnyFolderStoreQuery *query;*/
-       TnyFolder *trash_folder;
-
-       /* Look for Trash folder */
-       folders = TNY_LIST (tny_simple_list_new ());
-       tny_folder_store_get_folders (TNY_FOLDER_STORE (store_account),
-                                     folders, NULL, NULL); /* FIXME */
-       iter = tny_list_create_iterator (folders);
-
-       found = FALSE;
-       while (!tny_iterator_is_done (iter) && !found) {
-
-               trash_folder = TNY_FOLDER (tny_iterator_get_current (iter));
-               if (tny_folder_get_folder_type (trash_folder) == TNY_FOLDER_TYPE_TRASH)
-                       found = TRUE;
-               else
-                       tny_iterator_next (iter);
-       }
-
-       /* Clean up */
-       g_object_unref (G_OBJECT (folders));
-       g_object_unref (G_OBJECT (iter));
-
-       /* TODO: better error handling management */
-       if (!found) 
-               return NULL;
-       else
-               return trash_folder;
-}
-
 /* ******************************************************************* */
 /* **************************  MSG  ACTIONS  ************************* */
 /* ******************************************************************* */
@@ -877,8 +833,8 @@ modest_mail_operation_remove_msg (ModestMailOperation *self,
                TnyStoreAccount *store_account;
 
                store_account = TNY_STORE_ACCOUNT (tny_folder_get_account (folder));
-               trash_folder = modest_mail_operation_find_trash_folder (self, store_account);
-
+               trash_folder = modest_tny_account_get_special_folder (TNY_ACCOUNT(store_account),
+                                                                     TNY_FOLDER_TYPE_TRASH);
                if (trash_folder) {
                        modest_mail_operation_move_msg (self, header, trash_folder);
 /*                     g_object_unref (trash_folder); */
@@ -896,7 +852,7 @@ modest_mail_operation_remove_msg (ModestMailOperation *self,
                g_object_unref (G_OBJECT (store_account));
        } else {
                tny_folder_remove_msg (folder, header, NULL); /* FIXME */
-               tny_folder_expunge (folder, NULL); /* FIXME */
+               tny_folder_sync(folder, TRUE, NULL); /* FIXME */
        }
 
        /* Free */