#include "sourcewindow.h"
#include "prefs_common.h"
#include "prefs_summary_column.h"
+#include "prefs_summary_open.h"
#include "prefs_filtering.h"
#include "account.h"
#include "compose.h"
static gint summary_toggle_pressed (GtkWidget *eventbox,
GdkEventButton *event,
SummaryView *summaryview);
+#ifdef MAEMO
+static void summary_toggle_multiple_pressed
+ (GtkWidget *widget,
+ SummaryView *summaryview);
+#endif
static gint summary_folder_eventbox_pressed
(GtkWidget *eventbox,
GdkEventButton *event,
GtkWidget *statlabel_msgs;
GtkWidget *hbox_spc;
GtkWidget *toggle_eventbox;
+#ifdef MAEMO
+ GtkWidget *multiple_sel_togbtn;
+#endif
GtkWidget *toggle_arrow;
GtkWidget *popupmenu;
GtkWidget *toggle_search;
/* toggle view button */
toggle_eventbox = gtk_event_box_new();
gtk_widget_show(toggle_eventbox);
+
gtk_box_pack_end(GTK_BOX(hbox), toggle_eventbox, FALSE, FALSE, 4);
+
toggle_arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
gtk_widget_show(toggle_arrow);
gtk_container_add(GTK_CONTAINER(toggle_eventbox), toggle_arrow);
g_signal_connect(G_OBJECT(toggle_eventbox), "button_press_event",
G_CALLBACK(summary_toggle_pressed),
summaryview);
-
+
+#ifdef MAEMO
+ multiple_sel_togbtn = gtk_toggle_button_new();
+ gtk_widget_show(multiple_sel_togbtn);
+ gtk_box_pack_end(GTK_BOX(hbox), multiple_sel_togbtn, FALSE, FALSE, 4);
+ gtk_tooltips_set_tip(GTK_TOOLTIPS(summaryview->tips),
+ multiple_sel_togbtn,
+ _("Toggle multiple selection"), NULL);
+ g_signal_connect(G_OBJECT(multiple_sel_togbtn), "toggled",
+ G_CALLBACK(summary_toggle_multiple_pressed),
+ summaryview);
+#endif
statlabel_msgs = gtk_label_new("");
gtk_widget_show(statlabel_msgs);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
+#ifndef MAEMO
gtk_box_pack_start(GTK_BOX(vbox), scrolledwin, TRUE, TRUE, 0);
+#endif
gtk_widget_set_size_request(vbox,
prefs_common.summaryview_width,
prefs_common.summaryview_height);
quicksearch = quicksearch_new();
gtk_box_pack_start(GTK_BOX(vbox), quicksearch_get_widget(quicksearch), FALSE, FALSE, 0);
+#ifdef MAEMO
+ gtk_box_pack_start(GTK_BOX(vbox), scrolledwin, TRUE, TRUE, 0);
+#endif
quicksearch_set_execute_callback(quicksearch, quicksearch_execute_cb, summaryview);
g_signal_connect (G_OBJECT(toggle_search), "toggled",
summaryview->statlabel_msgs = statlabel_msgs;
summaryview->toggle_eventbox = toggle_eventbox;
summaryview->toggle_arrow = toggle_arrow;
+#ifdef MAEMO
+ summaryview->multiple_sel_togbtn = multiple_sel_togbtn;
+#endif
summaryview->toggle_search = toggle_search;
summaryview->popupmenu = popupmenu;
summaryview->popupfactory = popupfactory;
gtk_widget_modify_font(summaryview->statlabel_folder, font_desc);
gtk_widget_modify_font(summaryview->statlabel_select, font_desc);
gtk_widget_modify_font(summaryview->statlabel_msgs, font_desc);
+ /* ici */
pango_font_description_free(font_desc);
}
gtk_container_add (GTK_CONTAINER(summaryview->toggle_search), pixmap);
gtk_widget_show(pixmap);
summaryview->quick_search_pixmap = pixmap;
+
+#ifdef MAEMO
+ pixmap = stock_pixmap_widget(summaryview->hbox, STOCK_PIXMAP_SELECTION);
+ gtk_container_add(GTK_CONTAINER(summaryview->multiple_sel_togbtn), pixmap);
+ gtk_widget_show(pixmap);
+ summaryview->multiple_sel_image = pixmap;
+#endif
/* Init summaryview prefs */
summaryview->sort_key = SORT_BY_NONE;
gtk_ctree_node_moveto(ctree, node, 0, 0.5, 0);
}
} else {
- switch (prefs_common.select_on_entry) {
- case SELECTONENTRY_MNU:
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_MARKED, FALSE);
- if (node == NULL)
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_NEW, FALSE);
- if (node == NULL)
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_UNREAD, FALSE);
+ /* backward compat */
+ int i = 0;
+ gboolean set = FALSE, stop = FALSE;
+ for (i = 0; i < 6; i++) {
+ EntryAction act = prefs_common.summary_select_prio[i];
+
+ if (act != ACTION_UNSET) {
+ set = TRUE;
break;
- case SELECTONENTRY_MUN:
+ }
+ }
+ if (!set)
+ prefs_summary_open_set_defaults();
+
+ for (i = 0; i < 6 && node == NULL; i++) {
+ EntryAction act = prefs_common.summary_select_prio[i];
+
+ switch(act) {
+ case ACTION_MARKED:
node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_MARKED, FALSE);
- if (node == NULL)
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_UNREAD, FALSE);
- if (node == NULL)
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_NEW, FALSE);
+ MSG_MARKED, FALSE);
break;
- case SELECTONENTRY_NMU:
+ case ACTION_NEW:
node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_NEW, FALSE);
- if (node == NULL)
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_MARKED, FALSE);
- if (node == NULL)
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_UNREAD, FALSE);
+ MSG_NEW, FALSE);
break;
- case SELECTONENTRY_NUM:
+ case ACTION_UNREAD:
node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_NEW, FALSE);
- if (node == NULL)
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_UNREAD, FALSE);
- if (node == NULL)
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_MARKED, FALSE);
+ MSG_UNREAD, FALSE);
break;
- case SELECTONENTRY_UNM:
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_UNREAD, FALSE);
- if (node == NULL)
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_NEW, FALSE);
- if (node == NULL)
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_MARKED, FALSE);
+ case ACTION_LAST_OPENED:
+ if (summaryview->folder_item) {
+ node = summary_find_msg_by_msgnum(summaryview,
+ summaryview->folder_item->last_seen);
+ }
break;
- case SELECTONENTRY_UMN:
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_UNREAD, FALSE);
- if (node == NULL)
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_MARKED, FALSE);
- if (node == NULL)
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_NEW, FALSE);
+ case ACTION_LAST_LIST:
+ if (GTK_CLIST(ctree)->row_list != NULL) {
+ node = gtk_ctree_node_nth
+ (ctree,
+ item->sort_type == SORT_DESCENDING
+ ? 0 : GTK_CLIST(ctree)->rows - 1);
+ }
break;
- default:
+ case ACTION_NOTHING:
+ case ACTION_UNSET:
node = NULL;
- }
-
- if (node == NULL && GTK_CLIST(ctree)->row_list != NULL) {
- node = gtk_ctree_node_nth
- (ctree,
- item->sort_type == SORT_DESCENDING
- ? 0 : GTK_CLIST(ctree)->rows - 1);
+ stop = TRUE;
+ break;
+ }
+
+ if (stop || node)
+ break;
}
+
summary_unlock(summaryview);
- summary_select_node(summaryview, node,
+ if (node)
+ summary_select_node(summaryview, node,
prefs_common.always_show_msg,
TRUE);
summary_lock(summaryview);
FOLDER_SHOWS_TO_HDR(item) &&
!summaryview->col_state[summaryview->col_pos[S_COL_TO]].visible)
type = S_COL_TO;
- if (prefs_common.trans_hdr)
+ if(type == S_COL_NUMBER)
title = gettext(col_label[type]);
else
- title = col_label[type];
+ title = prefs_common_translated_header_name(col_label[type]);
break;
default:
title = gettext(col_label[type]);
void summary_select_thread(SummaryView *summaryview, gboolean delete_thread)
{
GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
- GtkCTreeNode *node = summaryview->selected;
+ GtkCTreeNode *node = NULL;
gboolean froze = FALSE;
+ GList *cur = NULL;
+ GList *copy = NULL;
+ if (!GTK_CLIST(summaryview->ctree)->selection)
+ return;
- 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,
- messageview_is_visible(summaryview->messageview),
- FALSE);
+ copy = g_list_copy(GTK_CLIST(summaryview->ctree)->selection);
+ for (cur = copy; cur != NULL && cur->data != NULL;
+ cur = cur->next) {
+ node = GTK_CTREE_NODE(cur->data);
+ if (!node)
+ continue;
+ while (GTK_CTREE_ROW(node)->parent != NULL)
+ node = GTK_CTREE_ROW(node)->parent;
- gtk_ctree_select_recursive(ctree, node);
+ gtk_ctree_select_recursive(ctree, node);
+ }
+ g_list_free(copy);
END_LONG_OPERATION(summaryview);
if (delete_thread) {
Xstrdup_a(filename, msginfo->subject, return);
subst_for_filename(filename);
}
- if (g_getenv ("G_BROKEN_FILENAMES") &&
- filename && !g_utf8_validate(filename, -1, NULL)) {
+ if (filename && !g_utf8_validate(filename, -1, NULL)) {
gchar *oldstr = filename;
filename = conv_codeset_strdup(filename,
conv_get_locale_charset_str(),
CS_UTF_8);
if (!filename) {
- g_warning("summary_save_as(): faild to convert character set.");
+ g_warning("summary_save_as(): failed to convert character set.");
filename = g_strdup(oldstr);
}
dest = filesel_select_file_save(_("Save as"), filename);
g_signal_connect(G_OBJECT(ctree), "button_press_event",
G_CALLBACK(summary_button_pressed),
summaryview);
+#ifndef MAEMO
g_signal_connect(G_OBJECT(ctree), "popup-menu",
G_CALLBACK(summary_popup_menu), summaryview);
+#else
+ gtk_widget_tap_and_hold_setup(GTK_WIDGET(ctree), NULL, NULL,
+ GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
+ g_signal_connect(G_OBJECT(ctree), "tap-and-hold",
+ G_CALLBACK(summary_popup_menu), summaryview);
+#endif
g_signal_connect(G_OBJECT(ctree), "button_release_event",
G_CALLBACK(summary_button_released),
summaryview);
summary_toggle_view(summaryview);
return TRUE;
}
-
+#ifdef MAEMO
+static void summary_toggle_multiple_pressed(GtkWidget *widget,
+ SummaryView *summaryview)
+{
+ GTK_SCTREE(summaryview->ctree)->force_additive_sel =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+}
+#endif
static gboolean summary_button_pressed(GtkWidget *ctree, GdkEventButton *event,
SummaryView *summaryview)
{
case GDK_t:
case GDK_l:
case GDK_c:
+ case GDK_a:
if ((event->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) == 0) {
g_signal_stop_emission_by_name(G_OBJECT(widget),
"key_press_event");
GDK_ACTION_MOVE|GDK_ACTION_COPY|GDK_ACTION_DEFAULT, button, event);
gtk_drag_set_icon_default(context);
if (prefs_common.layout_mode == SMALL_LAYOUT) {
- gint min, max, mid;
GtkWidget *paned = GTK_WIDGET_PTR(summaryview)->parent;
if (paned && GTK_IS_PANED(paned)) {
mainwindow_reset_paned(GTK_PANED(paned));
gtk_widget_show(pixmap);
summaryview->quick_search_pixmap = pixmap;
+#ifdef MAEMO
+ pixmap = stock_pixmap_widget(summaryview->hbox, STOCK_PIXMAP_SELECTION);
+ gtk_container_remove (GTK_CONTAINER(summaryview->multiple_sel_togbtn),
+ summaryview->multiple_sel_image);
+ gtk_container_add(GTK_CONTAINER(summaryview->multiple_sel_togbtn), pixmap);
+ gtk_widget_show(pixmap);
+ summaryview->multiple_sel_togbtn = pixmap;
+#endif
+
folderview_unselect(summaryview->folderview);
folderview_select(summaryview->folderview, summaryview->folder_item);
summary_set_column_titles(summaryview);
return FALSE;
}
-static void summary_update_unread(SummaryView *summaryview, FolderItem *removed_item)
+void summary_update_unread(SummaryView *summaryview, FolderItem *removed_item)
{
guint new, unread, unreadmarked, marked, total;
static gboolean tips_initialized = FALSE;