From bb68f1b39d929a8e2f46e941b5fc57538cec6e0d Mon Sep 17 00:00:00 2001 From: Paul Mangan Date: Tue, 3 Apr 2007 07:08:26 +0000 Subject: [PATCH] 2007-04-03 [paul] 2.8.1cvs84 * src/filtering.c * src/folder.c * src/folder.h * src/prefs_common.c * src/prefs_common.h * src/prefs_other.c Fix sync being done too late Thanks to Colin --- ChangeLog | 11 +++++++++++ PATCHSETS | 1 + configure.ac | 2 +- src/filtering.c | 2 ++ src/folder.c | 22 ++++++++++++++++++---- src/folder.h | 2 +- src/prefs_common.c | 8 +++++++- src/prefs_common.h | 1 + src/prefs_other.c | 11 ++++++++++- 9 files changed, 52 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 996db1a0c..9bc4af388 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2007-04-03 [paul] 2.8.1cvs84 + + * src/filtering.c + * src/folder.c + * src/folder.h + * src/prefs_common.c + * src/prefs_common.h + * src/prefs_other.c + Fix sync being done too late + Thanks to Colin + 2007-04-02 [colin] 2.8.1cvs83 * src/summaryview.c diff --git a/PATCHSETS b/PATCHSETS index a548ed386..78a0efb09 100644 --- a/PATCHSETS +++ b/PATCHSETS @@ -2500,3 +2500,4 @@ ( cvs diff -u -r 1.1.2.16 -r 1.1.2.17 src/image_viewer.c; cvs diff -u -r 1.94.2.130 -r 1.94.2.131 src/messageview.c; ) > 2.8.1cvs81.patchset ( cvs diff -u -r 1.1.2.22 -r 1.1.2.23 src/plugins/bogofilter/bogofilter_gtk.c; ) > 2.8.1cvs82.patchset ( cvs diff -u -r 1.395.2.294 -r 1.395.2.295 src/summaryview.c; cvs diff -u -r 1.1.2.28 -r 1.1.2.29 src/plugins/bogofilter/bogofilter.c; cvs diff -u -r 1.18.2.50 -r 1.18.2.51 src/plugins/spamassassin/spamassassin.c; ) > 2.8.1cvs83.patchset +( cvs diff -u -r 1.60.2.30 -r 1.60.2.31 src/filtering.c; cvs diff -u -r 1.213.2.138 -r 1.213.2.139 src/folder.c; cvs diff -u -r 1.87.2.39 -r 1.87.2.40 src/folder.h; cvs diff -u -r 1.204.2.129 -r 1.204.2.130 src/prefs_common.c; cvs diff -u -r 1.103.2.79 -r 1.103.2.80 src/prefs_common.h; cvs diff -u -r 1.1.2.22 -r 1.1.2.23 src/prefs_other.c; ) > 2.8.1cvs84.patchset diff --git a/configure.ac b/configure.ac index 4daf2e72b..61a006377 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=8 MICRO_VERSION=1 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=83 +EXTRA_VERSION=84 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/filtering.c b/src/filtering.c index c75d43d17..5dc72a7a4 100644 --- a/src/filtering.c +++ b/src/filtering.c @@ -239,6 +239,8 @@ void filtering_move_and_copy_msgs(GSList *msgs) batch); } /* we don't reference the msginfos, because caller will do */ + if (prefs_common.real_time_sync) + folder_item_synchronise(last_item); g_slist_free(batch); batch = NULL; } diff --git a/src/folder.c b/src/folder.c index 0b5278ec7..47d87d8cc 100644 --- a/src/folder.c +++ b/src/folder.c @@ -100,7 +100,6 @@ static GHashTable *folder_persist_prefs_new (Folder *folder); static void folder_persist_prefs_free (GHashTable *pptable); static void folder_item_restore_persist_prefs (FolderItem *item, GHashTable *pptable); - void folder_system_init(void) { folder_register_class(mh_get_class()); @@ -2054,7 +2053,12 @@ gint folder_item_scan_full(FolderItem *item, gboolean filtering) } g_slist_free(unfiltered); } - } + if (prefs_common.real_time_sync) + folder_item_synchronise(item); + } else { + if (prefs_common.real_time_sync) + folder_item_synchronise(item); + } g_slist_free(newmsg_list); @@ -3974,12 +3978,22 @@ void folder_item_update_thaw(void) } } +void folder_item_synchronise(FolderItem *item) +{ + if (!item) + return; + if (item->prefs->offlinesync && item->folder->klass->synchronise) { + statusbar_print_all(_("Synchronising %s for offline use...\n"), item->path ? item->path : "(null)"); + item->folder->klass->synchronise(item); + statusbar_pop_all(); + } +} + static void folder_item_synchronise_func(FolderItem *item, gpointer data) { Folder *folder = (Folder *)data; if (folder == NULL || item->folder == folder) { - if(item->prefs->offlinesync && item->folder->klass->synchronise) - item->folder->klass->synchronise(item); + folder_item_synchronise(item); } } diff --git a/src/folder.h b/src/folder.h index 1b2f8ae7b..773fe02f3 100644 --- a/src/folder.h +++ b/src/folder.h @@ -852,5 +852,5 @@ void folder_item_change_type (FolderItem *item, gboolean folder_get_sort_type (Folder *folder, FolderSortKey *sort_key, FolderSortType *sort_type); - +void folder_item_synchronise (FolderItem *item); #endif /* __FOLDER_H__ */ diff --git a/src/prefs_common.c b/src/prefs_common.c index 0f3f61897..414b47a00 100644 --- a/src/prefs_common.c +++ b/src/prefs_common.c @@ -979,7 +979,13 @@ static PrefParam param[] = { NULL, NULL, NULL}, {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL, NULL, NULL, NULL}, - +#ifndef MAEMO + {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL, + NULL, NULL, NULL}, +#else + {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL, + NULL, NULL, NULL}, +#endif {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL} }; diff --git a/src/prefs_common.h b/src/prefs_common.h index a78615e48..88756174e 100644 --- a/src/prefs_common.h +++ b/src/prefs_common.h @@ -434,6 +434,7 @@ struct _PrefsCommon gint never_send_retrcpt; gint hide_quotes; gboolean unsafe_ssl_certs; + gboolean real_time_sync; }; extern PrefsCommon prefs_common; diff --git a/src/prefs_other.c b/src/prefs_other.c index 2c65f4d5a..af55dacb0 100644 --- a/src/prefs_other.c +++ b/src/prefs_other.c @@ -56,6 +56,7 @@ typedef struct _OtherPage GtkWidget *spinbtn_iotimeout; GtkWidget *checkbtn_gtk_can_change_accels; GtkWidget *checkbtn_askonfilter; + GtkWidget *checkbtn_real_time_sync; } OtherPage; static struct KeybindDialog { @@ -504,7 +505,7 @@ static void prefs_other_create_widget(PrefsPage *_page, GtkWindow *window, GtkWidget *vbox2; GtkWidget *checkbtn_askonclean; GtkWidget *checkbtn_askonfilter; - + GtkWidget *checkbtn_real_time_sync; vbox1 = gtk_vbox_new (FALSE, VSPACING); gtk_widget_show (vbox1); gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER); @@ -584,6 +585,8 @@ static void prefs_other_create_widget(PrefsPage *_page, GtkWindow *window, PACK_CHECK_BUTTON (vbox2, checkbtn_askonfilter, _("Ask about account specific filtering rules when " "filtering manually")); + PACK_CHECK_BUTTON (vbox2, checkbtn_real_time_sync, + _("Synchronise offline folders as soon as possible")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_addaddrbyclick), prefs_common.add_address_by_click); @@ -603,6 +606,8 @@ static void prefs_other_create_widget(PrefsPage *_page, GtkWindow *window, gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_askonfilter), prefs_common.ask_apply_per_account_filtering_rules); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_real_time_sync), + prefs_common.real_time_sync); prefs_other->checkbtn_addaddrbyclick = checkbtn_addaddrbyclick; prefs_other->checkbtn_confonexit = checkbtn_confonexit; @@ -612,6 +617,7 @@ static void prefs_other_create_widget(PrefsPage *_page, GtkWindow *window, prefs_other->spinbtn_iotimeout = spinbtn_iotimeout; prefs_other->checkbtn_gtk_can_change_accels = checkbtn_gtk_can_change_accels; prefs_other->checkbtn_askonfilter = checkbtn_askonfilter; + prefs_other->checkbtn_real_time_sync = checkbtn_real_time_sync; prefs_other->page.widget = vbox1; } @@ -640,6 +646,9 @@ static void prefs_other_save(PrefsPage *_page) prefs_common.ask_apply_per_account_filtering_rules = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(page->checkbtn_askonfilter)); + prefs_common.real_time_sync = + gtk_toggle_button_get_active( + GTK_TOGGLE_BUTTON(page->checkbtn_real_time_sync)); gtk_can_change_accels = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(page->checkbtn_gtk_can_change_accels)); -- 2.25.1