From ca9ab0c63bc468566064505263088649064993a6 Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Mon, 11 Sep 2000 21:37:48 +0000 Subject: Updated to use the new mail_do_filter_ondemand. 2000-09-11 Jeffrey Stedfast * mail-callbacks.c (run_filter_ondemand): Updated to use the new mail_do_filter_ondemand. * mail-ops.c (do_fetch_mail): Update to use the new filter_driver_run args. (do_filter_ondemand): Updated to use the new filter_driver_run args. (mail_do_filter_ondemand): Take a FilterContext as a argument instead of a driver as we need to destroy the filter inside the do_filter_ondemand function and things'd get messy. svn path=/trunk/; revision=5347 --- mail/ChangeLog | 13 +++++++++++++ mail/mail-callbacks.c | 13 +------------ mail/mail-ops.c | 32 +++++++++++++++++++------------- mail/mail-ops.h | 2 +- 4 files changed, 34 insertions(+), 26 deletions(-) diff --git a/mail/ChangeLog b/mail/ChangeLog index 1a55b40fc8..089bb3c884 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,16 @@ +2000-09-11 Jeffrey Stedfast + + * mail-callbacks.c (run_filter_ondemand): Updated to use the new + mail_do_filter_ondemand. + + * mail-ops.c (do_fetch_mail): Update to use the new + filter_driver_run args. + (do_filter_ondemand): Updated to use the new filter_driver_run + args. + (mail_do_filter_ondemand): Take a FilterContext as a argument + instead of a driver as we need to destroy the filter inside the + do_filter_ondemand function and things'd get messy. + 2000-09-11 Jeffrey Stedfast * mail-ops.c (do_fetch_mail): Don't have the filter driver diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c index aede7f2e65..6ebc7a3627 100644 --- a/mail/mail-callbacks.c +++ b/mail/mail-callbacks.c @@ -730,20 +730,9 @@ void run_filter_ondemand (BonoboUIHandler *uih, gpointer user_data, const char *path) { struct fb_ondemand_closure *oc = (struct fb_ondemand_closure *) user_data; - FilterDriver *d; if (oc->fb->folder == NULL) return; - printf ("Running filter \"%s\"\n", oc->rule->name); - - d = filter_driver_new (oc->fb->filter_context, - mail_tool_filter_get_folder_func, - NULL); - - mail_do_filter_ondemand (d, oc->fb->folder, oc->fb->folder); - - /*filter_driver_run (d, oc->fb->folder, oc->fb->folder, - FILTER_SOURCE_DEMAND, TRUE, - NULL, NULL, NULL);*/ + mail_do_filter_ondemand (oc->fb->filter_context, oc->fb->folder, oc->fb->folder); } diff --git a/mail/mail-ops.c b/mail/mail-ops.c index c283f16ef9..cfcd5564dd 100644 --- a/mail/mail-ops.c +++ b/mail/mail-ops.c @@ -207,9 +207,8 @@ do_fetch_mail (gpointer in_data, gpointer op_data, CamelException *ex) free_info = TRUE; } - filter_driver_run (filter, message, info, - input->destination, FILTER_SOURCE_INCOMING, - FALSE, ex); + filter_driver_run (filter, message, info, input->destination, + FILTER_SOURCE_INCOMING, ex); if (free_info) camel_message_info_free (info); @@ -228,6 +227,8 @@ do_fetch_mail (gpointer in_data, gpointer op_data, CamelException *ex) camel_object_unref (CAMEL_OBJECT (message)); } + gtk_object_unref (GTK_OBJECT (filter)); + camel_folder_sync (folder, FALSE, ex); camel_folder_thaw (input->destination); @@ -304,7 +305,7 @@ mail_do_fetch_mail (const gchar *source_url, gboolean keep_on_server, typedef struct filter_ondemand_input_s { - FilterDriver *driver; + FilterContext *context; CamelFolder *source; CamelFolder *destination; } filter_ondemand_input_t; @@ -338,9 +339,9 @@ setup_filter_ondemand (gpointer in_data, gpointer op_data, CamelException *ex) filter_ondemand_input_t *input = (filter_ondemand_input_t *) in_data; filter_ondemand_data_t *data = (filter_ondemand_data_t *) op_data; - if (!IS_FILTER_DRIVER (input->driver)) { + if (!IS_FILTER_CONTEXT (input->context)) { camel_exception_set (ex, CAMEL_EXCEPTION_INVALID_PARAM, - _("Bad filter driver specified")); + _("Bad filter context specified")); return; } @@ -364,7 +365,7 @@ setup_filter_ondemand (gpointer in_data, gpointer op_data, CamelException *ex) data->empty = FALSE; - gtk_object_ref (GTK_OBJECT (input->driver)); + gtk_object_ref (GTK_OBJECT (input->context)); camel_object_ref (CAMEL_OBJECT (input->source)); camel_object_ref (CAMEL_OBJECT (input->destination)); } @@ -379,6 +380,7 @@ do_filter_ondemand (gpointer in_data, gpointer op_data, CamelException *ex) if (camel_folder_get_message_count (input->source) == 0) { data->empty = TRUE; } else { + FilterDriver *driver; GPtrArray *uids; int i; @@ -386,6 +388,8 @@ do_filter_ondemand (gpointer in_data, gpointer op_data, CamelException *ex) camel_folder_freeze (input->source); + driver = filter_driver_new (input->context, mail_tool_filter_get_folder_func, NULL); + for (i = 0; i < uids->len; i++) { CamelMimeMessage *message; CamelMessageInfo *info; @@ -404,8 +408,8 @@ do_filter_ondemand (gpointer in_data, gpointer op_data, CamelException *ex) free_info = TRUE; } - filtered = filter_driver_run (input->driver, message, info, NULL, - FILTER_SOURCE_DEMAND, TRUE, ex); + filtered = filter_driver_run (driver, message, info, NULL, + FILTER_SOURCE_DEMAND, ex); if (free_info) camel_message_info_free (info); @@ -423,6 +427,8 @@ do_filter_ondemand (gpointer in_data, gpointer op_data, CamelException *ex) camel_object_unref (CAMEL_OBJECT (message)); } + gtk_object_unref (GTK_OBJECT (driver)); + camel_folder_sync (input->source, TRUE, ex); camel_folder_thaw (input->source); @@ -446,8 +452,8 @@ cleanup_filter_ondemand (gpointer in_data, gpointer op_data, CamelException *ex) if (input->destination) camel_object_unref (CAMEL_OBJECT (input->destination)); - if (input->driver) - gtk_object_unref (GTK_OBJECT (input->driver)); + if (input->context) + gtk_object_unref (GTK_OBJECT (input->context)); } static const mail_operation_spec op_filter_ondemand = { @@ -459,12 +465,12 @@ static const mail_operation_spec op_filter_ondemand = { }; void -mail_do_filter_ondemand (FilterDriver *driver, CamelFolder *source, CamelFolder *destination) +mail_do_filter_ondemand (FilterContext *context, CamelFolder *source, CamelFolder *destination) { filter_ondemand_input_t *input; input = g_new (filter_ondemand_input_t, 1); - input->driver = driver; + input->context = context; input->source = source; input->destination = destination; diff --git a/mail/mail-ops.h b/mail/mail-ops.h index ae2a1ed353..0a093b25ce 100644 --- a/mail/mail-ops.h +++ b/mail/mail-ops.h @@ -32,7 +32,7 @@ void mail_do_fetch_mail (const gchar *source_url, gboolean keep_on_server, CamelFolder *destination, gpointer hook_func, gpointer hook_data); -void mail_do_filter_ondemand (FilterDriver *driver, CamelFolder *source, +void mail_do_filter_ondemand (FilterContext *context, CamelFolder *source, CamelFolder *destination); void mail_do_send_mail (const char *xport_uri, CamelMimeMessage *message, -- cgit