{N_("/Follow-up and reply to"), NULL, summary_reply_cb, COMPOSE_FOLLOWUP_AND_REPLY_TO, NULL},
{N_("/Reply to a_ll"), NULL, summary_reply_cb, COMPOSE_REPLY_TO_ALL, NULL},
{N_("/_Forward"), NULL, summary_reply_cb, COMPOSE_FORWARD, NULL},
- {N_("/Bounce"), NULL, summary_reply_cb, COMPOSE_BOUNCE, NULL},
+ {N_("/Redirect"), NULL, summary_reply_cb, COMPOSE_REDIRECT, NULL},
{N_("/---"), NULL, NULL, 0, "<Separator>"},
{N_("/Re-_edit"), NULL, summary_reedit, 0, NULL},
{N_("/---"), NULL, NULL, 0, "<Separator>"},
summaryview->popupfactory = popupfactory;
summaryview->msg_is_toggled_on = TRUE;
summaryview->lock_count = 0;
- summaryview->sort_mode = SORT_BY_NONE;
- summaryview->sort_type = GTK_SORT_ASCENDING;
gtk_widget_show_all(vbox);
g_slist_free(mlist);
+ if (item->sort_key != SORT_BY_NONE) {
+ if (item->sort_type == SORT_DESCENDING)
+ item->sort_type = SORT_ASCENDING;
+ else
+ item->sort_type = SORT_DESCENDING;
+ summary_sort(summaryview, item->sort_key);
+ }
+
summary_write_cache(summaryview);
gtk_signal_handler_unblock_by_data(GTK_OBJECT(ctree), 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) {
summaryview->displayed =
summary_find_msg_by_msgnum(summaryview,
node = summary_find_next_unread_msg(summaryview, NULL);
if (node == NULL && GTK_CLIST(ctree)->row_list != NULL)
node = gtk_ctree_node_nth
- (ctree, sort_type ==
- GTK_SORT_DESCENDING ? 0 :
- GTK_CLIST(ctree)->rows - 1);
+ (ctree,
+ item->sort_type == SORT_DESCENDING
+ ? 0 : GTK_CLIST(ctree)->rows - 1);
summary_select_node(summaryview, node, FALSE, TRUE);
}
} else {
node = summary_find_next_unread_msg(summaryview, NULL);
if (node == NULL && GTK_CLIST(ctree)->row_list != NULL) {
- /* Get the last visible node on screen */
- /* FIXME: huh, what happens if node is null? that allowed?? */
- node = gtk_ctree_node_nth(ctree, sort_type ==
- GTK_SORT_DESCENDING ? 0 :
- GTK_CLIST(ctree)->rows - 1);
- }
+ node = gtk_ctree_node_nth
+ (ctree,
+ item->sort_type == SORT_DESCENDING
+ ? 0 : GTK_CLIST(ctree)->rows - 1);
+ }
if (prefs_common.open_unread_on_enter) {
summary_unlock(summaryview);
summary_select_node(summaryview, node, TRUE, TRUE);
g_hash_table_destroy(summaryview->folder_table);
summaryview->folder_table = NULL;
}
- summaryview->sort_mode = SORT_BY_NONE;
- summaryview->sort_type = GTK_SORT_ASCENDING;
gtk_clist_clear(clist);
if (summaryview->col_pos[S_COL_SUBJECT] == N_SUMMARY_COLS - 1) {
menu_set_sensitive(ifactory, "/Reply to sender", sens);
menu_set_sensitive(ifactory, "/Reply to all", sens);
menu_set_sensitive(ifactory, "/Forward", TRUE);
- menu_set_sensitive(ifactory, "/Bounce", TRUE);
+ menu_set_sensitive(ifactory, "/Redirect", TRUE);
menu_set_sensitive(ifactory, "/Add sender to address book", sens);
menu_set_sensitive(ifactory, "/Create filter rule", sens);
SummaryColumnType type;
gboolean single_char;
GtkJustification justify;
+ FolderItem *item = summaryview->folder_item;
- static SummarySortType sort_by[N_SUMMARY_COLS] = {
+ static FolderSortKey sort_by[N_SUMMARY_COLS] = {
SORT_BY_MARK,
SORT_BY_UNREAD,
SORT_BY_MIME,
gtk_box_pack_start(GTK_BOX(hbox), label,
FALSE, FALSE, 0);
- if (summaryview->sort_mode == sort_by[type]) {
+ if (item && item->sort_key == sort_by[type]) {
arrow = gtk_arrow_new
- (summaryview->sort_type == GTK_SORT_ASCENDING
+ (item->sort_type == SORT_ASCENDING
? GTK_ARROW_DOWN : GTK_ARROW_UP,
GTK_SHADOW_IN);
if (justify == GTK_JUSTIFY_RIGHT)
}
}
-void summary_sort(SummaryView *summaryview, SummarySortType type)
+void summary_sort(SummaryView *summaryview, FolderSortKey sort_key)
{
GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
GtkCList *clist = GTK_CLIST(summaryview->ctree);
GtkCListCompareFunc cmp_func;
+ FolderItem *item = summaryview->folder_item;
- if (!summaryview->folder_item)
- return;
+ if (!item) return;
- switch (type) {
+ switch (sort_key) {
case SORT_BY_MARK:
cmp_func = (GtkCListCompareFunc)summary_cmp_by_mark;
break;
gtk_clist_set_compare_func(clist, cmp_func);
/* toggle sort type if the same column is selected */
- if (summaryview->sort_mode == type)
- summaryview->sort_type =
- summaryview->sort_type == GTK_SORT_ASCENDING
- ? GTK_SORT_DESCENDING : GTK_SORT_ASCENDING;
+ if (item->sort_key == sort_key)
+ item->sort_type =
+ item->sort_type == SORT_ASCENDING
+ ? SORT_DESCENDING : SORT_ASCENDING;
else
- summaryview->sort_type = GTK_SORT_ASCENDING;
- gtk_clist_set_sort_type(clist, summaryview->sort_type);
- summaryview->sort_mode = type;
+ item->sort_type = SORT_ASCENDING;
+ gtk_clist_set_sort_type(clist, (GtkSortType)item->sort_type);
+ item->sort_key = sort_key;
summary_set_column_titles(summaryview);
gtk_ctree_sort_recursive(ctree, NULL);
gtk_ctree_node_moveto(ctree, summaryview->selected, -1, 0.5, 0);
- prefs_folder_item_set_config(summaryview->folder_item,
- summaryview->sort_type,
- summaryview->sort_mode);
- prefs_folder_item_save_config(summaryview->folder_item);
debug_print(_("done.\n"));
STATUSBAR_POP(summaryview->mainwin);
Xstrdup_a(addr, msginfo->from, return);
extract_address(addr);
- if (addr && 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;
+ 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;
}
}
}
summary_unlock(summaryview);
}
+void summary_expand_threads(SummaryView *summaryview)
+{
+ GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
+ GtkCTreeNode *node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
+
+ gtk_clist_freeze(GTK_CLIST(ctree));
+
+ while (node) {
+ if (GTK_CTREE_ROW(node)->children)
+ gtk_ctree_expand(ctree, node);
+ node = GTK_CTREE_NODE_NEXT(node);
+ }
+
+ gtk_clist_thaw(GTK_CLIST(ctree));
+
+ gtk_ctree_node_moveto(ctree, summaryview->selected, -1, 0.5, 0);
+}
+
+void summary_collapse_threads(SummaryView *summaryview)
+{
+ GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
+ GtkCTreeNode *node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
+
+ gtk_clist_freeze(GTK_CLIST(ctree));
+
+ while (node) {
+ if (GTK_CTREE_ROW(node)->children)
+ gtk_ctree_collapse(ctree, node);
+ node = GTK_CTREE_ROW(node)->sibling;
+ }
+
+ gtk_clist_thaw(GTK_CLIST(ctree));
+
+ gtk_ctree_node_moveto(ctree, summaryview->selected, -1, 0.5, 0);
+}
+
void summary_filter(SummaryView *summaryview)
{
if (!prefs_common.fltlist && !global_processing) {
g_slist_free(msginfo_list);
}
break;
- case COMPOSE_BOUNCE:
- compose_bounce(NULL, msginfo);
+ case COMPOSE_REDIRECT:
+ compose_redirect(NULL, msginfo);
break;
default:
g_warning("summary_reply_cb(): invalid action: %d\n", mode);