* modest-mail-operation.c:
authorJavier Fernandez Garcia-Boente <jfernandez@igalia.com>
Tue, 8 May 2007 19:31:27 +0000 (19:31 +0000)
committerJavier Fernandez Garcia-Boente <jfernandez@igalia.com>
Tue, 8 May 2007 19:31:27 +0000 (19:31 +0000)
Implementation of update_progress callback for
transfer_msgs_async function.
* modest-ui-actions.c:
Delete some commented and unused code.

pmo-trunk-r1792

src/modest-mail-operation.c
src/modest-ui-actions.c

index 74d33bc..a3c3040 100644 (file)
@@ -1096,11 +1096,36 @@ transfer_msgs_status_cb (GObject *obj,
                         TnyStatus *status,  
                         gpointer user_data)
 {
+       XFerMsgAsyncHelper *helper = NULL;
+       ModestMailOperation *self;
+       ModestMailOperationPrivate *priv;
+
+       g_return_if_fail (status != NULL);
+       g_return_if_fail (status->code == TNY_FOLDER_STATUS_CODE_XFER_MSGS);
+
+       helper = (XFerMsgAsyncHelper *) user_data;
+       g_return_if_fail (helper != NULL);       
+
+       /* Temporary FIX: useful when tinymail send us status
+          information *after* calling the function callback */
+       if (!MODEST_IS_MAIL_OPERATION (helper->mail_op))
+               return;
+
+       self = helper->mail_op;
+       priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self);
+
+       priv->done = status->position;
+       priv->total = status->of_total;
+
+       if (priv->done == 1 && priv->total == 100)
+               return;
+
+       g_signal_emit (G_OBJECT (self), signals[PROGRESS_CHANGED_SIGNAL], 0, NULL);
 }
 
 
 static void
-transfer_msgs_cb (TnyFolder *folder, GError **err, gpointer user_data)
+transfer_msgs_cb (TnyFolder *folder, gboolean cancelled, GError **err, gpointer user_data)
 {
        XFerMsgAsyncHelper *helper;
        ModestMailOperation *self;
@@ -1114,7 +1139,13 @@ transfer_msgs_cb (TnyFolder *folder, GError **err, gpointer user_data)
        if (*err) {
                priv->error = g_error_copy (*err);
                priv->done = 0;
-               priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED;
+               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;
@@ -1123,8 +1154,10 @@ transfer_msgs_cb (TnyFolder *folder, GError **err, gpointer user_data)
        /* Free */
        g_object_unref (helper->headers);
        g_object_unref (helper->dest_folder);
+       g_object_unref (helper->mail_op);
        g_object_unref (folder);
-       g_free (helper);
+       g_slice_free   (XFerMsgAsyncHelper, helper);
+       helper = NULL;
 
        /* Notify the queue */
        modest_mail_operation_queue_remove (modest_runtime_get_mail_operation_queue (), self);
@@ -1155,8 +1188,8 @@ modest_mail_operation_xfer_msgs (ModestMailOperation *self,
        priv->status = MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS;
 
        /* Create the helper */
-       helper = g_malloc0 (sizeof (XFerMsgAsyncHelper));
-       helper->mail_op = self;
+       helper = g_slice_new0 (XFerMsgAsyncHelper);
+       helper->mail_op = g_object_ref(self);
        helper->dest_folder = folder;
        helper->headers = headers;
 
index 432f499..7a527f1 100644 (file)
@@ -431,7 +431,6 @@ open_msg_func (const GObject *obj, const TnyMsg *msg, gpointer user_data)
                account = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr());
        
        /* Gets foldert type (OUTBOX headers will be opened in edit window */
-/*     folder_type = modest_tny_folder_guess_folder_type (helper->folder); */
        if (modest_tny_folder_is_local_folder (helper->folder))
                folder_type = modest_tny_folder_get_local_folder_type (helper->folder);
 
@@ -929,86 +928,6 @@ modest_ui_actions_on_header_selected (ModestHeaderView *header_view,
        }
 }
 
-
-
-/* void */
-/* modest_ui_actions_on_header_activated (ModestHeaderView *header_view, TnyHeader *header, */
-/*                                    ModestMainWindow *main_window) */
-/* { */
-/*     ModestWindow *win = NULL; */
-/*     TnyFolder *folder = NULL; */
-/*     TnyMsg    *msg    = NULL; */
-/*     TnyFolderType folder_type = TNY_FOLDER_TYPE_UNKNOWN; */
-/*     ModestWindowMgr *mgr; */
-/*     GtkTreeModel *model; */
-/*     GtkTreeIter iter; */
-/*     GtkTreeSelection *sel = NULL; */
-/*     GList *sel_list = NULL; */
-       
-/*     g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window)); */
-       
-/*     if (!header) */
-/*             return; */
-
-/*     folder = tny_header_get_folder (header); */
-/*     if (!folder) { */
-/*             g_printerr ("modest: cannot get folder for header\n"); */
-/*             return; */
-/*     } */
-/*     if (modest_tny_folder_is_local_folder (folder)) */
-/*             folder_type = modest_tny_folder_get_local_folder_type (folder); */
-
-/*     /\* FIXME: make async?; check error  *\/ */
-/*     msg = tny_folder_get_msg (folder, header, NULL); */
-/*     if (!msg) { */
-/*             g_printerr ("modest: cannot get msg for header\n"); */
-/*             goto cleanup; */
-/*     } */
-
-/*     /\* Look if we already have a message view for that header *\/ */
-/*     mgr = modest_runtime_get_window_mgr (); */
-/*     win = modest_window_mgr_find_window_by_msguid (mgr, tny_header_get_uid (header)); */
-
-/*     /\* If not, create a new window *\/ */
-/*     if (!win) { */
-/*             gchar *account; */
-
-/*             account =  g_strdup(modest_window_get_active_account(MODEST_WINDOW(main_window))); */
-/*             if (!account) */
-/*                     account = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr()); */
-
-/*             sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (header_view)); */
-/*             sel_list = gtk_tree_selection_get_selected_rows (sel, &model); */
-/*             if (sel_list != NULL) { */
-/*                     gtk_tree_model_get_iter (model, &iter, (GtkTreePath *) sel_list->data); */
-                       
-/*                     switch (folder_type) { */
-/*                     case TNY_FOLDER_TYPE_DRAFTS: */
-/*                             win = modest_msg_edit_window_new (msg, account); */
-/*                             break; */
-/*                     default: */
-/*                             win = modest_msg_view_window_new_with_header_model (msg, account, model, iter); */
-/*                     } */
-
-/*                     g_list_foreach (sel_list, (GFunc) gtk_tree_path_free, NULL); */
-/*                     g_list_free (sel_list); */
-/*             } else { */
-/*                     win = modest_msg_view_window_new (msg, account); */
-/*             } */
-/*             modest_window_mgr_register_window (mgr, win); */
-
-/*             gtk_window_set_transient_for (GTK_WINDOW (win), */
-/*                                           GTK_WINDOW (main_window)); */
-/*     } */
-
-/*     gtk_widget_show_all (GTK_WIDGET(win)); */
-
-/*     g_object_unref (G_OBJECT (msg)); */
-       
-/* cleanup: */
-/*     g_object_unref (G_OBJECT (folder)); */
-/* } */
-
 void
 modest_ui_actions_on_header_activated (ModestHeaderView *header_view,
                                       TnyHeader *header,