aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2006-01-23 10:08:45 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2006-01-23 10:08:45 +0000
commit105eb9bfb18a3324ebbda41cf2bd8b0695748f91 (patch)
treedacebe6c35330a911378ab5b34fc7f4c8335187a /src
parent77288037d78abd6b3a9be9cdb1e831a1d16de49b (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.c8
-rw-r--r--src/prefs_account_dialog.c14
-rw-r--r--src/prefs_account_dialog.h2
3 files changed, 20 insertions, 4 deletions
diff --git a/src/main.c b/src/main.c
index c27a4005..b558f8fb 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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