* small cleanups
[modest] / src / modest-mail-operation.c
index e0068b3..6eefdf6 100644 (file)
@@ -80,10 +80,10 @@ static void modest_mail_operation_xfer_folder (ModestMailOperation *self,
                                               TnyFolderStore *parent,
                                               gboolean delete_original);
 
-static void modest_mail_operation_xfer_msg    (ModestMailOperation *self,
-                                              TnyHeader *header, 
-                                              TnyFolder *folder, 
-                                              gboolean delete_original);
+static gboolean    modest_mail_operation_xfer_msg          (ModestMailOperation *self,
+                                                           TnyHeader *header, 
+                                                           TnyFolder *folder, 
+                                                           gboolean delete_original);
 
 static TnyFolder * modest_mail_operation_find_trash_folder (ModestMailOperation *self,
                                                            TnyStoreAccount *store_account);
@@ -839,26 +839,26 @@ modest_mail_operation_find_trash_folder (ModestMailOperation *self,
 /* **************************  MSG  ACTIONS  ************************* */
 /* ******************************************************************* */
 
-void 
+gboolean 
 modest_mail_operation_copy_msg (ModestMailOperation *self,
                                TnyHeader *header, 
                                TnyFolder *folder)
 {
-       g_return_if_fail (TNY_IS_HEADER (header));
-       g_return_if_fail (TNY_IS_FOLDER (folder));
+       g_return_val_if_fail (TNY_IS_HEADER (header), FALSE);
+       g_return_val_if_fail (TNY_IS_FOLDER (folder), FALSE);
 
-       modest_mail_operation_xfer_msg (self, header, folder, FALSE);
+       return modest_mail_operation_xfer_msg (self, header, folder, FALSE);
 }
 
-void 
+gboolean 
 modest_mail_operation_move_msg (ModestMailOperation *self,
                                TnyHeader *header, 
                                TnyFolder *folder)
 {
-       g_return_if_fail (TNY_IS_HEADER (header));
-       g_return_if_fail (TNY_IS_FOLDER (folder));
+       g_return_val_if_fail (TNY_IS_HEADER (header), FALSE);
+       g_return_val_if_fail (TNY_IS_FOLDER (folder), FALSE);
 
-       modest_mail_operation_xfer_msg (self, header, folder, TRUE);
+       return modest_mail_operation_xfer_msg (self, header, folder, TRUE);
 }
 
 void 
@@ -880,7 +880,19 @@ modest_mail_operation_remove_msg (ModestMailOperation *self,
                store_account = TNY_STORE_ACCOUNT (tny_folder_get_account (folder));
                trash_folder = modest_mail_operation_find_trash_folder (self, store_account);
 
-               modest_mail_operation_move_msg (self, header, trash_folder);
+               if (trash_folder) {
+                       modest_mail_operation_move_msg (self, header, trash_folder);
+/*                     g_object_unref (trash_folder); */
+               } else {
+                       ModestMailOperationPrivate *priv;
+
+                       /* Set status failed and set an error */
+                       priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self);
+                       priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED;
+                       g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
+                                    MODEST_MAIL_OPERATION_ERROR_ITEM_NOT_FOUND,
+                                    _("Error trying to delete a message. Trash folder not found"));
+               }
 
                g_object_unref (G_OBJECT (store_account));
        } else {
@@ -893,24 +905,44 @@ modest_mail_operation_remove_msg (ModestMailOperation *self,
 }
 
 static void
+transfer_msgs_cb (TnyFolder *folder, GError **err, gpointer user_data)
+{
+       ModestMailOperationPrivate *priv;
+
+       priv = MODEST_MAIL_OPERATION_GET_PRIVATE(user_data);
+       priv->done = 1;
+       priv->status = MODEST_MAIL_OPERATION_STATUS_SUCCESS;
+
+       g_signal_emit (G_OBJECT (user_data), signals[PROGRESS_CHANGED_SIGNAL], 0, NULL);
+}
+
+static gboolean
 modest_mail_operation_xfer_msg (ModestMailOperation *self,
                                TnyHeader *header, 
                                TnyFolder *folder, 
                                gboolean delete_original)
 {
+       ModestMailOperationPrivate *priv;
        TnyFolder *src_folder;
        TnyList *headers;
 
        src_folder = tny_header_get_folder (header);
        headers = tny_simple_list_new ();
 
-       /* Move */
+       priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self);
+       priv->total = 1;
+       priv->done = 0;
+       priv->status = MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS;
+
        tny_list_prepend (headers, G_OBJECT (header));
-       tny_folder_transfer_msgs (src_folder, headers, folder, delete_original, NULL); /* FIXME */
+       tny_folder_transfer_msgs_async (src_folder, headers, folder, 
+                                       delete_original, transfer_msgs_cb, self);
 
        /* Free */
        g_object_unref (headers);
        g_object_unref (folder);
+
+       return TRUE;
 }
 
 
@@ -946,17 +978,6 @@ get_content_type(const gchar *s)
        return g_string_free(type, FALSE);
 }
 
-static GQuark 
-modest_error_quark (void)
-{
-       static GQuark err_q = 0;
-       
-       if (err_q == 0)
-               err_q = g_quark_from_static_string ("modest-error-quark");
-       
-       return err_q;
-}
-
 static void
 add_attachments (TnyMsg *msg, GList *attachments_list)
 {