#include "progressindicator.h"
#include "localfolder.h"
#include "filtering.h"
+#include "folderutils.h"
+#include "foldersort.h"
#define AC_LABEL_WIDTH 240
GtkWidget *child,
gpointer data);
-static void ac_label_button_pressed (GtkWidget *widget,
+static gboolean ac_label_button_pressed (GtkWidget *widget,
GdkEventButton *event,
gpointer data);
static void ac_menu_popup_closed (GtkMenuShell *menu_shell,
GtkAllocation *allocation,
gpointer data);
-static void new_folder_cb (MainWindow *mainwin,
- guint action,
- GtkWidget *widget);
-static void rename_folder_cb (MainWindow *mainwin,
- guint action,
- GtkWidget *widget);
-static void delete_folder_cb (MainWindow *mainwin,
- guint action,
- GtkWidget *widget);
static void update_folderview_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
static void add_mailbox_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
+static void foldersort_cb (MainWindow *mainwin,
+ guint action,
+ GtkWidget *widget);
static void import_mbox_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
guint action,
GtkWidget *widget);
-static void reedit_cb (MainWindow *mainwin,
- guint action,
- GtkWidget *widget);
-
static void move_to_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
static void mark_all_read_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
+
+static void reedit_cb (MainWindow *mainwin,
+ guint action,
+ GtkWidget *widget);
+
static void add_address_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
static void delete_duplicated_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
+static void delete_duplicated_all_cb (MainWindow *mainwin,
+ guint action,
+ GtkWidget *widget);
static void filter_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
static GtkItemFactoryEntry mainwin_entries[] =
{
{N_("/_File"), NULL, NULL, 0, "<Branch>"},
- {N_("/_File/_Folder"), NULL, NULL, 0, "<Branch>"},
- {N_("/_File/_Folder/Create _new folder..."),
- NULL, new_folder_cb, 0, NULL},
- {N_("/_File/_Folder/_Rename folder..."),NULL, rename_folder_cb, 0, NULL},
- {N_("/_File/_Folder/_Delete folder"), NULL, delete_folder_cb, 0, NULL},
- {N_("/_File/_Folder/---"), NULL, NULL, 0, "<Separator>"},
- {N_("/_File/_Folder/_Check for new messages in all folders"),
- NULL, update_folderview_cb, 0, NULL},
{N_("/_File/_Add mailbox"), NULL, NULL, 0, "<Branch>"},
{N_("/_File/_Add mailbox/MH..."), NULL, add_mailbox_cb, 0, NULL},
+ {N_("/_File/Change folder order"), NULL, foldersort_cb, 0, NULL},
{N_("/_File/_Import mbox file..."), NULL, import_mbox_cb, 0, NULL},
{N_("/_File/_Export to mbox file..."), NULL, export_mbox_cb, 0, NULL},
{N_("/_File/Empty _trash"), "<shift>D", empty_trash_cb, 0, NULL},
CODESET_ACTION(C_ISO_8859_5)},
{N_("/_View/_Code set/Cyrillic (KOI8-_R)"),
CODESET_ACTION(C_KOI8_R)},
+ {N_("/_View/_Code set/Cyrillic (KOI8-U)"),
+ CODESET_ACTION(C_KOI8_U)},
{N_("/_View/_Code set/Cyrillic (Windows-1251)"),
CODESET_ACTION(C_WINDOWS_1251)},
CODESET_SEPARATOR,
{N_("/_Message/_Forward"), "<control><alt>F", main_window_reply_cb, COMPOSE_FORWARD, NULL},
{N_("/_Message/Redirect"), NULL, main_window_reply_cb, COMPOSE_REDIRECT, NULL},
{N_("/_Message/---"), NULL, NULL, 0, "<Separator>"},
- {N_("/_Message/Re-_edit"), NULL, reedit_cb, 0, NULL},
- {N_("/_Message/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_Message/M_ove..."), "<control>O", move_to_cb, 0, NULL},
{N_("/_Message/_Copy..."), "<shift><control>O", copy_to_cb, 0, NULL},
{N_("/_Message/_Delete"), "<control>D", delete_cb, 0, NULL},
{N_("/_Message/_Mark/Mark as rea_d"),
NULL, mark_as_read_cb, 0, NULL},
{N_("/_Message/_Mark/Mark all _read"), NULL, mark_all_read_cb, 0, NULL},
+ {N_("/_Message/---"), NULL, NULL, 0, "<Separator>"},
+ {N_("/_Message/Re-_edit"), NULL, reedit_cb, 0, NULL},
{N_("/_Tools"), NULL, NULL, 0, "<Branch>"},
{N_("/_Tools/_Address book..."), "<shift><control>A", addressbook_open_cb, 0, NULL},
{N_("/_Tools/_Harvest addresses/from _Messages..."),
NULL, addr_harvest_msg_cb, 0, NULL},
{N_("/_Tools/---"), NULL, NULL, 0, "<Separator>"},
- {N_("/_Tools/_Filter messages"), NULL, filter_cb, 0, NULL},
+ {N_("/_Tools/_Filter all messages in folder"),
+ NULL, filter_cb, 0, NULL},
+ {N_("/_Tools/Filter _selected messages"),
+ NULL, filter_cb, 1, NULL},
{N_("/_Tools/_Create filter rule"), NULL, NULL, 0, "<Branch>"},
{N_("/_Tools/_Create filter rule/_Automatically"),
NULL, create_filter_cb, FILTER_BY_AUTO, NULL},
{N_("/_Tools/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_Tools/Actio_ns"), NULL, NULL, 0, "<Branch>"},
{N_("/_Tools/---"), NULL, NULL, 0, "<Separator>"},
+ {N_("/_Tools/_Check for new messages in all folders"),
+ NULL, update_folderview_cb, 0, NULL},
{N_("/_Tools/Delete du_plicated messages"),
+ NULL, NULL, 0, "<Branch>"},
+ {N_("/_Tools/Delete du_plicated messages/In selected folder"),
NULL, delete_duplicated_cb, 0, NULL},
+ {N_("/_Tools/Delete du_plicated messages/In all folders"),
+ NULL, delete_duplicated_all_cb, 0, NULL},
{N_("/_Tools/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_Tools/E_xecute"), "X", execute_summary_cb, 0, NULL},
#ifdef USE_OPENSSL
{N_("/_Help/_About"), NULL, about_show, 0, NULL}
};
+static gboolean main_window_accel_activate (GtkAccelGroup *accelgroup,
+ GObject *arg1,
+ guint value,
+ GdkModifierType mod,
+ gpointer user_data)
+{
+ MainWindow *mainwin = (MainWindow *)user_data;
+
+ if (mainwin->summaryview &&
+ mainwin->summaryview->quicksearch &&
+ quicksearch_has_focus(mainwin->summaryview->quicksearch) &&
+ (mod == 0 || mod == GDK_SHIFT_MASK)) {
+ quicksearch_pass_key(mainwin->summaryview->quicksearch, value, mod);
+ return TRUE;
+ }
+ return FALSE;
+}
+
MainWindow *main_window_create(SeparateType type)
{
MainWindow *mainwin;
GtkWidget *menuitem;
gint i;
guint n_menu_entries;
+ gboolean hide_messageview = FALSE;
static GdkGeometry geometry;
/* main window */
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), PROG_VERSION);
- gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
- gtk_window_set_wmclass(GTK_WINDOW(window), "main_window", "Sylpheed");
+ gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
if (!geometry.min_height) {
geometry.min_width = 320;
handlebox = gtk_handle_box_new();
gtk_widget_show(handlebox);
gtk_box_pack_start(GTK_BOX(vbox), handlebox, FALSE, FALSE, 0);
- gtk_signal_connect(GTK_OBJECT(handlebox), "child_attached",
- GTK_SIGNAL_FUNC(toolbar_child_attached), mainwin);
- gtk_signal_connect(GTK_OBJECT(handlebox), "child_detached",
- GTK_SIGNAL_FUNC(toolbar_child_detached), mainwin);
+ g_signal_connect(G_OBJECT(handlebox), "child_attached",
+ G_CALLBACK(toolbar_child_attached), mainwin);
+ g_signal_connect(G_OBJECT(handlebox), "child_detached",
+ G_CALLBACK(toolbar_child_detached), mainwin);
/* link window to mainwin->window to avoid gdk warnings */
mainwin->window = window;
ac_button, _("Select account"), NULL);
gtk_button_set_relief(GTK_BUTTON(ac_button), GTK_RELIEF_NONE);
GTK_WIDGET_UNSET_FLAGS(ac_button, GTK_CAN_FOCUS);
- gtk_widget_set_size_request(ac_button, -1, 1);
+ gtk_widget_set_size_request(ac_button, -1, 0);
gtk_box_pack_end(GTK_BOX(hbox_stat), ac_button, FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(ac_button), "button_press_event",
G_CALLBACK(ac_label_button_pressed), mainwin);
summaryview->messageview = messageview;
summaryview->window = window;
- mainwin->vbox = vbox;
- mainwin->menubar = menubar;
- mainwin->menu_factory = ifactory;
- mainwin->handlebox = handlebox;
- mainwin->vbox_body = vbox_body;
- mainwin->hbox_stat = hbox_stat;
- mainwin->statusbar = statusbar;
- mainwin->progressbar = progressbar;
- mainwin->statuslabel = statuslabel;
- mainwin->ac_button = ac_button;
- mainwin->ac_label = ac_label;
-
- mainwin->online_switch = online_switch;
+ messageview->statusbar = statusbar;
+ mainwin->vbox = vbox;
+ mainwin->menubar = menubar;
+ mainwin->menu_factory = ifactory;
+ mainwin->handlebox = handlebox;
+ mainwin->vbox_body = vbox_body;
+ mainwin->hbox_stat = hbox_stat;
+ mainwin->statusbar = statusbar;
+ mainwin->progressbar = progressbar;
+ mainwin->statuslabel = statuslabel;
+ mainwin->online_switch = online_switch;
+ mainwin->online_pixmap = online_pixmap;
+ mainwin->offline_pixmap = offline_pixmap;
+ mainwin->ac_button = ac_button;
+ mainwin->ac_label = ac_label;
mainwin->offline_switch = offline_switch;
- mainwin->online_pixmap = online_pixmap;
- mainwin->offline_pixmap = offline_pixmap;
/* set context IDs for status bar */
mainwin->mainwin_cid = gtk_statusbar_get_context_id
mainwin->messageview_cid = gtk_statusbar_get_context_id
(GTK_STATUSBAR(statusbar), "Message View");
+ messageview->statusbar_cid = mainwin->messageview_cid;
+
/* allocate colors for summary view and folder view */
summaryview->color_marked.red = summaryview->color_marked.green = 0;
summaryview->color_marked.blue = (guint16)65535;
debug_print("done.\n");
messageview->visible = prefs_common.msgview_visible;
-
+ hide_messageview = !messageview->visible;
+
main_window_set_widgets(mainwin, type);
g_signal_connect(G_OBJECT(window), "size_allocate",
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem),
prefs_common.show_statusbar);
- gtk_widget_hide(GTK_WIDGET(mainwin->summaryview->hbox_search));
-
- if (prefs_common.show_searchbar) {
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mainwin->summaryview->toggle_search), TRUE);
- if (prefs_common.summary_quicksearch_type != S_SEARCH_EXTENDED)
- gtk_widget_hide(summaryview->search_description);
- }
-
/* set account selection menu */
ac_menu = gtk_item_factory_get_widget
(ifactory, "/Configuration/Change current account");
main_window_update_actions_menu(mainwin);
/* attach accel groups to main window */
-#define ADD_MENU_ACCEL_GROUP_TO_WINDOW(menu,win) \
- gtk_window_add_accel_group \
- (GTK_WINDOW(win), \
- gtk_item_factory_from_widget(menu)->accel_group)
+#define ADD_MENU_ACCEL_GROUP_TO_WINDOW(menu,win) \
+ gtk_window_add_accel_group \
+ (GTK_WINDOW(win), \
+ gtk_item_factory_from_widget(menu)->accel_group); \
+ g_signal_connect(G_OBJECT(gtk_item_factory_from_widget(menu)->accel_group), \
+ "accel_activate", \
+ G_CALLBACK(main_window_accel_activate), mainwin);
+
- ADD_MENU_ACCEL_GROUP_TO_WINDOW(summaryview->popupmenu,mainwin->window);
+ ADD_MENU_ACCEL_GROUP_TO_WINDOW(summaryview->popupmenu, mainwin->window);
/* connect the accelerators for equivalent
menu items in different menus */
if (prefs_common.work_offline)
online_switch_clicked (GTK_BUTTON(online_switch), mainwin);
+ if (mainwin->type == SEPARATE_NONE && hide_messageview)
+ main_window_toggle_message_view(mainwin);
+
return mainwin;
}
? ac_prefs->account_name : _("Untitled"));
gtk_widget_show(menuitem);
gtk_menu_append(GTK_MENU(mainwin->ac_menu), menuitem);
- gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
- GTK_SIGNAL_FUNC(account_selector_menu_cb),
- ac_prefs);
+ g_signal_connect(G_OBJECT(menuitem), "activate",
+ G_CALLBACK(account_selector_menu_cb),
+ ac_prefs);
}
}
: _("Untitled"));
gtk_widget_show(menuitem);
gtk_menu_append(GTK_MENU(menu), menuitem);
- gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
- GTK_SIGNAL_FUNC(account_receive_menu_cb),
- ac_prefs);
+ g_signal_connect(G_OBJECT(menuitem), "activate",
+ G_CALLBACK(account_receive_menu_cb),
+ ac_prefs);
}
}
prefs_common.msgview_height = allocation->height;
}
- debug_print("summaryview size: %d x %d\n",
+/* debug_print("summaryview size: %d x %d\n",
prefs_common.summaryview_width,
prefs_common.summaryview_height);
debug_print("folderview size: %d x %d\n",
prefs_common.folderview_height);
debug_print("messageview size: %d x %d\n",
prefs_common.msgview_width,
- prefs_common.msgview_height);
+ prefs_common.msgview_height); */
}
void main_window_get_position(MainWindow *mainwin)
void main_window_progress_on(MainWindow *mainwin)
{
- gtk_progress_set_show_text(GTK_PROGRESS(mainwin->progressbar), TRUE);
- gtk_progress_set_format_string(GTK_PROGRESS(mainwin->progressbar), "");
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(mainwin->progressbar), "");
}
void main_window_progress_off(MainWindow *mainwin)
{
- gtk_progress_set_show_text(GTK_PROGRESS(mainwin->progressbar), FALSE);
- gtk_progress_bar_update(GTK_PROGRESS_BAR(mainwin->progressbar), 0.0);
- gtk_progress_set_format_string(GTK_PROGRESS(mainwin->progressbar), "");
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(mainwin->progressbar), 0.0);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(mainwin->progressbar), "");
}
void main_window_progress_set(MainWindow *mainwin, gint cur, gint total)
gchar buf[32];
g_snprintf(buf, sizeof(buf), "%d / %d", cur, total);
- gtk_progress_set_format_string(GTK_PROGRESS(mainwin->progressbar), buf);
- gtk_progress_bar_update(GTK_PROGRESS_BAR(mainwin->progressbar),
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(mainwin->progressbar), buf);
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(mainwin->progressbar),
(cur == 0 && total == 0) ? 0 :
(gfloat)cur / (gfloat)total);
}
gchar *const entry;
SensitiveCond cond;
} entry[] = {
- {"/File/Folder" , M_UNLOCKED},
{"/File/Add mailbox" , M_UNLOCKED},
{"/File/Add mailbox/MH..." , M_UNLOCKED},
+ {"/File/Change folder order" , M_UNLOCKED},
{"/File/Export to mbox file..." , M_UNLOCKED},
{"/File/Empty trash" , M_UNLOCKED},
{"/File/Work offline" , M_UNLOCKED},
{"/Message/Follow-up and reply to", M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST|M_NEWS},
{"/Message/Forward" , M_HAVE_ACCOUNT|M_TARGET_EXIST},
{"/Message/Redirect" , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
- {"/Message/Re-edit" , M_HAVE_ACCOUNT|M_ALLOW_REEDIT},
{"/Message/Move..." , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED},
{"/Message/Copy..." , M_TARGET_EXIST|M_EXEC|M_UNLOCKED},
{"/Message/Delete" , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED|M_NOT_NEWS},
{"/Message/Cancel a news message" , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED|M_NEWS},
{"/Message/Mark" , M_TARGET_EXIST},
+ {"/Message/Re-edit" , M_HAVE_ACCOUNT|M_ALLOW_REEDIT},
- {"/Tools/Add sender to address book", M_SINGLE_TARGET_EXIST},
- {"/Tools/Harvest addresses" , M_UNLOCKED},
- {"/Tools/Filter messages" , M_MSG_EXIST|M_EXEC|M_UNLOCKED},
- {"/Tools/Create filter rule" , M_SINGLE_TARGET_EXIST|M_UNLOCKED},
- {"/Tools/Actions" , M_TARGET_EXIST|M_UNLOCKED},
- {"/Tools/Execute" , M_DELAY_EXEC},
- {"/Tools/Delete duplicated messages", M_MSG_EXIST|M_ALLOW_DELETE|M_UNLOCKED},
+ {"/Tools/Add sender to address book" , M_SINGLE_TARGET_EXIST},
+ {"/Tools/Harvest addresses" , M_UNLOCKED},
+ {"/Tools/Filter all messages in folder", M_MSG_EXIST|M_EXEC|M_UNLOCKED},
+ {"/Tools/Filter selected messages" , M_TARGET_EXIST|M_EXEC|M_UNLOCKED},
+ {"/Tools/Create filter rule" , M_SINGLE_TARGET_EXIST|M_UNLOCKED},
+ {"/Tools/Actions" , M_TARGET_EXIST|M_UNLOCKED},
+ {"/Tools/Execute" , M_DELAY_EXEC},
+ {"/Tools/Delete duplicated messages/In selected folder" , M_MSG_EXIST|M_ALLOW_DELETE|M_UNLOCKED},
{"/Configuration", M_UNLOCKED},
folderwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(folderwin),
_("Sylpheed - Folder View"));
- gtk_window_set_wmclass(GTK_WINDOW(folderwin),
- "folder_view", "Sylpheed");
- gtk_window_set_policy(GTK_WINDOW(folderwin),
- TRUE, TRUE, FALSE);
+ gtk_window_set_resizable(GTK_WINDOW(folderwin), TRUE);
gtk_window_move(GTK_WINDOW(folderwin), prefs_common.folderwin_x,
prefs_common.folderwin_y);
gtk_container_set_border_width(GTK_CONTAINER(folderwin),
messagewin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(messagewin),
_("Sylpheed - Message View"));
- gtk_window_set_wmclass(GTK_WINDOW(messagewin),
- "message_view", "Sylpheed");
- gtk_window_set_policy(GTK_WINDOW(messagewin),
- TRUE, TRUE, FALSE);
- gtk_window_move(GTK_WINDOW(messagewin), prefs_common.main_msgwin_x,
+ gtk_window_set_resizable(GTK_WINDOW(messagewin), TRUE);
+ gtk_window_move(GTK_WINDOW(messagewin),
+ prefs_common.main_msgwin_x,
prefs_common.main_msgwin_y);
+ gtk_widget_set_size_request(messagewin,
+ prefs_common.msgwin_width,
+ prefs_common.msgwin_height);
gtk_container_set_border_width(GTK_CONTAINER(messagewin),
BORDER_WIDTH);
g_signal_connect(G_OBJECT(messagewin), "delete_event",
else
gtk_widget_hide(mainwin->messageview->mimeview->ctree_mainbox);
- /* rehide quick search if necessary */
- if (!prefs_common.show_searchbar)
- gtk_widget_hide(mainwin->summaryview->hbox_search);
-
mainwin->type = type;
gtk_widget_set_usize(child, -1, -1);
}
-static void ac_label_button_pressed(GtkWidget *widget, GdkEventButton *event,
+static gboolean ac_label_button_pressed(GtkWidget *widget, GdkEventButton *event,
gpointer data)
{
MainWindow *mainwin = (MainWindow *)data;
folderview_check_new_all();
}
-static void new_folder_cb(MainWindow *mainwin, guint action,
- GtkWidget *widget)
+static void foldersort_cb(MainWindow *mainwin, guint action,
+ GtkWidget *widget)
{
- folderview_new_folder(mainwin->folderview);
-}
-
-static void rename_folder_cb(MainWindow *mainwin, guint action,
- GtkWidget *widget)
-{
- folderview_rename_folder(mainwin->folderview);
-}
-
-static void delete_folder_cb(MainWindow *mainwin, guint action,
- GtkWidget *widget)
-{
- folderview_delete_folder(mainwin->folderview);
+ foldersort_open();
}
static void import_mbox_cb(MainWindow *mainwin, guint action,
GTK_CHECK_MENU_ITEM(widget)->active);
}
-static void reedit_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
-{
- summary_reedit(mainwin->summaryview);
-}
-
static void mark_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
{
summary_mark(mainwin->summaryview);
summary_mark_all_read(mainwin->summaryview);
}
+static void reedit_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
+{
+ summary_reedit(mainwin->summaryview);
+}
+
static void add_address_cb(MainWindow *mainwin, guint action,
GtkWidget *widget)
{
GtkWidget *widget)
{
if (!mainwin->summaryview->folder_item
- || gtk_object_get_data(GTK_OBJECT(widget), "dont_toggle"))
+ || g_object_get_data(G_OBJECT(widget), "dont_toggle"))
return;
summary_toggle_show_read_messages(mainwin->summaryview);
}
summary_sort(mainwin->summaryview, (FolderSortKey)action,
GTK_CHECK_MENU_ITEM(menuitem)->active
? SORT_ASCENDING : SORT_DESCENDING);
+ item->sort_key = action;
}
}
static void delete_duplicated_cb(MainWindow *mainwin, guint action,
GtkWidget *widget)
{
- summary_delete_duplicated(mainwin->summaryview);
+ FolderItem *item;
+
+ item = folderview_get_selected(mainwin->folderview);
+ if (item) {
+ main_window_cursor_wait(mainwin);
+ STATUSBAR_PUSH(mainwin, _("Deleting duplicated messages..."));
+
+ folderutils_delete_duplicates(item, prefs_common.immediate_exec ?
+ DELETE_DUPLICATES_REMOVE : DELETE_DUPLICATES_SETFLAG);
+
+ STATUSBAR_POP(mainwin);
+ main_window_cursor_normal(mainwin);
+ }
+}
+
+struct DelDupsData
+{
+ guint dups;
+ guint folders;
+};
+
+static void deldup_all(FolderItem *item, gpointer _data)
+{
+ struct DelDupsData *data = _data;
+ gint result;
+
+ result = folderutils_delete_duplicates(item, DELETE_DUPLICATES_REMOVE);
+ if (result >= 0) {
+ data->dups += result;
+ data->folders += 1;
+ }
+}
+
+static void delete_duplicated_all_cb(MainWindow *mainwin, guint action,
+ GtkWidget *widget)
+{
+ struct DelDupsData data = {0, 0};
+
+ folder_func_to_all_folders(deldup_all, &data);
+ alertpanel_notice(_("Deleted %d duplicate message(s) in %d folders.\n"),
+ data.dups, data.folders);
}
static void filter_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
{
- summary_filter(mainwin->summaryview);
+ summary_filter(mainwin->summaryview, (gboolean)action);
}
static void execute_summary_cb(MainWindow *mainwin, guint action,
{
MainWindow *mainwin = (MainWindow*) data;
- if (!mainwin || !event) return;
-
+ if (!mainwin || !event)
+ return FALSE;
+
+ if (quicksearch_has_focus(mainwin->summaryview->quicksearch))
+ return FALSE;
+
switch (event->keyval) {
case GDK_Q: /* Quit */
BREAK_ON_MODIFIER_KEY();
app_exit_cb(mainwin, 0, NULL);
- return;
+ return FALSE;
case GDK_space:
if (mainwin->folderview && mainwin->summaryview
&& !mainwin->summaryview->displayed) {
switch (data->cmd) {
case PROGRESS_COMMAND_START:
case PROGRESS_COMMAND_STOP:
- gtk_progress_set_percentage(GTK_PROGRESS(mainwin->progressbar), 0.0);
+ gtk_progress_bar_set_fraction
+ (GTK_PROGRESS_BAR(mainwin->progressbar), 0.0);
break;
case PROGRESS_COMMAND_SET_PERCENTAGE:
- gtk_progress_set_percentage(GTK_PROGRESS(mainwin->progressbar), data->value);
+ gtk_progress_bar_set_fraction
+ (GTK_PROGRESS_BAR(mainwin->progressbar), data->value);
break;
}
while (gtk_events_pending()) gtk_main_iteration ();