/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2006 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
GtkWidget *ctree;
GtkWidget *hbox;
GtkWidget *hbox_l;
+ GtkWidget *stat_box;
+ GtkWidget *stat_box2;
+ GtkWidget *stat_vbox;
GtkWidget *statlabel_folder;
GtkWidget *statlabel_select;
GtkWidget *statlabel_msgs;
hbox = gtk_hbox_new(FALSE, 0);
gtk_widget_show(hbox);
+ stat_vbox = gtk_vbox_new(FALSE, 0);
+ gtk_widget_show(stat_vbox);
+
+ stat_box = gtk_hbox_new(FALSE, 0);
+ gtk_widget_show(stat_box);
+
+ stat_box2 = gtk_hbox_new(FALSE, 0);
+ gtk_widget_show(stat_box2);
+
search_tip = gtk_tooltips_new();
toggle_search = gtk_toggle_button_new();
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle_search),
gtk_box_pack_start(GTK_BOX(hbox), toggle_search, FALSE, FALSE, 2);
+ gtk_box_pack_start(GTK_BOX(hbox), stat_vbox, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(stat_vbox), stat_box, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(stat_vbox), stat_box2, TRUE, TRUE, 0);
+
hbox_l = gtk_hbox_new(FALSE, 0);
gtk_widget_show(hbox_l);
- gtk_box_pack_start(GTK_BOX(hbox), hbox_l, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(stat_box), hbox_l, TRUE, TRUE, 0);
statlabel_folder = gtk_label_new("");
gtk_widget_show(statlabel_folder);
statlabel_msgs = gtk_label_new("");
gtk_widget_show(statlabel_msgs);
- gtk_box_pack_end(GTK_BOX(hbox), statlabel_msgs, FALSE, FALSE, 4);
+ gtk_box_pack_end(GTK_BOX(stat_box), statlabel_msgs, FALSE, FALSE, 4);
hbox_spc = gtk_hbox_new(FALSE, 0);
gtk_widget_show(hbox_spc);
gtk_container_add(GTK_CONTAINER(scrolledwin), ctree);
/* status label */
+ gtk_widget_show_all(stat_vbox);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
/* quick search */
summaryview->ctree = ctree;
summaryview->hbox = hbox;
summaryview->hbox_l = hbox_l;
+ summaryview->hbox_spc = hbox_spc;
+ summaryview->stat_box = stat_box;
+ summaryview->stat_box2 = stat_box2;
summaryview->statlabel_folder = statlabel_folder;
summaryview->statlabel_select = statlabel_select;
summaryview->statlabel_msgs = statlabel_msgs;
else
quicksearch_hide(quicksearch);
+ if (prefs_common.layout_mode == WIDE_MSGLIST_LAYOUT)
+ gtk_widget_hide(summaryview->toggle_eventbox);
+
return summaryview;
}
+void summary_relayout(SummaryView *summaryview)
+{
+ gtk_widget_realize(summaryview->stat_box);
+
+ gtk_widget_ref(summaryview->hbox_l);
+ gtk_widget_ref(summaryview->statlabel_msgs);
+
+ gtkut_container_remove(GTK_CONTAINER(summaryview->hbox_l->parent), summaryview->hbox_l);
+ gtkut_container_remove(GTK_CONTAINER(summaryview->statlabel_msgs->parent), summaryview->statlabel_msgs);
+
+ switch (prefs_common.layout_mode) {
+ case NORMAL_LAYOUT:
+ case WIDE_LAYOUT:
+ case WIDE_MSGLIST_LAYOUT:
+ gtk_box_pack_start(GTK_BOX(summaryview->stat_box), summaryview->hbox_l, TRUE, TRUE, 0);
+ gtk_box_pack_end(GTK_BOX(summaryview->stat_box), summaryview->statlabel_msgs, FALSE, FALSE, 4);
+ gtk_widget_show_all(summaryview->stat_box);
+ gtk_widget_show_all(summaryview->stat_box2);
+ if (prefs_common.layout_mode == WIDE_MSGLIST_LAYOUT)
+ gtk_widget_hide(summaryview->toggle_eventbox);
+ else
+ gtk_widget_show(summaryview->toggle_eventbox);
+ break;
+ case VERTICAL_LAYOUT:
+ gtk_box_pack_start(GTK_BOX(summaryview->stat_box), summaryview->hbox_l, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(summaryview->stat_box2), summaryview->statlabel_msgs, FALSE, FALSE, 4);
+ gtk_widget_show_all(summaryview->stat_box);
+ gtk_widget_show_all(summaryview->stat_box2);
+ gtk_widget_show(summaryview->toggle_eventbox);
+ break;
+ }
+ gtk_widget_unref(summaryview->hbox_l);
+ gtk_widget_unref(summaryview->statlabel_msgs);
+ quicksearch_relayout(summaryview->quicksearch);
+}
+
static void summary_set_fonts(SummaryView *summaryview)
{
PangoFontDescription *font_desc;
return mlist;
}
-GSList *summary_get_msg_list(SummaryView *summaryview)
-{
- GSList *mlist = NULL;
- GtkCTree *ctree;
- GtkCTreeNode *node;
- MsgInfo *msginfo;
-
- ctree = GTK_CTREE(summaryview->ctree);
-
- for (node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
- node != NULL; node = gtkut_ctree_node_next(ctree, node)) {
- msginfo = GTKUT_CTREE_NODE_GET_ROW_DATA(node);
- mlist = g_slist_prepend(mlist, msginfo);
- }
-
- mlist = g_slist_reverse(mlist);
-
- return mlist;
-}
-
void summary_set_menu_sensitive(SummaryView *summaryview)
{
GtkItemFactory *ifactory = summaryview->popupfactory;
END_TIMING();
}
-gboolean summary_insert_gnode_func(GtkCTree *ctree, guint depth, GNode *gnode,
+static gboolean summary_insert_gnode_func(GtkCTree *ctree, guint depth, GNode *gnode,
GtkCTreeNode *cnode, gpointer data)
{
SummaryView *summaryview = (SummaryView *)data;
/* CLAWS: if separate message view, don't open a new window
* but rather use the current separated message view */
- summary_display_msg_full(summaryview, summaryview->selected,
- prefs_common.sep_msg ? FALSE : TRUE,
- FALSE);
+ summary_display_msg_full(summaryview, summaryview->selected,
+ TRUE, FALSE);
}
void summary_view_source(SummaryView * summaryview)
continue;
if (is_spam) {
summary_msginfo_change_flags(msginfo, MSG_SPAM, 0, MSG_NEW|MSG_UNREAD, 0);
- if (procmsg_spam_get_folder() != summaryview->folder_item) {
- summary_move_row_to(summaryview, row, procmsg_spam_get_folder());
+ if (procmsg_spam_get_folder(msginfo) != summaryview->folder_item) {
+ summary_move_row_to(summaryview, row,
+ procmsg_spam_get_folder(msginfo));
moved = TRUE;
}
} else {
summary_status_show(summaryview);
}
-void summary_select_thread(SummaryView *summaryview)
+void summary_select_thread(SummaryView *summaryview, gboolean delete_thread)
{
GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
GtkCTreeNode *node = summaryview->selected;
+ gboolean froze = FALSE;
if (!node) return;
while (GTK_CTREE_ROW(node)->parent != NULL)
node = GTK_CTREE_ROW(node)->parent;
+ START_LONG_OPERATION(summaryview, FALSE);
if (node != summaryview->selected)
summary_select_node
(summaryview, node,
FALSE);
gtk_ctree_select_recursive(ctree, node);
+ END_LONG_OPERATION(summaryview);
+ if (delete_thread) {
+ if (FOLDER_TYPE(summaryview->folder_item->folder) == F_NEWS)
+ summary_delete(summaryview);
+ else
+ summary_delete_trash(summaryview);
+ }
summary_status_show(summaryview);
}
MsgInfo *msginfo = gtk_ctree_node_get_row_data(
GTK_CTREE(summaryview->ctree),
node);
- messageview_print(msginfo, summaryview->messageview->all_headers);
+ gint sel_start = -1, sel_end = -1, partnum = 0;
+
+ if (node == summaryview->displayed) {
+ partnum = mimeview_get_selected_part_num(summaryview->messageview->mimeview);
+ textview_get_selection_offsets(summaryview->messageview->mimeview->textview,
+ &sel_start, &sel_end);
+ }
+ messageview_print(msginfo, summaryview->messageview->all_headers,
+ sel_start, sel_end, partnum);
}
#endif
}
gtk_ctree_node_moveto(ctree, summaryview->selected, 0, 0.5, 0);
}
-void account_rules_radio_button_toggled_cb(GtkToggleButton *btn, gpointer data)
+static void account_rules_radio_button_toggled_cb(GtkToggleButton *btn, gpointer data)
{
prefs_common.apply_per_account_filtering_rules = GPOINTER_TO_INT(data);
}
-gboolean summary_filter_get_mode(void)
+static gboolean summary_filter_get_mode(void)
/* ask what to do w/ them: skip them, apply them regardless to the account,
use the current account */
{
style->fg[GTK_STATE_NORMAL] = color;
/* get the average of label color and selected fg color
for visibility */
- style->fg[GTK_STATE_SELECTED].red = (color.red + ctree_style->fg[GTK_STATE_SELECTED].red ) / 2;
- style->fg[GTK_STATE_SELECTED].green = (color.green + ctree_style->fg[GTK_STATE_SELECTED].green) / 2;
- style->fg[GTK_STATE_SELECTED].blue = (color.blue + ctree_style->fg[GTK_STATE_SELECTED].blue ) / 2;
+ style->fg[GTK_STATE_SELECTED].red = (color.red + 3*ctree_style->fg[GTK_STATE_SELECTED].red ) / 4;
+ style->fg[GTK_STATE_SELECTED].green = (color.green + 3*ctree_style->fg[GTK_STATE_SELECTED].green) / 4;
+ style->fg[GTK_STATE_SELECTED].blue = (color.blue + 3*ctree_style->fg[GTK_STATE_SELECTED].blue ) / 4;
}
gtk_ctree_node_set_row_style(ctree, node, style);
switch (event->keyval) {
case GDK_space: /* Page down or go to the next */
handled = TRUE;
+ if (event->state & GDK_CONTROL_MASK)
+ event->state &= ~GDK_CONTROL_MASK;
if (event->state & GDK_SHIFT_MASK)
mimeview_scroll_page(messageview->mimeview, TRUE);
else {
}
}
-void summaryview_activate_quicksearch(SummaryView *summaryview)
+void summaryview_activate_quicksearch(SummaryView *summaryview, gboolean show)
{
+ prefs_common.show_searchbar = show;
gtk_toggle_button_set_active(
GTK_TOGGLE_BUTTON(summaryview->toggle_search),
- TRUE);
- quicksearch_show(summaryview->quicksearch);
+ show);
+ if (show) {
+ quicksearch_show(summaryview->quicksearch);
+ } else {
+ quicksearch_hide(summaryview->quicksearch);
+ summary_grab_focus(summaryview);
+ }
}
static void summary_open_row(GtkSCTree *sctree, SummaryView *summaryview)
CMP_FUNC_DEF(summary_cmp_by_mark,
MSG_IS_MARKED(msginfo1->flags) - MSG_IS_MARKED(msginfo2->flags))
CMP_FUNC_DEF(summary_cmp_by_status,
- MSG_IS_UNREAD(msginfo1->flags) - MSG_IS_UNREAD(msginfo2->flags))
+ (-(MSG_IS_SPAM(msginfo1->flags))+(MSG_IS_UNREAD(msginfo1->flags)<<1)+(MSG_IS_NEW(msginfo1->flags)<<2))
+ - (-(MSG_IS_SPAM(msginfo2->flags))+(MSG_IS_UNREAD(msginfo2->flags)<<1)+(MSG_IS_NEW(msginfo2->flags)<<2)) )
CMP_FUNC_DEF(summary_cmp_by_mime,
MSG_IS_WITH_ATTACHMENT(msginfo1->flags) - MSG_IS_WITH_ATTACHMENT(msginfo2->flags))
CMP_FUNC_DEF(summary_cmp_by_label,
summaryview->simplify_subject_preg = summary_compile_simplify_regexp(item->prefs->simplify_subject_regexp);
/* Sorting */
- if (folder_get_sort_type(item->folder, &sort_key, &sort_type)) {
- summaryview->sort_key = sort_key;
- summaryview->sort_type = sort_type;
- } else {
- summaryview->sort_key = item->sort_key;
- summaryview->sort_type = item->sort_type;
- }
+ sort_key = item->sort_key;
+ sort_type = item->sort_type;
+
+ folder_get_sort_type(item->folder, &sort_key, &sort_type);
+
+ summaryview->sort_key = sort_key;
+ summaryview->sort_type = sort_type;
+
/* Threading */
summaryview->threaded = item->threaded;
summaryview->thread_collapsed = item->thread_collapsed;