static void rule_match_recipients (ERuleContext *context, EFilterRule *rule, CamelInternetAddress *iaddr) { EFilterPart *part; EFilterElement *element; gint i; const gchar *real, *addr; gchar *namestr; /* address types etc should handle multiple values */ for (i = 0; camel_internet_address_get (iaddr, i, &real, &addr); i++) { part = e_rule_context_create_part (context, "to"); e_filter_rule_add_part ((EFilterRule *) rule, part); element = e_filter_part_find_element (part, "recipient-type"); e_filter_option_set_current ((EFilterOption *)element, "contains"); element = e_filter_part_find_element (part, "recipient"); e_filter_input_set_value ((EFilterInput *) element, addr); namestr = g_strdup_printf (_("Mail to %s"), real && real[0] ? real : addr); e_filter_rule_set_name (rule, namestr); g_free (namestr); } }
static EFilterRule * filter_editor_create_rule (ERuleEditor *rule_editor) { EFilterRule *rule; EFilterPart *part; /* create a rule with 1 part & 1 action in it */ rule = (EFilterRule *) em_filter_rule_new (); part = e_rule_context_next_part (rule_editor->context, NULL); e_filter_rule_add_part (rule, e_filter_part_clone (part)); part = em_filter_context_next_action ( (EMFilterContext *) rule_editor->context, NULL); em_filter_rule_add_action ( (EMFilterRule *) rule, e_filter_part_clone (part)); return rule; }
static void rule_add_sender (ERuleContext *context, EFilterRule *rule, const gchar *text) { EFilterPart *part; EFilterElement *element; /* dont match on empty strings ever */ if (*text == 0) return; part = e_rule_context_create_part (context, "sender"); e_filter_rule_add_part ((EFilterRule *) rule, part); element = e_filter_part_find_element (part, "sender-type"); e_filter_option_set_current ((EFilterOption *)element, "contains"); element = e_filter_part_find_element (part, "sender"); e_filter_input_set_value ((EFilterInput *) element, text); }
static void rule_match_mlist (ERuleContext *context, EFilterRule *rule, const gchar *mlist) { EFilterPart *part; EFilterElement *element; if (mlist[0] == 0) return; part = e_rule_context_create_part(context, "mlist"); e_filter_rule_add_part (rule, part); element = e_filter_part_find_element(part, "mlist-type"); e_filter_option_set_current((EFilterOption *)element, "is"); element = e_filter_part_find_element (part, "mlist"); e_filter_input_set_value ((EFilterInput *) element, mlist); }