From: Milan Crha Date: Tue, 23 Oct 2012 18:15:09 +0000 (+0200) Subject: Bug #678400 - ECollectionBackend populates disabled accounts X-Git-Tag: upstream/3.7.4~296 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9a7948409852e57721dcb2e9e63ae69d8ac78d40;p=platform%2Fupstream%2Fevolution-data-server.git Bug #678400 - ECollectionBackend populates disabled accounts --- diff --git a/libebackend/e-collection-backend.c b/libebackend/e-collection-backend.c index 87b1861..d332093 100644 --- a/libebackend/e-collection-backend.c +++ b/libebackend/e-collection-backend.c @@ -349,6 +349,19 @@ collection_backend_child_is_mail (ESource *child_source) return FALSE; } +static gboolean +include_master_source_enabled_transform (GBinding *binding, + const GValue *source_value, + GValue *target_value, + gpointer backend) +{ + g_value_set_boolean (target_value, + g_value_get_boolean (source_value) && + e_source_get_enabled (e_backend_get_source (backend))); + + return TRUE; +} + static void collection_backend_bind_child_enabled (ECollectionBackend *backend, ESource *child_source) @@ -365,26 +378,38 @@ collection_backend_bind_child_enabled (ECollectionBackend *backend, extension = e_source_get_extension (collection_source, extension_name); if (collection_backend_child_is_calendar (child_source)) { - g_object_bind_property ( + g_object_bind_property_full ( extension, "calendar-enabled", child_source, "enabled", - G_BINDING_SYNC_CREATE); + G_BINDING_SYNC_CREATE, + include_master_source_enabled_transform, + include_master_source_enabled_transform, + backend, + NULL); return; } if (collection_backend_child_is_contacts (child_source)) { - g_object_bind_property ( + g_object_bind_property_full ( extension, "contacts-enabled", child_source, "enabled", - G_BINDING_SYNC_CREATE); + G_BINDING_SYNC_CREATE, + include_master_source_enabled_transform, + include_master_source_enabled_transform, + backend, + NULL); return; } if (collection_backend_child_is_mail (child_source)) { - g_object_bind_property ( + g_object_bind_property_full ( extension, "mail-enabled", child_source, "enabled", - G_BINDING_SYNC_CREATE); + G_BINDING_SYNC_CREATE, + include_master_source_enabled_transform, + include_master_source_enabled_transform, + backend, + NULL); return; } }