static void refresh_folders_exec (struct _refresh_folders_msg *m, GCancellable *cancellable, GError **error) { CamelFolder *folder; EMailSession *session; gint i; GError *local_error = NULL; gulong handler_id = 0; if (cancellable) handler_id = g_signal_connect ( m->info->cancellable, "cancelled", G_CALLBACK (main_op_cancelled_cb), cancellable); get_folders (m->store, m->folders, m->finfo); camel_operation_push_message (m->info->cancellable, _("Updating...")); session = m->info->session; for (i = 0; i < m->folders->len; i++) { folder = e_mail_session_uri_to_folder_sync ( session, m->folders->pdata[i], 0, cancellable, &local_error); if (folder) { /* FIXME Not passing a GError here. */ camel_folder_synchronize_sync ( folder, FALSE, cancellable, NULL); camel_folder_refresh_info_sync (folder, cancellable, NULL); g_object_unref (folder); } else if (local_error != NULL) { g_warning ("Failed to refresh folders: %s", local_error->message); g_clear_error (&local_error); } if (g_cancellable_is_cancelled (m->info->cancellable)) break; if (m->info->state != SEND_CANCELLED) camel_operation_progress ( m->info->cancellable, 100 * i / m->folders->len); } camel_operation_pop_message (m->info->cancellable); if (cancellable) g_signal_handler_disconnect (m->info->cancellable, handler_id); }
static void get_folders (CamelStore *store, GPtrArray *folders, CamelFolderInfo *info) { CamelException ex; camel_exception_init (&ex); while (info) { if (camel_store_can_refresh_folder (store, info, &ex)) g_ptr_array_add (folders, g_strdup (info->uri)); camel_exception_clear (&ex); get_folders (store, folders, info->child); info = info->next; } }
static void get_folders (CamelStore *store, GPtrArray *folders, CamelFolderInfo *info) { while (info) { if (camel_store_can_refresh_folder (store, info, NULL)) { if ((info->flags & CAMEL_FOLDER_NOSELECT) == 0) { gchar *folder_uri; folder_uri = e_mail_folder_uri_build ( store, info->full_name); g_ptr_array_add (folders, folder_uri); } } get_folders (store, folders, info->child); info = info->next; } }
static void refresh_folders_exec (struct _refresh_folders_msg *m) { int i; CamelFolder *folder; CamelException ex = CAMEL_EXCEPTION_INITIALISER; get_folders (m->store, m->folders, m->finfo); for (i=0;i<m->folders->len;i++) { folder = mail_tool_uri_to_folder(m->folders->pdata[i], 0, &ex); if (folder) { camel_folder_refresh_info(folder, &ex); camel_exception_clear(&ex); camel_object_unref(folder); } else if (camel_exception_is_set(&ex)) { g_warning ("Failed to refresh folders: %s", camel_exception_get_description (&ex)); camel_exception_clear (&ex); } if (camel_operation_cancel_check(m->info->cancel)) break; } }