diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2006-01-23 10:08:45 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2006-01-23 10:08:45 +0000 |
commit | 105eb9bfb18a3324ebbda41cf2bd8b0695748f91 (patch) | |
tree | dacebe6c35330a911378ab5b34fc7f4c8335187a /src | |
parent | 77288037d78abd6b3a9be9cdb1e831a1d16de49b (diff) |
implemented clearing of IMAP4 message caches on exit.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@919 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 8 | ||||
-rw-r--r-- | src/prefs_account_dialog.c | 14 | ||||
-rw-r--r-- | src/prefs_account_dialog.h | 2 |
3 files changed, 20 insertions, 4 deletions
@@ -561,6 +561,7 @@ void app_will_exit(gboolean force) MainWindow *mainwin; gchar *filename; static gboolean on_exit = FALSE; + GList *cur; if (on_exit) return; @@ -597,6 +598,13 @@ void app_will_exit(gboolean force) main_window_empty_trash(mainwin, !force && prefs_common.ask_on_clean); + for (cur = account_get_list(); cur != NULL; cur = cur->next) { + PrefsAccount *ac = (PrefsAccount *)cur->data; + if (ac->protocol == A_IMAP4 && ac->imap_clear_cache_on_exit && + ac->folder) + procmsg_remove_all_cached_messages(FOLDER(ac->folder)); + } + /* save all state before exiting */ folder_write_list(); summary_write_cache(mainwin->summaryview); diff --git a/src/prefs_account_dialog.c b/src/prefs_account_dialog.c index c5c57821..b18ee2f4 100644 --- a/src/prefs_account_dialog.c +++ b/src/prefs_account_dialog.c @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2005 Hiroyuki Yamamoto + * Copyright (C) 1999-2006 Hiroyuki Yamamoto * * 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 @@ -185,6 +185,7 @@ static struct Advanced { GtkWidget *imap_frame; GtkWidget *imapdir_entry; + GtkWidget *clear_cache_chkbtn; GtkWidget *sent_folder_chkbtn; GtkWidget *sent_folder_entry; @@ -367,6 +368,8 @@ static PrefsUIData ui_data[] = { prefs_set_data_from_entry, prefs_set_entry}, {"imap_directory", &advanced.imapdir_entry, prefs_set_data_from_entry, prefs_set_entry}, + {"imap_clear_cache_on_exit", &advanced.clear_cache_chkbtn, + prefs_set_data_from_toggle, prefs_set_toggle}, {"set_sent_folder", &advanced.sent_folder_chkbtn, prefs_set_data_from_toggle, prefs_set_toggle}, {"sent_folder", &advanced.sent_folder_entry, @@ -1587,6 +1590,7 @@ static void prefs_account_advanced_create(void) GtkWidget *imap_frame; GtkWidget *imapdir_label; GtkWidget *imapdir_entry; + GtkWidget *clear_cache_chkbtn; GtkWidget *desc_label; GtkWidget *folder_frame; GtkWidget *vbox3; @@ -1682,6 +1686,9 @@ static void prefs_account_advanced_create(void) (vbox3, desc_label, _("Only the subfolders of this directory will be displayed.")); + PACK_CHECK_BUTTON (vbox3, clear_cache_chkbtn, + _("Clear all message caches on exit")); + /* special folder setting (maybe these options are redundant) */ PACK_FRAME (vbox1, folder_frame, _("Folder")); @@ -1748,8 +1755,9 @@ static void prefs_account_advanced_create(void) advanced.domain_chkbtn = checkbtn_domain; advanced.domain_entry = entry_domain; - advanced.imap_frame = imap_frame; - advanced.imapdir_entry = imapdir_entry; + advanced.imap_frame = imap_frame; + advanced.imapdir_entry = imapdir_entry; + advanced.clear_cache_chkbtn = clear_cache_chkbtn; advanced.sent_folder_chkbtn = sent_folder_chkbtn; advanced.sent_folder_entry = sent_folder_entry; diff --git a/src/prefs_account_dialog.h b/src/prefs_account_dialog.h index 3ec7f6e9..2a95d495 100644 --- a/src/prefs_account_dialog.h +++ b/src/prefs_account_dialog.h @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2005 Hiroyuki Yamamoto + * Copyright (C) 1999-2006 Hiroyuki Yamamoto * * 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 |