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;
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;
/* 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);
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;
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);
}
}
-
-
-/* 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,