diff options
author | Not Zed <NotZed@Ximian.com> | 2004-06-17 15:34:50 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2004-06-17 15:34:50 +0800 |
commit | a218c7d2f7e86bccc7665a3c96569eb14d1c75da (patch) | |
tree | 1195c4ed2291f51c36d15125d32be3cc53b9822b /mail/em-vfolder-context.c | |
parent | 5d5f3b88c3ad76e0b81763f9c48b7fee84df2292 (diff) | |
download | gsoc2013-evolution-a218c7d2f7e86bccc7665a3c96569eb14d1c75da.tar.gz gsoc2013-evolution-a218c7d2f7e86bccc7665a3c96569eb14d1c75da.tar.zst gsoc2013-evolution-a218c7d2f7e86bccc7665a3c96569eb14d1c75da.zip |
** See #59885.
2004-06-17 Not Zed <NotZed@Ximian.com>
** See #59885.
** Moved all of the mail specific filtering stuff from filter/* to
here. Renamed appropriately into em* space, etc.
* em-filter-folder-element.c (emff_copy_value): implement for folders.
* em-vfolder-rule.c (get_widget): read the vfolder glade from
mail-config.glade.
* mail-config.glade: moved the vfolder source selector here.
* em-search-context.c: new mail search specific rule context.
* mail-component.c (setup_search_context): use the new
em_search_context.
* vfolder-rule.c (validate): change error to mail context.
* filter-folder.c (validate): change error to mail context.
* Makefile.am (em-filter-i18n.h): added rule for i18n of mail
filter type stuff.
(libevolution_mail_la_SOURCES): added in the filter and vfolder
rule stuff specific to mail.
** See #59885.
* em-format-html-quote.[ch]: remove and remove from build, not
used.
* Makefile.am (libevolution_mail_la_LIBADD): add libeabutil and
evolutionsmime.
* mail-component-factory.c (factory): there is no mail_config
anymore.
svn path=/trunk/; revision=26380
Diffstat (limited to 'mail/em-vfolder-context.c')
-rw-r--r-- | mail/em-vfolder-context.c | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/mail/em-vfolder-context.c b/mail/em-vfolder-context.c new file mode 100644 index 0000000000..b06e411cf5 --- /dev/null +++ b/mail/em-vfolder-context.c @@ -0,0 +1,113 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * Copyright(C) 2000-2002 Ximian Inc. + * + * Authors: Not Zed <notzed@lostzed.mmc.com.au> + * Jeffrey Stedfast <fejj@ximian.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2 of the GNU General Public + * License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <string.h> + +#include "em-vfolder-context.h" +#include "em-vfolder-rule.h" +#include "filter/filter-option.h" +#include "filter/filter-int.h" + +static FilterElement *vfolder_new_element(RuleContext *rc, const char *type); + +static RuleContextClass *parent_class = NULL; + +static void +em_vfolder_context_finalise(GObject *obj) +{ + G_OBJECT_CLASS(parent_class)->finalize(obj); +} + +static void +em_vfolder_context_class_init(EMVFolderContextClass *klass) +{ + parent_class = g_type_class_ref(RULE_TYPE_CONTEXT); + + ((GObjectClass *)klass)->finalize = em_vfolder_context_finalise; + ((RuleContextClass *)klass)->new_element = vfolder_new_element; +} + +static void +em_vfolder_context_init(EMVFolderContext *vc) +{ + rule_context_add_part_set((RuleContext *) vc, "partset", filter_part_get_type(), + rule_context_add_part, rule_context_next_part); + + rule_context_add_rule_set((RuleContext *) vc, "ruleset", em_vfolder_rule_get_type(), + rule_context_add_rule, rule_context_next_rule); + + ((RuleContext *)vc)->flags = RULE_CONTEXT_THREADING | RULE_CONTEXT_GROUPING; +} + +GType +em_vfolder_context_get_type(void) +{ + static GType type = 0; + + if (!type) { + static const GTypeInfo info = { + sizeof(EMVFolderContextClass), + NULL, /* base_class_init */ + NULL, /* base_class_finalize */ + (GClassInitFunc) em_vfolder_context_class_init, + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof(EMVFolderContext), + 0, /* n_preallocs */ + (GInstanceInitFunc) em_vfolder_context_init, + }; + + type = g_type_register_static(RULE_TYPE_CONTEXT, "EMVFolderContext", &info, 0); + } + + return type; +} + +/** + * em_vfolder_context_new: + * + * Create a new EMVFolderContext object. + * + * Return value: A new #EMVFolderContext object. + **/ +EMVFolderContext * +em_vfolder_context_new(void) +{ + return (EMVFolderContext *)g_object_new(em_vfolder_context_get_type(), NULL, NULL); +} + +static FilterElement * +vfolder_new_element(RuleContext *rc, const char *type) +{ + if (!strcmp(type, "system-flag")) { + return (FilterElement *) filter_option_new(); + } else if (!strcmp(type, "score")) { + return (FilterElement *) filter_int_new_type("score", -3, 3); + } else { + return parent_class->new_element(rc, type); + } +} + |