aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/mail-ops.c')
-rw-r--r--mail/mail-ops.c163
1 files changed, 0 insertions, 163 deletions
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index cbb50315ec..67906957bd 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -1031,169 +1031,6 @@ mail_transfer_messages (EMailSession *session,
mail_msg_slow_ordered_push (m);
}
-/* ** REMOVE FOLDER ******************************************************* */
-
-struct _remove_folder_msg {
- MailMsg base;
-
- CamelFolder *folder;
- gboolean removed;
- void (*done) (CamelFolder *folder, gboolean removed, GError **error, gpointer data);
- gpointer data;
-};
-
-static gchar *
-remove_folder_desc (struct _remove_folder_msg *m)
-{
- return g_strdup_printf (_("Removing folder '%s'"), camel_folder_get_full_name (m->folder));
-}
-
-static gboolean
-remove_folder_rec (CamelStore *store,
- CamelFolderInfo *fi,
- GCancellable *cancellable,
- GError **error)
-{
- while (fi) {
- CamelFolder *folder;
-
- if (fi->child) {
- if (!remove_folder_rec (
- store, fi->child, cancellable, error))
- return FALSE;
- }
-
- d(printf ("deleting folder '%s'\n", fi->full_name));
-
- folder = camel_store_get_folder_sync (
- store, fi->full_name, 0, cancellable, error);
- if (folder == NULL)
- return FALSE;
-
- if (!CAMEL_IS_VEE_FOLDER (folder)) {
- GPtrArray *uids = camel_folder_get_uids (folder);
- gint i;
-
- /* Delete every message in this folder, then expunge it */
- camel_folder_freeze (folder);
- for (i = 0; i < uids->len; i++)
- camel_folder_delete_message (
- folder, uids->pdata[i]);
-
- camel_folder_free_uids (folder, uids);
-
- /* FIXME Not passing a GCancellable or GError here. */
- camel_folder_synchronize_sync (folder, TRUE, NULL, NULL);
- camel_folder_thaw (folder);
- }
-
- /* If the store supports subscriptions, unsubscribe
- * from this folder.
- * FIXME Not passing a GCancellable or GError here. */
- if (camel_store_supports_subscriptions (store))
- camel_store_unsubscribe_folder_sync (
- store, fi->full_name, NULL, NULL);
-
- /* Then delete the folder from the store */
- if (!camel_store_delete_folder_sync (
- store, fi->full_name, cancellable, error))
- return FALSE;
-
- fi = fi->next;
- }
-
- return TRUE;
-}
-
-static void
-remove_folder_exec (struct _remove_folder_msg *m,
- GCancellable *cancellable,
- GError **error)
-{
- CamelFolderInfo *fi, *to_remove, *next = NULL;
- CamelStore *parent_store;
- const gchar *full_name;
-
- m->removed = FALSE;
-
- full_name = camel_folder_get_full_name (m->folder);
- parent_store = camel_folder_get_parent_store (m->folder);
-
- fi = camel_store_get_folder_info_sync (
- parent_store, full_name,
- CAMEL_STORE_FOLDER_INFO_RECURSIVE |
- CAMEL_STORE_FOLDER_INFO_FAST |
- CAMEL_STORE_FOLDER_INFO_SUBSCRIBED,
- cancellable, error);
- if (fi == NULL)
- return;
-
- if (fi->next) {
- /* for cases when the folder info contains more folders on the 0-level,
- like when full_name contains a wildcard letter, use only folder info
- for the the exact full_name, to not delete more than requested */
- for (to_remove = fi; to_remove; to_remove = to_remove->next) {
- if (g_strcmp0 (to_remove->full_name, full_name) == 0)
- break;
- }
-
- if (!to_remove) {
- g_warning ("%s: Failed to find '%s' in returned folder info", G_STRFUNC, full_name);
- camel_store_free_folder_info (parent_store, fi);
- return;
- }
-
- next = to_remove->next;
- to_remove->next = NULL;
- } else {
- to_remove = fi;
- }
-
- m->removed = remove_folder_rec (
- parent_store, to_remove, cancellable, error);
-
- to_remove->next = next;
-
- camel_store_free_folder_info (parent_store, fi);
-}
-
-static void
-remove_folder_done (struct _remove_folder_msg *m)
-{
- if (m->done)
- m->done (m->folder, m->removed, &m->base.error, m->data);
-}
-
-static void
-remove_folder_free (struct _remove_folder_msg *m)
-{
- g_object_unref (m->folder);
-}
-
-static MailMsgInfo remove_folder_info = {
- sizeof (struct _remove_folder_msg),
- (MailMsgDescFunc) remove_folder_desc,
- (MailMsgExecFunc) remove_folder_exec,
- (MailMsgDoneFunc) remove_folder_done,
- (MailMsgFreeFunc) remove_folder_free
-};
-
-void
-mail_remove_folder (CamelFolder *folder, void (*done) (CamelFolder *folder, gboolean removed, GError **error, gpointer data), gpointer data)
-{
- struct _remove_folder_msg *m;
-
- g_return_if_fail (folder != NULL);
-
- m = mail_msg_new (&remove_folder_info);
- m->folder = folder;
- g_object_ref (folder);
- m->data = data;
- m->done = done;
-
- mail_msg_unordered_push (m);
-}
-
/* ** SYNC FOLDER ********************************************************* */
struct _sync_folder_msg {