aboutsummaryrefslogtreecommitdiffstats
path: root/filter/filter-element.c
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@helixcode.com>2000-10-21 10:51:38 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2000-10-21 10:51:38 +0800
commit6d74595779416412b478dd4ae3d38dffd3f4baae (patch)
treef5793662a36daff8df54de77077193920fb5acc3 /filter/filter-element.c
parent3d17cca7ed57dcde3c6649e15d4ac7fe30174776 (diff)
downloadgsoc2013-evolution-6d74595779416412b478dd4ae3d38dffd3f4baae.tar
gsoc2013-evolution-6d74595779416412b478dd4ae3d38dffd3f4baae.tar.gz
gsoc2013-evolution-6d74595779416412b478dd4ae3d38dffd3f4baae.tar.bz2
gsoc2013-evolution-6d74595779416412b478dd4ae3d38dffd3f4baae.tar.lz
gsoc2013-evolution-6d74595779416412b478dd4ae3d38dffd3f4baae.tar.xz
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.c80
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;
}