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.c67
1 files changed, 66 insertions, 1 deletions
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index d24c47dd85..1a78c2c7af 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -1057,7 +1057,7 @@ void mail_scan_subfolders(CamelStore *store, EvolutionStorage *storage)
int id;
id = mail_get_folderinfo(store, do_scan_subfolders, storage);
- mail_msg_wait(id);
+ /*mail_msg_wait(id);*/
}
/* ** ATTACH MESSAGES ****************************************************** */
@@ -1188,6 +1188,71 @@ mail_get_folder(const char *uri, void (*done) (char *uri, CamelFolder *folder, v
return id;
}
+/* ** GET STORE ******************************************************* */
+
+struct _get_store_msg {
+ struct _mail_msg msg;
+
+ char *uri;
+ CamelStore *store;
+ void (*done) (char *uri, CamelStore *store, void *data);
+ void *data;
+};
+
+static char *get_store_desc(struct _mail_msg *mm, int done)
+{
+ struct _get_store_msg *m = (struct _get_store_msg *)mm;
+
+ return g_strdup_printf(_("Opening store %s"), m->uri);
+}
+
+static void get_store_get(struct _mail_msg *mm)
+{
+ struct _get_store_msg *m = (struct _get_store_msg *)mm;
+
+ m->store = camel_session_get_store(session, m->uri, &mm->ex);
+}
+
+static void get_store_got(struct _mail_msg *mm)
+{
+ struct _get_store_msg *m = (struct _get_store_msg *)mm;
+
+ if (m->done)
+ m->done(m->uri, m->store, m->data);
+}
+
+static void get_store_free(struct _mail_msg *mm)
+{
+ struct _get_store_msg *m = (struct _get_store_msg *)mm;
+
+ g_free(m->uri);
+ if (m->store)
+ camel_object_unref((CamelObject *)m->store);
+}
+
+static struct _mail_msg_op get_store_op = {
+ get_store_desc,
+ get_store_get,
+ get_store_got,
+ get_store_free,
+};
+
+int
+mail_get_store(const char *uri, void (*done) (char *uri, CamelStore *store, void *data), void *data)
+{
+ struct _get_store_msg *m;
+ int id;
+
+ m = mail_msg_new(&get_store_op, NULL, sizeof(*m));
+ m->uri = g_strdup(uri);
+ m->data = data;
+ m->done = done;
+
+ id = m->msg.seq;
+ e_thread_put(mail_thread_new, (EMsg *)m);
+ return id;
+}
+
/* ** CREATE FOLDER ******************************************************* */
/* trying to find a way to remove this entirely and just use get_folder()