From 7ad0f100a74c55c61311a158e73cca1acecec7c3 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Fri, 10 May 2019 11:20:51 -0300 Subject: [PATCH] manager: Properly bind default calendar We need to convert from ESource to GcalCalendar. --- src/core/gcal-manager.c | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/core/gcal-manager.c b/src/core/gcal-manager.c index 6da447f5..4081eeb4 100644 --- a/src/core/gcal-manager.c +++ b/src/core/gcal-manager.c @@ -310,6 +310,25 @@ load_source (GcalManager *self, GCAL_EXIT; } +static gboolean +transform_e_source_to_gcal_calendar_cb (GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data) +{ + GcalCalendar *calendar; + GcalManager *self; + ESource *source; + + self = GCAL_MANAGER (user_data); + source = g_value_get_object (from_value); + + calendar = g_hash_table_lookup (self->clients, source); + g_value_set_object (to_value, calendar); + + return TRUE; +} + static void on_event_created (GObject *source_object, GAsyncResult *result, @@ -814,7 +833,6 @@ gcal_manager_set_default_calendar (GcalManager *self, e_source_registry_set_default_calendar (self->source_registry, gcal_calendar_get_source (calendar)); - g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_DEFAULT_CALENDAR]); } /** @@ -1464,11 +1482,15 @@ gcal_manager_startup (GcalManager *self) return; } - g_object_bind_property (self->source_registry, - "default-calendar", - self, - "default-calendar", - G_BINDING_DEFAULT); + g_object_bind_property_full (self->source_registry, + "default-calendar", + self, + "default-calendar", + G_BINDING_DEFAULT, + transform_e_source_to_gcal_calendar_cb, + NULL, + self, + NULL); self->credentials_prompter = e_credentials_prompter_new (self->source_registry);