{N_("/_Mark/_Unmark"), NULL, summary_unmark, 0, NULL},
{N_("/_Mark/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_Mark/Mark as unr_ead"), NULL, summary_mark_as_unread, 0, NULL},
- {N_("/_Mark/Make it as _being read"),
+ {N_("/_Mark/Mark as rea_d"),
NULL, summary_mark_as_read, 0, NULL},
{N_("/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_Reply"), NULL, summary_reply_cb, COMPOSE_REPLY, NULL},
+ {N_("/Repl_y to sender"), NULL, summary_reply_cb, COMPOSE_REPLY_TO_SENDER, NULL},
{N_("/Reply to a_ll"), NULL, summary_reply_cb, COMPOSE_REPLY_TO_ALL, NULL},
- {N_("/Reply to author"), NULL, summary_reply_cb, COMPOSE_REPLY_TO_AUTHOR, NULL},
{N_("/_Forward"), NULL, summary_reply_cb, COMPOSE_FORWARD, NULL},
- {N_("/Forward as an a_ttachment"),
+ {N_("/Forward as a_ttachment"),
NULL, summary_reply_cb, COMPOSE_FORWARD_AS_ATTACH, NULL},
{N_("/---"), NULL, NULL, 0, "<Separator>"},
{N_("/Open in new _window"), NULL, summary_open_msg, 0, NULL},
{N_("/View so_urce"), NULL, summary_view_source, 0, NULL},
{N_("/Show all _header"), NULL, summary_show_all_header_cb, 0, NULL},
- {N_("/Re_edit"), NULL, summary_reedit, 0, NULL},
+ {N_("/Re-_edit"), NULL, summary_reedit, 0, NULL},
{N_("/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_Save as..."), NULL, summary_save_as, 0, NULL},
{N_("/_Print..."), NULL, summary_print, 0, NULL},
summary_set_menu_sensitive(summaryview);
}
+GtkCTreeNode * summary_find_next_important_score(SummaryView *summaryview,
+ GtkCTreeNode *current_node)
+{
+ GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
+ GtkCTreeNode *node;
+ MsgInfo *msginfo;
+ gint best_score = MIN_SCORE;
+ GtkCTreeNode *best_node = NULL;
+
+ if (current_node)
+ //node = current_node;
+ node = GTK_CTREE_NODE_NEXT(current_node);
+ else
+ node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
+
+ for (; node != NULL; node = GTK_CTREE_NODE_NEXT(node)) {
+ msginfo = gtk_ctree_node_get_row_data(ctree, node);
+ if (msginfo->score >= summaryview->important_score)
+ break;
+ if (msginfo->score > best_score) {
+ best_score = msginfo->score;
+ best_node = node;
+ }
+ }
+
+ if (node != NULL)
+ return node;
+ else
+ return best_node;
+}
+
+GtkCTreeNode * summary_find_prev_important_score(SummaryView *summaryview,
+ GtkCTreeNode *current_node)
+{
+ GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
+ GtkCTreeNode *node;
+ MsgInfo *msginfo;
+ gint best_score = MIN_SCORE;
+ GtkCTreeNode *best_node = NULL;
+
+ if (current_node)
+ //node = current_node;
+ node = GTK_CTREE_NODE_PREV(current_node);
+ else
+ node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
+
+ for (; node != NULL; node = GTK_CTREE_NODE_PREV(node)) {
+ msginfo = gtk_ctree_node_get_row_data(ctree, node);
+ if (msginfo->score >= summaryview->important_score)
+ break;
+ if (msginfo->score > best_score) {
+ best_score = msginfo->score;
+ best_node = node;
+ }
+ }
+
+ if (node != NULL)
+ return node;
+ else
+ return best_node;
+}
+
gboolean summary_show(SummaryView *summaryview, FolderItem *item,
gboolean update_cache)
{
gchar *buf;
gboolean is_refresh;
guint prev_msgnum = 0;
+ GtkCTreeNode *selected_node = summaryview->folderview->selected;
GSList *cur;
gint sort_mode;
gint sort_type;
is_refresh = FALSE;
}
-#if 0
/* process the marks if any */
- if (summaryview->deleted > 0 || summaryview->moved > 0) {
+ if (summaryview->moved > 0 || summaryview->copied > 0) {
AlertValue val;
val = alertpanel(_("Process mark"),
else
return FALSE;
} else
-#endif
- if (!is_refresh)
- summary_write_cache(summaryview);
+ summary_write_cache(summaryview);
+
+ summaryview->folderview->opened = selected_node;
gtk_clist_freeze(GTK_CLIST(ctree));
for(cur = mlist ; cur != NULL ; cur = g_slist_next(cur)) {
MsgInfo * msginfo = (MsgInfo *) cur->data;
- msginfo->score = score_message(prefs_scoring, msginfo);
+ msginfo->score = score_message(global_scoring, msginfo);
+ if (msginfo->score != MAX_SCORE &&
+ msginfo->score != MIN_SCORE) {
+ msginfo->score += score_message(item->prefs->scoring,
+ msginfo);
+ }
+ }
+
+ summaryview->killed_messages = NULL;
+ if ((global_scoring || item->prefs->scoring) &&
+ (item->folder->type == F_NEWS)) {
+ GSList *not_killed;
+ gint kill_score;
+
+ not_killed = NULL;
+ kill_score = prefs_common.kill_score;
+ if (item->prefs->kill_score > kill_score)
+ kill_score = item->prefs->kill_score;
+ for(cur = mlist ; cur != NULL ; cur = g_slist_next(cur)) {
+ MsgInfo * msginfo = (MsgInfo *) cur->data;
+
+ if (MSG_IS_NEWS(msginfo->flags) &&
+ (msginfo->score <= kill_score))
+ summaryview->killed_messages = g_slist_append(summaryview->killed_messages, msginfo);
+ else
+ not_killed = g_slist_append(not_killed,
+ msginfo);
+ }
+ g_slist_free(mlist);
+ mlist = not_killed;
}
STATUSBAR_POP(summaryview->mainwin);
GTK_SIGNAL_FUNC(summary_open_row), summaryview);
/*connect drag and drop signal*/
- gtk_signal_connect (GTK_OBJECT (ctree),"start_drag",
- GTK_SIGNAL_FUNC (summary_start_drag),
- summaryview);
- gtk_signal_connect (GTK_OBJECT (ctree),"drag_data_get",
- GTK_SIGNAL_FUNC (summary_drag_data_get),
- summaryview);
-
+ gtk_signal_connect(GTK_OBJECT (ctree),"start_drag",
+ GTK_SIGNAL_FUNC (summary_start_drag),
+ summaryview);
+ gtk_signal_connect(GTK_OBJECT (ctree),"drag_data_get",
+ GTK_SIGNAL_FUNC (summary_drag_data_get),
+ summaryview);
+
gtk_clist_thaw(GTK_CLIST(ctree));
+ /* sort before */
+ sort_mode = prefs_folder_item_get_sort_mode(item);
+ sort_type = prefs_folder_item_get_sort_type(item);
+
+ if (sort_mode != SORT_BY_NONE) {
+ summaryview->sort_mode = sort_mode;
+ if (sort_type == GTK_SORT_DESCENDING)
+ summaryview->sort_type = GTK_SORT_ASCENDING;
+ else
+ summaryview->sort_type = GTK_SORT_DESCENDING;
+
+ summary_sort(summaryview, sort_mode);
+ }
+
if (is_refresh) {
summary_select_by_msgnum(summaryview, prev_msgnum);
} else {
/* select first unread message */
- node = summary_find_next_unread_msg(summaryview, NULL);
+ if (sort_mode == SORT_BY_SCORE)
+ node = summary_find_next_important_score(summaryview,
+ NULL);
+ else
+ node = summary_find_next_unread_msg(summaryview, NULL);
+
if (node == NULL && GTK_CLIST(ctree)->row_list != NULL)
node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list_end);
if (node) {
main_window_cursor_normal(summaryview->mainwin);
- /* sort before */
- sort_mode = prefs_folder_item_get_sort_mode(item);
- sort_type = prefs_folder_item_get_sort_type(item);
-
- if (sort_mode != SORT_BY_NONE) {
- summaryview->sort_mode = sort_mode;
- if (sort_type == GTK_SORT_DESCENDING)
- summaryview->sort_type = GTK_SORT_ASCENDING;
- else
- summaryview->sort_type = GTK_SORT_DESCENDING;
-
- summary_sort(summaryview, sort_mode);
- }
-
return TRUE;
}
{
GtkCList *clist = GTK_CLIST(summaryview->ctree);
gint optimal_width;
+ GSList * cur;
gtk_clist_freeze(clist);
+ for(cur = summaryview->killed_messages ; cur != NULL ;
+ cur = g_slist_next(cur)) {
+ MsgInfo * msginfo = (MsgInfo *) cur->data;
+
+ procmsg_msginfo_free(msginfo);
+ }
+ g_slist_free(summaryview->killed_messages);
+ summaryview->killed_messages = NULL;
+
gtk_ctree_pre_recursive(GTK_CTREE(summaryview->ctree),
NULL, summary_free_msginfo_func, NULL);
sens = (selection == SUMMARY_SELECTED_MULTIPLE) ? FALSE : TRUE;
menu_set_sensitive(ifactory, "/Reply", sens);
+ menu_set_sensitive(ifactory, "/Reply to sender", sens);
menu_set_sensitive(ifactory, "/Reply to all", sens);
- menu_set_sensitive(ifactory, "/Reply to author", sens);
menu_set_sensitive(ifactory, "/Forward", sens);
- menu_set_sensitive(ifactory, "/Forward as an attachment", sens);
+ menu_set_sensitive(ifactory, "/Forward as attachment", sens);
menu_set_sensitive(ifactory, "/Open in new window", sens);
menu_set_sensitive(ifactory, "/View source", sens);
if ((summaryview->folder_item->stype == F_DRAFT) ||
(summaryview->folder_item->stype == F_OUTBOX) ||
(summaryview->folder_item->stype == F_QUEUE))
- menu_set_sensitive(ifactory, "/Reedit", sens);
+ menu_set_sensitive(ifactory, "/Re-edit", sens);
menu_set_sensitive(ifactory, "/Save as...", sens);
menu_set_sensitive(ifactory, "/Print...", TRUE);
menu_set_sensitive(ifactory, "/Mark/Unmark", TRUE);
menu_set_sensitive(ifactory, "/Mark/Mark as unread", TRUE);
- menu_set_sensitive(ifactory, "/Mark/Make it as being read", TRUE);
+ menu_set_sensitive(ifactory, "/Mark/Mark as read", TRUE);
menu_set_sensitive(ifactory, "/Select all", TRUE);
}
msginfo->threadscore = msginfo->score;
}
+ if (global_scoring || summaryview->folder_item->prefs->scoring) {
+ summaryview->important_score = prefs_common.important_score;
+ if (summaryview->folder_item->prefs->important_score >
+ summaryview->important_score)
+ summaryview->important_score =
+ summaryview->folder_item->prefs->important_score;
+ }
+
/* if (prefs_common.enable_thread) { */
if (summaryview->folder_item->prefs->enable_thread) {
for (; mlist != NULL; mlist = mlist->next) {
(ctree, parent, NULL, text, 2,
NULL, NULL, NULL, NULL, FALSE, TRUE);
GTKUT_CTREE_NODE_SET_ROW_DATA(node, msginfo);
+
summary_set_marks_func(ctree, node, summaryview);
/* preserve previous node if the message is
gint ver = CACHE_VERSION;
gchar *buf;
gchar *cachefile, *markfile;
+ GSList * cur;
if (!summaryview->folder_item || !summaryview->folder_item->path)
return -1;
gtk_ctree_pre_recursive(ctree, NULL, summary_write_cache_func, &fps);
+ for(cur = summaryview->killed_messages ; cur != NULL ;
+ cur = g_slist_next(cur)) {
+ MsgInfo *msginfo = (MsgInfo *) cur->data;
+
+ procmsg_write_cache(msginfo, fps.cache_fp);
+ procmsg_write_flags(msginfo, fps.mark_fp);
+ }
+
fclose(fps.cache_fp);
fclose(fps.mark_fp);
gtk_ctree_node_set_text(ctree, row, S_COL_MARK, "O");
gtk_ctree_node_set_foreground(ctree, row,
&summaryview->color_marked);
+ }
+ else if ((global_scoring ||
+ summaryview->folder_item->prefs->scoring) &&
+ (msginfo->score >= summaryview->important_score) &&
+ ((msginfo->flags &
+ (MSG_MARKED | MSG_MOVE | MSG_COPY)) == 0)) {
+ gtk_ctree_node_set_text(ctree, row, S_COL_MARK, "!");
+ gtk_ctree_node_set_foreground(ctree, row,
+ &summaryview->color_important);
} else {
gtk_ctree_node_set_text(ctree, row, S_COL_MARK, NULL);
}
case COMPOSE_REPLY_WITHOUT_QUOTE:
compose_reply(msginfo, FALSE, FALSE, FALSE);
break;
+ case COMPOSE_REPLY_TO_SENDER:
+ compose_reply(msginfo, prefs_common.reply_with_quote,
+ FALSE, TRUE);
+ break;
+ case COMPOSE_REPLY_TO_SENDER_WITH_QUOTE:
+ compose_reply(msginfo, TRUE, FALSE, TRUE);
+ break;
+ case COMPOSE_REPLY_TO_SENDER_WITHOUT_QUOTE:
+ compose_reply(msginfo, FALSE, FALSE, TRUE);
+ break;
case COMPOSE_REPLY_TO_ALL:
compose_reply(msginfo, prefs_common.reply_with_quote,
TRUE, FALSE);
case COMPOSE_REPLY_TO_ALL_WITHOUT_QUOTE:
compose_reply(msginfo, FALSE, TRUE, FALSE);
break;
- case COMPOSE_REPLY_TO_AUTHOR:
- compose_reply(msginfo, prefs_common.reply_with_quote,
- FALSE, TRUE);
- break;
- case COMPOSE_REPLY_TO_AUTHOR_WITH_QUOTE:
- compose_reply(msginfo, TRUE, FALSE, TRUE);
- break;
- case COMPOSE_REPLY_TO_AUTHOR_WITHOUT_QUOTE:
- compose_reply(msginfo, FALSE, FALSE, TRUE);
- break;
case COMPOSE_FORWARD:
compose_forward(NULL, msginfo, FALSE);
break;
compose_forward(NULL, msginfo, TRUE);
break;
default:
- compose_reply(msginfo, prefs_common.reply_with_quote,
- FALSE, FALSE);
+ g_warning("summary_reply_cb(): invalid action: %d\n", action);
}
summary_set_marks_selected(summaryview);