sync with 0.7.5cvs16
[claws.git] / src / summaryview.c
index 5ca1427e5c8fb8b5cc7dcb378223d62f485dd67a..88552f2b25fbaca9505adca3335367909e30e801 100644 (file)
@@ -310,6 +310,9 @@ static void summary_show_all_header_cb      (SummaryView            *summaryview,
 static void summary_add_address_cb     (SummaryView            *summaryview,
                                         guint                   action,
                                         GtkWidget              *widget);
+static void summary_create_filter_cb   (SummaryView            *summaryview,
+                                        guint                   action,
+                                        GtkWidget              *widget);
 
 static void summary_mark_clicked       (GtkWidget              *button,
                                         SummaryView            *summaryview);
@@ -421,6 +424,15 @@ static GtkItemFactoryEntry summary_popup_entries[] =
        {N_("/---"),                    NULL, NULL,             0, "<Separator>"},
        {N_("/Add sender to address boo_k"),
                                        NULL, summary_add_address_cb, 0, NULL},
+       {N_("/Create f_ilter rule"),    NULL, NULL,             0, "<Branch>"},
+       {N_("/Create f_ilter rule/_Automatically"),
+                                       NULL, summary_create_filter_cb, FILTER_BY_AUTO, NULL},
+       {N_("/Create f_ilter rule/by _From"),
+                                       NULL, summary_create_filter_cb, FILTER_BY_FROM, NULL},
+       {N_("/Create f_ilter rule/by _To"),
+                                       NULL, summary_create_filter_cb, FILTER_BY_TO, NULL},
+       {N_("/Create f_ilter rule/by _Subject"),
+                                       NULL, summary_create_filter_cb, FILTER_BY_SUBJECT, NULL},
        {N_("/---"),                    NULL, NULL,             0, "<Separator>"},
        {N_("/_View"),                  NULL, NULL,             0, "<Branch>"},
        {N_("/_View/Open in new _window"),
@@ -1088,6 +1100,7 @@ static void summary_set_menu_sensitive(SummaryView *summaryview)
        menu_set_sensitive(ifactory, "/Bounce",                   TRUE);
 
        menu_set_sensitive(ifactory, "/Add sender to address book", sens);
+       menu_set_sensitive(ifactory, "/Create filter rule",         sens);
 
        menu_set_sensitive(ifactory, "/View", sens);
        menu_set_sensitive(ifactory, "/View/Open in new window", sens);
@@ -1696,7 +1709,8 @@ static void summary_status_show(SummaryView *summaryview)
                n_selected++;
        }
 
-       if (summaryview->folder_item->folder->type == F_NEWS) {
+       if (summaryview->folder_item->folder->type == F_NEWS &&
+           prefs_common.ng_abbrev_len < strlen(summaryview->folder_item->path)) {
                gchar *group;
                group = get_abbrev_newsgroup_name
                        (g_basename(summaryview->folder_item->path));
@@ -2111,7 +2125,7 @@ gint summary_write_cache(SummaryView *summaryview)
        gint ver = CACHE_VERSION;
        gchar *buf;
        gchar *cachefile, *markfile;
-       GSList * cur;
+       GSList *cur;
        gint filemode = 0;
        PrefsFolderItem *prefs;
 
@@ -2177,6 +2191,12 @@ gint summary_write_cache(SummaryView *summaryview)
 
        gtk_ctree_pre_recursive(ctree, NULL, summary_write_cache_func, &fps);
 
+       for (cur = summaryview->killed_messages; cur != NULL; cur = cur->next) {
+               MsgInfo *msginfo = (MsgInfo *)cur->data;
+               procmsg_write_cache(msginfo, fps.cache_fp);
+               procmsg_write_flags(msginfo, fps.mark_fp);
+       }
+
        procmsg_flush_mark_queue(summaryview->folder_item, fps.mark_fp);
 
        fclose(fps.cache_fp);
@@ -2266,13 +2286,13 @@ static void summary_set_header(SummaryView *summaryview, gchar *text[],
                if (prefs_common.use_addr_book) {
                        Xstrdup_a(addr, msginfo->from, return);
                        extract_address(addr);
-               }
 
                if (account_find_from_address(addr)) {
                        addr = summary_complete_address(msginfo->to);
                        g_free(to);
                        to   = g_strconcat("-->", addr == NULL ? msginfo->to : addr, NULL);
                        text[col_pos[S_COL_FROM]] = to;
+                       }
                }
        }
 
@@ -4765,6 +4785,12 @@ static void summary_add_address_cb(SummaryView *summaryview,
        summary_add_address(summaryview);
 }
 
+static void summary_create_filter_cb(SummaryView *summaryview,
+                                    guint action, GtkWidget *widget)
+{
+       summary_filter_open(summaryview, (PrefsFilterType)action);
+}
+
 static void summary_mark_clicked(GtkWidget *button, SummaryView *summaryview)
 {
        summary_sort(summaryview, SORT_BY_MARK);