aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-filter-driver.c
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2001-07-02 23:03:49 +0800
committerDan Winship <danw@src.gnome.org>2001-07-02 23:03:49 +0800
commitfaac871501ee1935cdbaf044e2f8ac4dc00eadc2 (patch)
tree14ae39437ee4f3ffc127ac83676c26c506f7c742 /camel/camel-filter-driver.c
parent55938df2d4948d9581adf7ef660b01fbc6482f4e (diff)
downloadgsoc2013-evolution-faac871501ee1935cdbaf044e2f8ac4dc00eadc2.tar
gsoc2013-evolution-faac871501ee1935cdbaf044e2f8ac4dc00eadc2.tar.gz
gsoc2013-evolution-faac871501ee1935cdbaf044e2f8ac4dc00eadc2.tar.bz2
gsoc2013-evolution-faac871501ee1935cdbaf044e2f8ac4dc00eadc2.tar.lz
gsoc2013-evolution-faac871501ee1935cdbaf044e2f8ac4dc00eadc2.tar.xz
gsoc2013-evolution-faac871501ee1935cdbaf044e2f8ac4dc00eadc2.tar.zst
gsoc2013-evolution-faac871501ee1935cdbaf044e2f8ac4dc00eadc2.zip
new method to get an application-initialized filter driver.
* camel-session.c (camel_session_get_filter_driver): new method to get an application-initialized filter driver. * camel-filter-driver.c (camel_filter_driver_new): Remove the get_folder function and data args from here... (camel_filter_driver_set_folder_func): ...and add this function to set/change them. * providers/imap/camel-imap-folder.c (camel_imap_folder_new): If this folder is INBOX and we're filtering INBOX, set a flag on the folder for later. (imap_update_summary): Add another argument (GPtrArray *recents), and if it's non-NULL, add the uids of any \Recent new messages to it. (camel_imap_folder_changed): If doing filtering in this folder, create a recents array and pass it to imap_update_summary. Then get a filter driver and use it to filter the recent messages. * providers/imap/camel-imap-summary.h: * providers/imap/camel-imap-utils.c (imap_parse_flag_list): Add support for the \Recent flag. * providers/imap/camel-imap-provider.c (imap_conf_entries): enable the "filter" option. * camel-types.h: add CamelFilterDriver typedef here svn path=/trunk/; revision=10681
Diffstat (limited to 'camel/camel-filter-driver.c')
-rw-r--r--camel/camel-filter-driver.c35
1 files changed, 12 insertions, 23 deletions
diff --git a/camel/camel-filter-driver.c b/camel/camel-filter-driver.c
index cc3b63f440..71c1091b07 100644
--- a/camel/camel-filter-driver.c
+++ b/camel/camel-filter-driver.c
@@ -228,27 +228,22 @@ camel_filter_driver_finalise (CamelObject *obj)
/**
* camel_filter_driver_new:
- * @system: path to system rules
- * @user: path to user rules
- * @get_folder: function to call to fetch folders
*
- * Create a new CamelFilterDriver object.
- *
- * Return value: A new CamelFilterDriver widget.
+ * Return value: A new CamelFilterDriver object
**/
CamelFilterDriver *
-camel_filter_driver_new (CamelFilterGetFolderFunc get_folder, void *data)
+camel_filter_driver_new (void)
{
- CamelFilterDriver *new;
- struct _CamelFilterDriverPrivate *p;
-
- new = CAMEL_FILTER_DRIVER (camel_object_new(camel_filter_driver_get_type ()));
- p = _PRIVATE (new);
-
+ return CAMEL_FILTER_DRIVER (camel_object_new(camel_filter_driver_get_type ()));
+}
+
+void
+camel_filter_driver_set_folder_func (CamelFilterDriver *d, CamelFilterGetFolderFunc get_folder, void *data)
+{
+ struct _CamelFilterDriverPrivate *p = _PRIVATE (d);
+
p->get_folder = get_folder;
p->data = data;
-
- return new;
}
void
@@ -368,7 +363,6 @@ do_copy (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriv
if (argv[i]->type == ESEXP_RES_STRING) {
/* open folders we intent to copy to */
char *folder = argv[i]->value.string;
- char *service_url;
CamelFolder *outbox;
outbox = open_folder (driver, folder);
@@ -386,10 +380,8 @@ do_copy (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriv
} else
camel_folder_append_message (outbox, p->message, p->info, p->ex);
- service_url = camel_service_get_url (CAMEL_SERVICE (camel_folder_get_parent_store (outbox)));
camel_filter_driver_log (driver, FILTER_LOG_ACTION, "Copy to folder %s",
- service_url);
- g_free (service_url);
+ folder);
}
}
@@ -408,7 +400,6 @@ do_move (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriv
if (argv[i]->type == ESEXP_RES_STRING) {
/* open folders we intent to move to */
char *folder = argv[i]->value.string;
- char *service_url;
CamelFolder *outbox;
outbox = open_folder (driver, folder);
@@ -428,10 +419,8 @@ do_move (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriv
} else
camel_folder_append_message (outbox, p->message, p->info, p->ex);
- service_url = camel_service_get_url (CAMEL_SERVICE (camel_folder_get_parent_store (outbox)));
camel_filter_driver_log (driver, FILTER_LOG_ACTION, "Move to folder %s",
- service_url);
- g_free (service_url);
+ folder);
}
}