From 5c9c2f33b943c9996eac380d5534b80ce5402360 Mon Sep 17 00:00:00 2001 From: Michael Zucci Date: Fri, 23 Feb 2001 00:31:23 +0000 Subject: vfolder/filter on mailing list. Doesn't acutally work right yet. * mail-vfolder.c (vfolder_gui_add_from_mlist): Rule to add mlist vfolder. * mail-autofilter.c (filter_gui_add_for_mailing_list): Removed. (rule_from_mlist): Build a generic match rule from an mlist. (vfolder_rule_from_mlist): Setup the vfolder rule for an mlist. (filter_rule_from_mlist): Setup a filter rule fro an mlist. (filter_gui_add_from_mlist): GUI thingy to do the work. * folder-browser.c (on_right_click): Added vfolder on mailing list to filter menu. (on_right_click): Use header_raw_check_mailign_list instead of mlist magic to get the mailing list name. (filter_mlist): Changed to use new add_from_mlist() call. (vfolder_mlist): New function for vfolder from mlist. svn path=/trunk/; revision=8358 --- mail/folder-browser.c | 50 +++++++++++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 19 deletions(-) (limited to 'mail/folder-browser.c') diff --git a/mail/folder-browser.c b/mail/folder-browser.c index b8a7624d92..296a9ba30a 100644 --- a/mail/folder-browser.c +++ b/mail/folder-browser.c @@ -495,6 +495,20 @@ vfolder_recipient (GtkWidget *w, FolderBrowser *fb) vfolder_gui_add_from_message (fb->mail_display->current_message, AUTO_TO, fb->uri); } +void +vfolder_mlist (GtkWidget *w, FolderBrowser *fb) +{ + char *name; + + g_return_if_fail (fb->mail_display->current_message != NULL); + + name = header_raw_check_mailing_list(&((CamelMimePart *)fb->mail_display->current_message)->headers); + if (name) { + vfolder_gui_add_from_mlist(fb->mail_display->current_message, name, fb->uri); + g_free(name); + } +} + void filter_subject (GtkWidget *w, FolderBrowser *fb) { @@ -517,19 +531,14 @@ void filter_mlist (GtkWidget *w, FolderBrowser *fb) { char *name; - char *header_value; - const char *header_name; - + g_return_if_fail (fb->mail_display->current_message != NULL); - name = mail_mlist_magic_detect_list (fb->mail_display->current_message, &header_name, &header_value); - if (name == NULL) - return; - - filter_gui_add_for_mailing_list (fb->mail_display->current_message, name, header_name, header_value); - - g_free (name); - g_free (header_value); + name = header_raw_check_mailing_list(&((CamelMimePart *)fb->mail_display->current_message)->headers); + if (name) { + filter_gui_add_from_mlist(name); + g_free(name); + } } void @@ -648,14 +657,17 @@ on_right_click (ETable *table, gint row, gint col, GdkEvent *event, FolderBrowse CamelMessageInfo *info; GPtrArray *uids; int enable_mask = 0; - int last_item, i; + int i; char *mailing_list_name = NULL; char *subject_match = NULL, *from_match = NULL; +#define MLIST_VFOLDER (3) +#define MLIST_FILTER (8) EPopupMenu filter_menu[] = { { _("VFolder on Subject"), NULL, GTK_SIGNAL_FUNC (vfolder_subject), NULL, 2 }, { _("VFolder on Sender"), NULL, GTK_SIGNAL_FUNC (vfolder_sender), NULL, 2 }, { _("VFolder on Recipients"), NULL, GTK_SIGNAL_FUNC (vfolder_recipient), NULL, 2 }, + { _("VFolder on Mailing List"), NULL, GTK_SIGNAL_FUNC (vfolder_mlist), NULL, 66 }, { "", NULL, GTK_SIGNAL_FUNC (NULL), NULL, 0 }, { _("Filter on Subject"), NULL, GTK_SIGNAL_FUNC (filter_subject), NULL, 2 }, { _("Filter on Sender"), NULL, GTK_SIGNAL_FUNC (filter_sender), NULL, 2 }, @@ -692,8 +704,6 @@ on_right_click (ETable *table, gint row, gint col, GdkEvent *event, FolderBrowse { NULL, NULL, NULL, NULL, 0 } }; - last_item = (sizeof (filter_menu) / sizeof (*filter_menu)) - 2; - if (fb->reconfigure) { enable_mask = 0; goto display_menu; @@ -709,7 +719,7 @@ on_right_click (ETable *table, gint row, gint col, GdkEvent *event, FolderBrowse const char *subject, *real, *addr; const CamelInternetAddress *from; - mailing_list_name = mail_mlist_magic_detect_list (fb->mail_display->current_message, NULL, NULL); + mailing_list_name = header_raw_check_mailing_list(&((CamelMimePart *)fb->mail_display->current_message)->headers); if ((subject = camel_mime_message_get_subject(fb->mail_display->current_message)) && (subject = strip_re(subject)) @@ -774,16 +784,18 @@ display_menu: /* generate the "Filter on Mailing List menu item name */ if (mailing_list_name == NULL) { enable_mask |= 64; - filter_menu[last_item].name = g_strdup (_("Filter on Mailing List")); + filter_menu[MLIST_FILTER].name = g_strdup (_("Filter on Mailing List")); + filter_menu[MLIST_VFOLDER].name = g_strdup (_("VFolder on Mailing List")); } else { - filter_menu[last_item].name = g_strdup_printf (_("Filter on Mailing List (%s)"), - mailing_list_name); + filter_menu[MLIST_FILTER].name = g_strdup_printf (_("Filter on Mailing List (%s)"), mailing_list_name); + filter_menu[MLIST_VFOLDER].name = g_strdup_printf (_("VFolder on Mailing List (%s)"), mailing_list_name); g_free(mailing_list_name); } e_popup_menu_run (menu, event, enable_mask, 0, fb); - g_free(filter_menu[last_item].name); + g_free(filter_menu[MLIST_FILTER].name); + g_free(filter_menu[MLIST_VFOLDER].name); return TRUE; } -- cgit v1.2.3