gint pending_calls;
gboolean poke_all;
TnyFolderObserver *inbox_observer;
- guint update_timeout;
RetrieveAllCallback retrieve_all_cb;
} UpdateAccountInfo;
static void
destroy_update_account_info (UpdateAccountInfo *info)
{
- if (info->update_timeout) {
- g_source_remove (info->update_timeout);
- info->update_timeout = 0;
- }
-
g_free (info->account_name);
g_object_unref (info->folders);
g_object_unref (info->mail_op);
/* Add pending call */
info->pending_calls++;
- tny_folder_store_get_folders_async (folder, folders, recurse_folders_async_cb,
- NULL, NULL, info);
+ tny_folder_store_get_folders_async (folder, folders, NULL, recurse_folders_async_cb,
+ NULL, info);
g_object_unref (G_OBJECT (folder));
}
g_object_unref (iter_all_folders);
- /* Stop the progress notification */
- g_source_remove (info->update_timeout);
- info->update_timeout = 0;
-
/* Refresh the INBOX */
if (inbox) {
/* Refresh the folder. Our observer receives
}
}
-/*
- * Issues the "progress-changed" signal. The timer won't be removed,
- * so you must call g_source_remove to stop the signal emission
- */
-static gboolean
-timeout_notify_progress (gpointer data)
-{
- ModestMailOperation *mail_op = MODEST_MAIL_OPERATION (data);
- ModestMailOperationState *state;
-
- state = modest_mail_operation_clone_state (mail_op);
-
- /* This is a GDK lock because we are an idle callback and
- * the handlers of this signal can contain Gtk+ code */
-
- gdk_threads_enter (); /* CHECKED */
- g_signal_emit (G_OBJECT (mail_op), signals[PROGRESS_CHANGED_SIGNAL], 0, state, NULL);
- gdk_threads_leave (); /* CHECKED */
-
- g_slice_free (ModestMailOperationState, state);
-
- return TRUE;
-}
-
void
modest_mail_operation_update_account (ModestMailOperation *self,
const gchar *account_name,
info->account_name = g_strdup (account_name);
info->callback = callback;
info->user_data = user_data;
- info->update_timeout = g_timeout_add (250, timeout_notify_progress, self);
info->retrieve_all_cb = retrieve_all_cb;
/* Set account busy */
modest_account_mgr_set_account_busy (modest_runtime_get_account_mgr (), account_name, TRUE);
modest_mail_operation_notify_start (self);
+ /* notify about the start of the operation */
+ ModestMailOperationState *state;
+ state = modest_mail_operation_clone_state (self);
+ state->done = 0;
+ state->total = 0;
+
+ /* Start notifying progress */
+ g_signal_emit (G_OBJECT (self), signals[PROGRESS_CHANGED_SIGNAL],
+ 0, state, NULL);
+ g_slice_free (ModestMailOperationState, state);
+
/* Get all folders and continue in the callback */
folders = tny_simple_list_new ();
tny_folder_store_get_folders_async (TNY_FOLDER_STORE (store_account),
helper->total_bytes = tny_header_get_message_size (header);
modest_mail_operation_notify_start (self);
+
+ /* notify about the start of the operation */
+ ModestMailOperationState *state;
+ state = modest_mail_operation_clone_state (self);
+ state->done = 0;
+ state->total = 0;
+ g_signal_emit (G_OBJECT (self), signals[PROGRESS_CHANGED_SIGNAL],
+ 0, state, NULL);
+
tny_folder_get_msg_async (folder, header, get_msg_async_cb, get_msg_status_cb, helper);
g_object_unref (G_OBJECT (folder));
modest_mail_operation_notify_start (self);
iter = tny_list_create_iterator (header_list);
while (!tny_iterator_is_done (iter)) {
+ /* notify about the start of the operation */
+ ModestMailOperationState *state;
+ state = modest_mail_operation_clone_state (self);
+ state->done = 0;
+ state->total = 0;
+ g_signal_emit (G_OBJECT (self), signals[PROGRESS_CHANGED_SIGNAL],
+ 0, state, NULL);
+
GetMsgInfo *msg_info = NULL;
TnyHeader *header = TNY_HEADER (tny_iterator_get_current (iter));
TnyFolder *folder = tny_header_get_folder (header);
updates before the callback call then this could happen. We
must review the design */
modest_mail_operation_notify_start (self);
+
+ /* notify that the operation was started */
+ ModestMailOperationState *state;
+ state = modest_mail_operation_clone_state (self);
+ state->done = 0;
+ state->total = 0;
+ g_signal_emit (G_OBJECT (self), signals[PROGRESS_CHANGED_SIGNAL],
+ 0, state, NULL);
+
tny_folder_refresh_async (folder,
on_refresh_folder,
on_refresh_folder_status_update,