[gnome-todo] provider-eds: improve default tasklist handling
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-todo] provider-eds: improve default tasklist handling
- Date: Sat, 22 Apr 2017 14:11:45 +0000 (UTC)
commit 082538105bd08a7359077d2569d77aac0fb15421
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Sat Apr 22 11:01:52 2017 -0300
provider-eds: improve default tasklist handling
plugins/eds/gtd-provider-eds.c | 29 +++++++++++++++++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)
---
diff --git a/plugins/eds/gtd-provider-eds.c b/plugins/eds/gtd-provider-eds.c
index 1688470..1be1fcb 100644
--- a/plugins/eds/gtd-provider-eds.c
+++ b/plugins/eds/gtd-provider-eds.c
@@ -408,6 +408,26 @@ gtd_provider_eds_credentials_required (ESourceRegistry *registry,
}
}
+static void
+default_tasklist_changed_cb (ESourceRegistry *source_registry,
+ GParamSpec *pspec,
+ GtdProviderEds *self)
+{
+ GtdTaskList *list;
+ ESource *default_source;
+
+ default_source = e_source_registry_ref_default_task_list (source_registry);
+ list = g_object_get_data (G_OBJECT (default_source), "task-list");
+
+ /* The list might not be loaded yet */
+ if (!list)
+ goto out;
+
+ g_object_notify (G_OBJECT (self), "default-task-list");
+
+out:
+ g_clear_object (&default_source);
+}
static void
gtd_provider_eds_finalize (GObject *object)
@@ -415,6 +435,8 @@ gtd_provider_eds_finalize (GObject *object)
GtdProviderEds *self = (GtdProviderEds *)object;
GtdProviderEdsPrivate *priv = gtd_provider_eds_get_instance_private (self);
+ g_signal_handlers_disconnect_by_func (priv->source_registry, default_tasklist_changed_cb, self);
+
g_clear_pointer (&priv->clients, g_hash_table_destroy);
g_clear_object (&priv->credentials_prompter);
g_clear_object (&priv->source_registry);
@@ -498,6 +520,11 @@ gtd_provider_eds_load_registry (GtdProviderEds *provider)
G_CALLBACK (gtd_provider_eds_credentials_required),
provider);
+ g_signal_connect (priv->source_registry,
+ "notify::default-task-list",
+ G_CALLBACK (default_tasklist_changed_cb),
+ provider);
+
e_credentials_prompter_process_awaiting_credentials (priv->credentials_prompter);
}
@@ -682,6 +709,8 @@ task_list_removal_finished (GtdProvider *provider,
{
gtd_object_set_ready (GTD_OBJECT (provider), TRUE);
+ g_object_notify (G_OBJECT (provider), "default-task-list");
+
if (*error)
{
g_warning ("%s: %s: %s",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]