aboutsummaryrefslogtreecommitdiffstats
path: root/filter/filter-element.c
diff options
context:
space:
mode:
authorNot Zed <NotZed@Ximian.com>2002-07-15 09:46:17 +0800
committerMichael Zucci <zucchi@src.gnome.org>2002-07-15 09:46:17 +0800
commit68ec840bca073bc8e8ea2f58ad36078df9c619c1 (patch)
tree64083ad8df8983d37c2658c51e1c961e4671f160 /filter/filter-element.c
parente785008af08bdc913ce2711dcd7998efb51f694b (diff)
downloadgsoc2013-evolution-68ec840bca073bc8e8ea2f58ad36078df9c619c1.tar
gsoc2013-evolution-68ec840bca073bc8e8ea2f58ad36078df9c619c1.tar.gz
gsoc2013-evolution-68ec840bca073bc8e8ea2f58ad36078df9c619c1.tar.bz2
gsoc2013-evolution-68ec840bca073bc8e8ea2f58ad36078df9c619c1.tar.lz
gsoc2013-evolution-68ec840bca073bc8e8ea2f58ad36078df9c619c1.tar.xz
gsoc2013-evolution-68ec840bca073bc8e8ea2f58ad36078df9c619c1.tar.zst
gsoc2013-evolution-68ec840bca073bc8e8ea2f58ad36078df9c619c1.zip
** fixes for #10781
2002-07-10 Not Zed <NotZed@Ximian.com> ** fixes for #10781 * filter-int.c (xml_encode): (xml_decode): Handle encoding/decoding with a type name, in a manner compatible with the score/label elemtns. (filter_int_new_type): New constructor to create a generic 'int' type. * filter-score.c: Removed. Now relies on using a filter-int with appropriate settings. * filter-label.[ch]: Now inherits from filter-int. * rule-context.c (rule_context_revert): New method to revert a filter context back to a user-file's definition. (revert): implementation. * filter-rule.h: Added new virtual method _eq and wrapper, and fixed all subclasses to implement it. * filter-element.h: Added new virtual method _eq and wrapper. Fixed all subclasses to implement it. svn path=/trunk/; revision=17448
Diffstat (limited to 'filter/filter-element.c')
-rw-r--r--filter/filter-element.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/filter/filter-element.c b/filter/filter-element.c
index cbdab0409f..fa1a6844f9 100644
--- a/filter/filter-element.c
+++ b/filter/filter-element.c
@@ -41,6 +41,7 @@
static gboolean validate (FilterElement *fe);
+static int element_eq(FilterElement *fe, FilterElement *cm);
static void xml_create(FilterElement *fe, xmlNodePtr node);
static FilterElement *clone(FilterElement *fe);
@@ -94,6 +95,7 @@ filter_element_class_init (FilterElementClass *class)
/* override methods */
class->validate = validate;
+ class->eq = element_eq;
class->xml_create = xml_create;
class->clone = clone;
@@ -138,6 +140,13 @@ filter_element_validate (FilterElement *fe)
return ((FilterElementClass *)((GtkObject *)fe)->klass)->validate (fe);
}
+int
+filter_element_eq(FilterElement *fe, FilterElement *cm)
+{
+ return ((GtkObject *)fe)->klass == ((GtkObject *)cm)->klass
+ && ((FilterElementClass *)((GtkObject *)fe)->klass)->eq(fe, cm);
+}
+
/**
* filter_element_xml_create:
* @fe: filter element
@@ -268,7 +277,7 @@ filter_element_new_type_name (const char *type)
} else if (!strcmp (type, "datespec")) {
return (FilterElement *)filter_datespec_new ();
} else if (!strcmp (type, "score")) {
- return (FilterElement *)filter_score_new ();
+ return (FilterElement *)filter_int_new_type("score", -3, 3);
} else if (!strcmp (type, "integer")) {
return (FilterElement *)filter_int_new ();
} else if (!strcmp (type, "regex")) {
@@ -300,6 +309,13 @@ validate (FilterElement *fe)
return TRUE;
}
+static int
+element_eq(FilterElement *fe, FilterElement *cm)
+{
+ return ((fe->name && cm->name && strcmp(fe->name, cm->name) == 0)
+ || (fe->name == NULL && cm->name == NULL));
+}
+
static void
xml_create (FilterElement *fe, xmlNodePtr node)
{