diff options
author | Ettore Perazzoli <ettore@src.gnome.org> | 2000-09-12 22:30:49 +0800 |
---|---|---|
committer | Ettore Perazzoli <ettore@src.gnome.org> | 2000-09-12 22:30:49 +0800 |
commit | 395a311fe36286101e2d82c13d2ad1227df3e8bb (patch) | |
tree | 882c8e6cce944212f2117baa118d4a15b56f4994 /mail/mail-autofilter.c | |
parent | 64b4dcdffa1ae23a39b92fa71520269777fdc451 (diff) | |
download | gsoc2013-evolution-395a311fe36286101e2d82c13d2ad1227df3e8bb.tar.gz gsoc2013-evolution-395a311fe36286101e2d82c13d2ad1227df3e8bb.tar.zst gsoc2013-evolution-395a311fe36286101e2d82c13d2ad1227df3e8bb.zip |
Cool Hack of the Day: right-click menu item to autodetect what mailing
list a message comes from and create the rule for it on the fly.
(Many thanks to Joakim for suggesting the way to implement this.)
Also, use the new shiny toolbar icons from TigerT and mark some
strings for translation.
svn path=/trunk/; revision=5362
Diffstat (limited to 'mail/mail-autofilter.c')
-rw-r--r-- | mail/mail-autofilter.c | 84 |
1 files changed, 78 insertions, 6 deletions
diff --git a/mail/mail-autofilter.c b/mail/mail-autofilter.c index 2de013a448..2b46f4288e 100644 --- a/mail/mail-autofilter.c +++ b/mail/mail-autofilter.c @@ -1,6 +1,29 @@ -/* - code for autogenerating rules or filters from a message -*/ +/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ +/* mail-autofilter.c + * + * Copyright (C) 2000 Helix Code, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * 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. + * + * Authors: + * Michael Zucchi <notzed@helixcode.com> + * Ettore Perazzoli <ettore@helixcode.com> + */ + +/* Code for autogenerating rules or filters from a message. */ #include <ctype.h> @@ -49,7 +72,7 @@ rule_match_recipients(RuleContext *context, FilterRule *rule, CamelInternetAddre element = filter_part_find_element(part, "recipient"); filter_input_set_value((FilterInput *)element, addr); - namestr = g_strdup_printf("Mail to %s", real&&real[0]?real:addr); + namestr = g_strdup_printf(_("Mail to %s"), real&&real[0]?real:addr); filter_rule_set_name(rule, namestr); g_free(namestr); } @@ -203,7 +226,7 @@ rule_from_message(FilterRule *rule, RuleContext *context, CamelMimeMessage *msg, name = scan->name; else name = scan->v.addr; - namestr = g_strdup_printf("Mail from %s", name); + namestr = g_strdup_printf(_("Mail from %s"), name); filter_rule_set_name(rule, namestr); g_free(namestr); } @@ -257,9 +280,58 @@ filter_gui_add_from_message(CamelMimeMessage *msg, int flags) systemrules = g_strdup_printf("%s/evolution/filtertypes.xml", EVOLUTION_DATADIR); rule_context_load((RuleContext *)fc, systemrules, userrules, NULL, NULL); rule = filter_rule_from_message(fc, msg, flags); - rule_context_add_rule_gui((RuleContext *)fc, rule, "Add Filter Rule", userrules); + rule_context_add_rule_gui((RuleContext *)fc, rule, _("Add Filter Rule"), userrules); g_free (userrules); g_free (systemrules); gtk_object_unref((GtkObject *)fc); } +void +filter_gui_add_for_mailing_list (CamelMimeMessage *msg, + const char *list_name, + const char *header_name, + const char *header_value) +{ + FilterContext *fc; + FilterRule *rule; + FilterPart *part; + FilterElement *element; + char *userrules, *systemrules; + char *rule_name; + extern char *evolution_dir; + + g_return_if_fail (msg != NULL); + g_return_if_fail (CAMEL_IS_MIME_MESSAGE (msg)); + g_return_if_fail (list_name != NULL); + g_return_if_fail (header_name != NULL); + g_return_if_fail (header_value != NULL); + + fc = filter_context_new(); + userrules = g_strdup_printf("%s/filters.xml", evolution_dir); + systemrules = g_strdup_printf("%s/evolution/filtertypes.xml", EVOLUTION_DATADIR); + rule_context_load((RuleContext *)fc, systemrules, userrules, NULL, NULL); + + rule = filter_rule_new (); + + part = rule_context_create_part((RuleContext *)fc, "header"); + filter_rule_add_part((FilterRule *)rule, part); + + element = filter_part_find_element(part, "header-field"); + filter_input_set_value((FilterInput *)element, header_name); + + element = filter_part_find_element(part, "header-type"); + filter_option_set_current((FilterOption *)element, "contains"); + + element = filter_part_find_element(part, "word"); + filter_input_set_value((FilterInput *)element, header_value); + + rule_name = g_strdup_printf (_("%s mailing list"), list_name); + filter_rule_set_name ((FilterRule *) rule, rule_name); + g_free (rule_name); + + rule_context_add_rule_gui ((RuleContext *)fc, rule, _("Add Filter Rule"), userrules); + + g_free (userrules); + g_free (systemrules); + gtk_object_unref((GtkObject *)fc); +} |