aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers
diff options
context:
space:
mode:
Diffstat (limited to 'camel/providers')
-rw-r--r--camel/providers/mbox/camel-mbox-folder.c14
-rw-r--r--camel/providers/mbox/camel-mbox-folder.h1
-rw-r--r--camel/providers/mbox/camel-mbox-search.c59
-rw-r--r--camel/providers/mbox/camel-mbox-search.h5
4 files changed, 16 insertions, 63 deletions
diff --git a/camel/providers/mbox/camel-mbox-folder.c b/camel/providers/mbox/camel-mbox-folder.c
index c6dfb657e7..7e55610cf8 100644
--- a/camel/providers/mbox/camel-mbox-folder.c
+++ b/camel/providers/mbox/camel-mbox-folder.c
@@ -81,6 +81,7 @@ static const gchar *_get_message_uid (CamelFolder *folder, CamelMimeMessage *mes
#endif
GPtrArray *summary_get_message_info (CamelFolder *folder, int first, int count);
+static const CamelMessageInfo *mbox_summary_get_by_uid(CamelFolder *f, const char *uid);
static void mbox_finalize (GtkObject *object);
@@ -115,10 +116,9 @@ camel_mbox_folder_class_init (CamelMboxFolderClass *camel_mbox_folder_class)
camel_folder_class->get_message_by_uid = mbox_get_message_by_uid;
camel_folder_class->search_by_expression = camel_mbox_folder_search_by_expression;
- camel_folder_class->search_complete = camel_mbox_folder_search_complete;
- camel_folder_class->search_cancel = camel_mbox_folder_search_cancel;
camel_folder_class->get_message_info = summary_get_message_info;
+ camel_folder_class->summary_get_by_uid = mbox_summary_get_by_uid;
gtk_object_class->finalize = mbox_finalize;
@@ -933,3 +933,13 @@ GPtrArray *summary_get_message_info (CamelFolder *folder, int first, int count)
return array;
}
+
+/* get a single message info, by uid */
+static const CamelMessageInfo *
+mbox_summary_get_by_uid(CamelFolder *f, const char *uid)
+{
+ CamelMboxFolder *mbox_folder = (CamelMboxFolder *)f;
+
+ return (CamelMessageInfo *)camel_mbox_summary_uid(mbox_folder->summary, uid);
+}
+
diff --git a/camel/providers/mbox/camel-mbox-folder.h b/camel/providers/mbox/camel-mbox-folder.h
index f74c51a6c3..366aca3e86 100644
--- a/camel/providers/mbox/camel-mbox-folder.h
+++ b/camel/providers/mbox/camel-mbox-folder.h
@@ -54,7 +54,6 @@ typedef struct {
gchar *index_file_path; /* index of body contents */
ibex *index; /* index for this folder */
- int search_id; /* next search id */
GList *searches; /* current searches */
CamelMboxSummary *summary;
diff --git a/camel/providers/mbox/camel-mbox-search.c b/camel/providers/mbox/camel-mbox-search.c
index 1e134476e5..094533edbd 100644
--- a/camel/providers/mbox/camel-mbox-search.c
+++ b/camel/providers/mbox/camel-mbox-search.c
@@ -76,7 +76,6 @@
struct _searchcontext {
int id; /* id of this search */
- int cancelled; /* search cancelled? */
CamelFolder *folder;
@@ -268,8 +267,7 @@ static struct {
{ "header-contains", func_header_contains, 0 },
};
-int camel_mbox_folder_search_by_expression(CamelFolder *folder, const char *expression,
- CamelSearchFunc *func, void *data, CamelException *ex)
+GList *camel_mbox_folder_search_by_expression(CamelFolder *folder, const char *expression, CamelException *ex)
{
int i;
struct _searchcontext *ctx;
@@ -283,8 +281,6 @@ int camel_mbox_folder_search_by_expression(CamelFolder *folder, const char *expr
ctx = g_malloc0(sizeof(*ctx));
- ctx->id = ((CamelMboxFolder *)folder)->search_id++;
-
/* setup out context */
ctx->folder = folder;
ctx->summary = mbox_folder->summary;
@@ -294,7 +290,7 @@ int camel_mbox_folder_search_by_expression(CamelFolder *folder, const char *expr
"Full description : %s\n", camel_exception_get_description (ex));
g_free(ctx);
gtk_object_unref((GtkObject *)f);
- return -1;
+ return NULL;
}
/* FIXME: the index should be global to the folder */
@@ -326,67 +322,18 @@ int camel_mbox_folder_search_by_expression(CamelFolder *folder, const char *expr
d(printf("adding match: %s\n", (char *)g_ptr_array_index(r->value.ptrarray, i)));
matches = g_list_prepend(matches, g_strdup(g_ptr_array_index(r->value.ptrarray, i)));
}
- if (!ctx->cancelled) {
- func(folder, ctx->id, TRUE, matches, data);
- }
- g_list_free(matches);
e_sexp_result_free(r);
} else {
printf("no result!\n");
}
gtk_object_unref((GtkObject *)f);
- i = ctx->id;
((CamelMboxFolder *)folder)->searches = g_list_remove(((CamelMboxFolder *)folder)->searches, ctx);
g_free(ctx);
- return i;
-}
-
-static struct _searchcontext *
-find_context(CamelMboxFolder *f, int id)
-{
- struct _searchcontext *ctx;
- GList *l;
-
- l = f->searches;
- while (l) {
- ctx = l->data;
- if (ctx->id == id) {
- return ctx;
- }
- l = g_list_next(l);
- }
-
- return NULL;
-}
-
-gboolean camel_mbox_folder_search_complete(CamelFolder *folder, int searchid, int wait, CamelException *ex)
-{
- struct _searchcontext *ctx;
-
- ctx = find_context((CamelMboxFolder *)folder, searchid);
-
- if (ctx)
- return ctx->cancelled;
-
- /* if its been removed, its complete ... */
- return TRUE;
-}
-
-void camel_mbox_folder_search_cancel(CamelFolder *folder, int searchid, CamelException *ex)
-{
- struct _searchcontext *ctx;
-
- ctx = find_context((CamelMboxFolder *)folder, searchid);
- if (ctx) {
- ctx->cancelled = TRUE;
- return;
- }
-
- /* FIXME: set exception, return */
+ return matches;
}
#else /* HAVE_FILTER */
diff --git a/camel/providers/mbox/camel-mbox-search.h b/camel/providers/mbox/camel-mbox-search.h
index d3fe328a2c..f99d922252 100644
--- a/camel/providers/mbox/camel-mbox-search.h
+++ b/camel/providers/mbox/camel-mbox-search.h
@@ -5,10 +5,7 @@
#include <glib.h>
#include "camel-mbox-folder.h"
-int camel_mbox_folder_search_by_expression(CamelFolder *folder, const char *expression,
- CamelSearchFunc *func, void *data, CamelException *ex);
-gboolean camel_mbox_folder_search_complete(CamelFolder *folder, int searchid, gboolean wait, CamelException *ex);
-void camel_mbox_folder_search_cancel(CamelFolder *folder, int searchid, CamelException *ex);
+GList *camel_mbox_folder_search_by_expression(CamelFolder *folder, const char *expression, CamelException *ex);
#endif /* ! _CAMEL_MBOX_SEARCH_H */