+ if ((status->position == 1) && (status->of_total == 100))
+ return;
+
+ priv->done = status->position;
+ priv->total = status->of_total;
+
+
+ g_signal_emit (G_OBJECT (self), signals[PROGRESS_CHANGED_SIGNAL], 0, NULL);
+}
+
+
+static void
+transfer_folder_cb (TnyFolder *folder, TnyFolderStore *into, gboolean cancelled, TnyFolder *new_folder, GError **err, gpointer user_data)
+{
+ XFerFolderAsyncHelper *helper = NULL;
+ ModestMailOperation *self = NULL;
+ ModestMailOperationPrivate *priv = NULL;
+
+ helper = (XFerFolderAsyncHelper *) user_data;
+ self = helper->mail_op;
+
+ priv = MODEST_MAIL_OPERATION_GET_PRIVATE (self);
+
+ if (*err) {
+ priv->error = g_error_copy (*err);
+ priv->done = 0;
+ priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED;
+ } else if (cancelled) {
+ priv->status = MODEST_MAIL_OPERATION_STATUS_CANCELED;
+ g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
+ MODEST_MAIL_OPERATION_ERROR_ITEM_NOT_FOUND,
+ _("Error trying to refresh the contents of %s"),
+ tny_folder_get_name (folder));
+ } else {
+ priv->done = 1;
+ priv->status = MODEST_MAIL_OPERATION_STATUS_SUCCESS;
+ }
+
+ /* Free */
+ g_slice_free (XFerFolderAsyncHelper, helper);
+ g_object_unref (folder);
+ g_object_unref (into);
+ g_object_unref (new_folder);
+
+ /* Notify the queue */
+ modest_mail_operation_queue_remove (modest_runtime_get_mail_operation_queue (), self);
+}
+
+TnyFolder *
+modest_mail_operation_xfer_folder (ModestMailOperation *self,