diff options
Diffstat (limited to 'camel/providers')
-rw-r--r-- | camel/providers/mbox/camel-mbox-folder.c | 14 | ||||
-rw-r--r-- | camel/providers/mbox/camel-mbox-folder.h | 1 | ||||
-rw-r--r-- | camel/providers/mbox/camel-mbox-search.c | 59 | ||||
-rw-r--r-- | camel/providers/mbox/camel-mbox-search.h | 5 |
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 */ |