aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@helixcode.com>2000-09-12 05:37:48 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2000-09-12 05:37:48 +0800
commitca9ab0c63bc468566064505263088649064993a6 (patch)
treead5e4262e6975cebd8615d2cfb2d3dadd8b69c05
parente98f2565b3933b735c82753cd6d579d74de639df (diff)
downloadgsoc2013-evolution-ca9ab0c63bc468566064505263088649064993a6.tar
gsoc2013-evolution-ca9ab0c63bc468566064505263088649064993a6.tar.gz
gsoc2013-evolution-ca9ab0c63bc468566064505263088649064993a6.tar.bz2
gsoc2013-evolution-ca9ab0c63bc468566064505263088649064993a6.tar.lz
gsoc2013-evolution-ca9ab0c63bc468566064505263088649064993a6.tar.xz
gsoc2013-evolution-ca9ab0c63bc468566064505263088649064993a6.tar.zst
gsoc2013-evolution-ca9ab0c63bc468566064505263088649064993a6.zip
Updated to use the new mail_do_filter_ondemand.
2000-09-11 Jeffrey Stedfast <fejj@helixcode.com> * 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
-rw-r--r--mail/ChangeLog13
-rw-r--r--mail/mail-callbacks.c13
-rw-r--r--mail/mail-ops.c32
-rw-r--r--mail/mail-ops.h2
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,5 +1,18 @@
2000-09-11 Jeffrey Stedfast <fejj@helixcode.com>
+ * 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 <fejj@helixcode.com>
+
* mail-ops.c (do_fetch_mail): Don't have the filter driver
self_destruct.
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,