diff options
author | Jeffrey Stedfast <fejj@helixcode.com> | 2000-10-21 10:51:38 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2000-10-21 10:51:38 +0800 |
commit | 6d74595779416412b478dd4ae3d38dffd3f4baae (patch) | |
tree | f5793662a36daff8df54de77077193920fb5acc3 /filter/filter-element.c | |
parent | 3d17cca7ed57dcde3c6649e15d4ac7fe30174776 (diff) | |
download | gsoc2013-evolution-6d74595779416412b478dd4ae3d38dffd3f4baae.tar.gz gsoc2013-evolution-6d74595779416412b478dd4ae3d38dffd3f4baae.tar.zst gsoc2013-evolution-6d74595779416412b478dd4ae3d38dffd3f4baae.zip |
Added filter-url.[c,h].
2000-10-20 Jeffrey Stedfast <fejj@helixcode.com>
* Makefile.am: Added filter-url.[c,h].
* filter-message-search.c (get_source): New callback to get the
source url of the message being filtered.
(filter_message_search): Now takes a source argument.
* filter-element.c (filter_element_new_type_name): Added code to
handle URL types.
* filter-url.[c,h]: New filter object to handle URLs (ie in the
case of filtering on source url). FIXME: find a way to populate
the source combo box (including mail-config.h breaks the build in
the addressbook - how does including mail-tools.h not break the
build???)
* filtertypes.xml: Added the source filter type and added the
move-to action.
* filter-driver.c (do_move): New callback, a "Copy" action should
just copy the message to another location while a Move should both
copy the message to a new location and delete it from the source
location.
(do_delete): Set the deleted flag on the message info.
(filter_driver_filter_message): Now returns void as we don't care
if it was copied or not in the caller functions. Also check the
CamelMessageInfo being passed in - if the message has been marked
as deleted prior to being filtered, then return immediately as we
don't want to apply filter actions to deleted messages.
svn path=/trunk/; revision=6094
Diffstat (limited to 'filter/filter-element.c')
-rw-r--r-- | filter/filter-element.c | 80 |
1 files changed, 47 insertions, 33 deletions
diff --git a/filter/filter-element.c b/filter/filter-element.c index 58e68350a4..40a9357598 100644 --- a/filter/filter-element.c +++ b/filter/filter-element.c @@ -28,6 +28,7 @@ #include "filter-colour.h" #include "filter-datespec.h" #include "filter-score.h" +#include "filter-url.h" #include "filter-folder.h" static void xml_create(FilterElement *fe, xmlNodePtr node); @@ -77,7 +78,7 @@ filter_element_class_init (FilterElementClass *class) GtkObjectClass *object_class; object_class = (GtkObjectClass *)class; - parent_class = gtk_type_class(gtk_object_get_type ()); + parent_class = gtk_type_class (gtk_object_get_type ()); object_class->finalize = filter_element_finalise; @@ -87,17 +88,17 @@ filter_element_class_init (FilterElementClass *class) /* signals */ - gtk_object_class_add_signals(object_class, signals, LAST_SIGNAL); + gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL); } static void filter_element_init (FilterElement *o) { - o->priv = g_malloc0(sizeof(*o->priv)); + o->priv = g_malloc0 (sizeof (*o->priv)); } static void -filter_element_finalise(GtkObject *obj) +filter_element_finalise (GtkObject *obj) { FilterElement *o = (FilterElement *)obj; @@ -114,7 +115,7 @@ filter_element_finalise(GtkObject *obj) * Return value: A new #FilterElement object. **/ FilterElement * -filter_element_new(void) +filter_element_new (void) { FilterElement *o = (FilterElement *)gtk_type_new(filter_element_get_type ()); return o; @@ -122,106 +123,114 @@ filter_element_new(void) /** * filter_element_xml_create: - * @fe: - * @node: + * @fe: filter element + * @node: xml node * * Create a new filter element based on an xml definition of * that element. **/ -void filter_element_xml_create (FilterElement *fe, xmlNodePtr node) +void +filter_element_xml_create (FilterElement *fe, xmlNodePtr node) { return ((FilterElementClass *)((GtkObject *)fe)->klass)->xml_create(fe, node); } /** * filter_element_xml_encode: - * @fe: + * @fe: filter element * * Encode the values of a filter element into xml format. * * Return value: **/ -xmlNodePtr filter_element_xml_encode (FilterElement *fe) +xmlNodePtr +filter_element_xml_encode (FilterElement *fe) { return ((FilterElementClass *)((GtkObject *)fe)->klass)->xml_encode(fe); } /** * filter_element_xml_decode: - * @fe: - * @node: + * @fe: filter element + * @node: xml node * * Decode the values of a fitler element from xml format. * * Return value: **/ -int filter_element_xml_decode (FilterElement *fe, xmlNodePtr node) +int +filter_element_xml_decode (FilterElement *fe, xmlNodePtr node) { return ((FilterElementClass *)((GtkObject *)fe)->klass)->xml_decode(fe, node); } /** * filter_element_clone: - * @fe: + * @fe: filter element * * Clones the FilterElement @fe. * * Return value: **/ -FilterElement *filter_element_clone (FilterElement *fe) +FilterElement * +filter_element_clone (FilterElement *fe) { return ((FilterElementClass *)((GtkObject *)fe)->klass)->clone(fe); } /** * filter_element_get_widget: - * @fe: - * @node: + * @fe: filter element + * @node: xml node * * Create a widget to represent this element. * * Return value: **/ -GtkWidget *filter_element_get_widget (FilterElement *fe) +GtkWidget * +filter_element_get_widget (FilterElement *fe) { return ((FilterElementClass *)((GtkObject *)fe)->klass)->get_widget(fe); } /** * filter_element_build_code: - * @fe: - * @out: + * @fe: filter element + * @out: output buffer * @ff: * * Add the code representing this element to the output string @out. **/ -void filter_element_build_code (FilterElement *fe, GString *out, struct _FilterPart *ff) +void +filter_element_build_code (FilterElement *fe, GString *out, struct _FilterPart *ff) { return ((FilterElementClass *)((GtkObject *)fe)->klass)->build_code(fe, out, ff); } /** * filter_element_format_sexp: - * @fe: - * @out: + * @fe: filter element + * @out: output buffer * * Format the value(s) of this element in a method suitable for the context of * sexp where it is used. Usually as space separated, double-quoted strings. **/ -void filter_element_format_sexp (FilterElement *fe, GString *out) +void +filter_element_format_sexp (FilterElement *fe, GString *out) { return ((FilterElementClass *)((GtkObject *)fe)->klass)->format_sexp(fe, out); } /** * filter_element_new_type_name: - * @type: + * @type: filter element type * * Create a new filter element based on its type name. * * Return value: **/ -FilterElement *filter_element_new_type_name (const char *type) +FilterElement * +filter_element_new_type_name (const char *type) { if (type == NULL) return NULL; @@ -243,6 +252,8 @@ FilterElement *filter_element_new_type_name (const char *type) return (FilterElement *)filter_datespec_new (); } else if (!strcmp (type, "score")) { return (FilterElement *)filter_score_new (); + } else if (!strcmp (type, "url")) { + return (FilterElement *)filter_url_new (); } else { g_warning("Unknown filter type '%s'", type); return 0; @@ -250,20 +261,23 @@ FilterElement *filter_element_new_type_name (const char *type) } /* default implementations */ -static void xml_create(FilterElement *fe, xmlNodePtr node) +static void +xml_create (FilterElement *fe, xmlNodePtr node) { - fe->name = xmlGetProp(node, "name"); + fe->name = xmlGetProp (node, "name"); } -static FilterElement *clone(FilterElement *fe) +static FilterElement * +clone (FilterElement *fe) { xmlNodePtr node; FilterElement *new; - new = (FilterElement *)gtk_type_new( ((GtkObject *)fe)->klass->type ); - node = filter_element_xml_encode(fe); - filter_element_xml_decode(new, node); - xmlFreeNodeList(node); + new = (FilterElement *)gtk_type_new (GTK_OBJECT (fe)->klass->type); + node = filter_element_xml_encode (fe); + filter_element_xml_decode (new, node); + xmlFreeNodeList (node); + return new; } |