[evolution-data-server] Bug #202576 - A way to refresh IMAP folder list
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Bug #202576 - A way to refresh IMAP folder list
- Date: Thu, 22 Nov 2012 15:17:09 +0000 (UTC)
commit 424947ba6fcab9b2c4a52722127798f77eba3f16
Author: Milan Crha <mcrha redhat com>
Date: Thu Nov 22 16:15:55 2012 +0100
Bug #202576 - A way to refresh IMAP folder list
camel/camel-imapx-store.c | 11 +++++++++++
camel/providers/imap/camel-imap-store.c | 12 +++++++++++-
2 files changed, 22 insertions(+), 1 deletions(-)
---
diff --git a/camel/camel-imapx-store.c b/camel/camel-imapx-store.c
index d5d67f6..792e61c 100644
--- a/camel/camel-imapx-store.c
+++ b/camel/camel-imapx-store.c
@@ -1027,7 +1027,9 @@ sync_folders (CamelIMAPXStore *istore,
GCancellable *cancellable,
GError **error)
{
+ CamelSettings *settings;
GHashTable *folders_from_server;
+ gboolean notify_all;
gint i, total;
folders_from_server = fetch_folders_for_namespaces (
@@ -1035,6 +1037,10 @@ sync_folders (CamelIMAPXStore *istore,
if (folders_from_server == NULL)
return FALSE;
+ settings = camel_service_ref_settings (CAMEL_SERVICE (istore));
+ notify_all = !camel_imapx_settings_get_use_subscriptions (CAMEL_IMAPX_SETTINGS (settings));
+ g_object_unref (settings);
+
total = camel_store_summary_count ((CamelStoreSummary *) istore->summary);
for (i = 0; i < total; i++) {
CamelStoreInfo *si;
@@ -1053,10 +1059,15 @@ sync_folders (CamelIMAPXStore *istore,
if (!pattern || !*pattern || imapx_match_pattern (camel_imapx_store_summary_namespace_find_full (istore->summary, full_name), pattern, full_name)) {
if ((fi = g_hash_table_lookup (folders_from_server, camel_store_info_path (istore->summary, si))) != NULL) {
+ gboolean do_notify = notify_all;
+
if (((fi->flags ^ si->flags) & CAMEL_STORE_INFO_FOLDER_SUBSCRIBED)) {
si->flags = (si->flags & ~CAMEL_FOLDER_SUBSCRIBED) | (fi->flags & CAMEL_FOLDER_SUBSCRIBED);
camel_store_summary_touch ((CamelStoreSummary *) istore->summary);
+ do_notify = TRUE;
+ }
+ if (do_notify) {
camel_store_folder_created (CAMEL_STORE (istore), fi);
camel_subscribable_folder_subscribed (CAMEL_SUBSCRIBABLE (istore), fi);
}
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c
index e4656e2..0f58117 100644
--- a/camel/providers/imap/camel-imap-store.c
+++ b/camel/providers/imap/camel-imap-store.c
@@ -2775,11 +2775,16 @@ get_folders_sync (CamelImapStore *imap_store,
CamelStoreInfo *si;
const gchar *pattern = ppattern;
CamelImapStoreNamespace *ns;
- gboolean success = TRUE, first_namespace = TRUE;
+ CamelSettings *settings;
+ gboolean success = TRUE, first_namespace = TRUE, notify_all;
if (g_cancellable_is_cancelled (cancellable))
return FALSE;
+ settings = camel_service_ref_settings (CAMEL_SERVICE (imap_store));
+ notify_all = !camel_imap_settings_get_use_subscriptions (CAMEL_IMAP_SETTINGS (settings));
+ g_object_unref (settings);
+
/* We do a LIST followed by LSUB, and merge the results. LSUB may not be a strict
* subset of LIST for some servers, so we can't use either or separately */
present = g_hash_table_new (folder_hash, folder_eq);
@@ -2878,10 +2883,15 @@ get_folders_sync (CamelImapStore *imap_store,
if (!ppattern || imap_match_pattern (camel_imap_store_summary_namespace_find_full (imap_store->summary, full_name), pattern, full_name)) {
if ((fi = g_hash_table_lookup (present, camel_store_info_path (imap_store->summary, si))) != NULL) {
+ gboolean do_notify = notify_all;
+
if (((fi->flags ^ si->flags) & CAMEL_STORE_INFO_FOLDER_SUBSCRIBED)) {
si->flags = (si->flags & ~CAMEL_FOLDER_SUBSCRIBED) | (fi->flags & CAMEL_FOLDER_SUBSCRIBED);
camel_store_summary_touch ((CamelStoreSummary *) imap_store->summary);
+ do_notify = TRUE;
+ }
+ if (do_notify) {
camel_store_folder_created (CAMEL_STORE (imap_store), fi);
camel_subscribable_folder_subscribed (CAMEL_SUBSCRIBABLE (imap_store), fi);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]