[gnome-todo] eds: Reorganize class hierarchy
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-todo] eds: Reorganize class hierarchy
- Date: Thu, 18 Jan 2018 23:41:15 +0000 (UTC)
commit 9ee327d178c4d7cfa8d75f819fea2813db0b3393
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Thu Jan 18 21:39:46 2018 -0200
eds: Reorganize class hierarchy
Now GtdProviderEds is the implementer of GtdProvider,
and we only delegate to the subclasses what's absolutely
needed.
plugins/eds/gtd-provider-eds.c | 399 ++++++++++++++++++++++++++-------------
plugins/eds/gtd-provider-eds.h | 38 ++--
plugins/eds/gtd-provider-goa.c | 185 +++---------------
plugins/eds/gtd-provider-local.c | 226 +++-------------------
4 files changed, 329 insertions(+), 519 deletions(-)
---
diff --git a/plugins/eds/gtd-provider-eds.c b/plugins/eds/gtd-provider-eds.c
index 7a24b20..d097caf 100644
--- a/plugins/eds/gtd-provider-eds.c
+++ b/plugins/eds/gtd-provider-eds.c
@@ -55,10 +55,20 @@ typedef struct _TaskData
} TaskData;
-G_DEFINE_TYPE_WITH_PRIVATE (GtdProviderEds, gtd_provider_eds, GTD_TYPE_OBJECT)
+static void gtd_provider_iface_init (GtdProviderInterface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (GtdProviderEds, gtd_provider_eds, GTD_TYPE_OBJECT,
+ G_ADD_PRIVATE (GtdProviderEds)
+ G_IMPLEMENT_INTERFACE (GTD_TYPE_PROVIDER, gtd_provider_iface_init))
enum {
PROP_0,
+ PROP_ENABLED,
+ PROP_DEFAULT_TASKLIST,
+ PROP_DESCRIPTION,
+ PROP_ICON,
+ PROP_ID,
+ PROP_NAME,
PROP_REGISTRY,
N_PROPS
};
@@ -458,41 +468,6 @@ out:
g_clear_object (&default_source);
}
-static void
-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);
-
- G_OBJECT_CLASS (gtd_provider_eds_parent_class)->finalize (object);
-}
-
-static void
-gtd_provider_eds_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtdProviderEds *self = GTD_PROVIDER_EDS (object);
- GtdProviderEdsPrivate *priv = gtd_provider_eds_get_instance_private (self);
-
- switch (prop_id)
- {
- case PROP_REGISTRY:
- g_value_set_object (value, priv->source_registry);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- }
-}
-
static void
gtd_provider_eds_load_registry (GtdProviderEds *provider)
{
@@ -810,83 +785,58 @@ gtd_provider_eds_commit_source_finished (GObject *registry,
}
}
-static void
-gtd_provider_eds_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtdProviderEds *self = GTD_PROVIDER_EDS (object);
- switch (prop_id)
- {
- case PROP_REGISTRY:
- gtd_provider_eds_set_registry (self, g_value_get_object (value));
- break;
+/*
+ * GtdProvider iface
+ */
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- }
+static const gchar*
+gtd_provider_eds_get_id (GtdProvider *provider)
+{
+ g_return_val_if_fail (GTD_IS_PROVIDER_EDS (provider), NULL);
+
+ return GTD_PROVIDER_EDS_CLASS (G_OBJECT_GET_CLASS (provider))->get_id (GTD_PROVIDER_EDS (provider));
}
-static void
-gtd_provider_eds_class_init (GtdProviderEdsClass *klass)
+static const gchar*
+gtd_provider_eds_get_name (GtdProvider *provider)
{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = gtd_provider_eds_finalize;
- object_class->get_property = gtd_provider_eds_get_property;
- object_class->set_property = gtd_provider_eds_set_property;
+ g_return_val_if_fail (GTD_IS_PROVIDER_EDS (provider), NULL);
- g_object_class_install_property (object_class,
- PROP_REGISTRY,
- g_param_spec_object ("registry",
- "Source registry",
- "The EDS source registry object",
- E_TYPE_SOURCE_REGISTRY,
- G_PARAM_READABLE | G_PARAM_WRITABLE |
G_PARAM_CONSTRUCT_ONLY));
+ return GTD_PROVIDER_EDS_CLASS (G_OBJECT_GET_CLASS (provider))->get_name (GTD_PROVIDER_EDS (provider));
}
-static void
-gtd_provider_eds_init (GtdProviderEds *self)
+static const gchar*
+gtd_provider_eds_get_description (GtdProvider *provider)
{
- GtdProviderEdsPrivate *priv = gtd_provider_eds_get_instance_private (self);
-
- /* While it's not ready, we don't load tasklists */
- gtd_object_set_ready (GTD_OBJECT (self), FALSE);
+ g_return_val_if_fail (GTD_IS_PROVIDER_EDS (provider), NULL);
- /* hash table */
- priv->clients = g_hash_table_new_full ((GHashFunc) e_source_hash,
- (GEqualFunc) e_source_equal,
- g_object_unref,
- g_object_unref);
+ return GTD_PROVIDER_EDS_CLASS (G_OBJECT_GET_CLASS (provider))->get_description (GTD_PROVIDER_EDS
(provider));
}
-GtdProviderEds*
-gtd_provider_eds_new (ESourceRegistry *registry)
+
+static gboolean
+gtd_provider_eds_get_enabled (GtdProvider *provider)
{
- return g_object_new (GTD_TYPE_PROVIDER_EDS,
- "registry", registry,
- NULL);
+ g_return_val_if_fail (GTD_IS_PROVIDER_EDS (provider), FALSE);
+
+ return GTD_PROVIDER_EDS_CLASS (G_OBJECT_GET_CLASS (provider))->get_enabled (GTD_PROVIDER_EDS (provider));
}
-ESourceRegistry*
-gtd_provider_eds_get_registry (GtdProviderEds *provider)
+static GIcon*
+gtd_provider_eds_get_icon (GtdProvider *provider)
{
- GtdProviderEdsPrivate *priv;
-
g_return_val_if_fail (GTD_IS_PROVIDER_EDS (provider), NULL);
- priv = gtd_provider_eds_get_instance_private (provider);
-
- return priv->source_registry;
+ return GTD_PROVIDER_EDS_CLASS (G_OBJECT_GET_CLASS (provider))->get_icon (GTD_PROVIDER_EDS (provider));
}
-void
-gtd_provider_eds_create_task (GtdProviderEds *provider,
- GtdTask *task)
+static void
+gtd_provider_eds_create_task (GtdProvider *provider,
+ GtdTask *task)
{
GtdProviderEdsPrivate *priv;
+ GtdProviderEds *self;
GtdTaskListEds *tasklist;
ECalComponent *component;
ECalClient *client;
@@ -896,14 +846,15 @@ gtd_provider_eds_create_task (GtdProviderEds *provider,
g_return_if_fail (GTD_IS_TASK (task));
g_return_if_fail (GTD_IS_TASK_LIST_EDS (gtd_task_get_list (task)));
- priv = gtd_provider_eds_get_instance_private (provider);
+ self = GTD_PROVIDER_EDS (provider);
+ priv = gtd_provider_eds_get_instance_private (self);
tasklist = GTD_TASK_LIST_EDS (gtd_task_get_list (task));
source = gtd_task_list_eds_get_source (tasklist);
client = g_hash_table_lookup (priv->clients, source);
component = gtd_task_eds_get_component (GTD_TASK_EDS (task));
/* Temporary data for async operation */
- data = task_data_new (provider, (gpointer) task);
+ data = task_data_new (self, (gpointer) task);
/* The task is not ready until we finish the operation */
gtd_object_set_ready (GTD_OBJECT (task), FALSE);
@@ -915,11 +866,12 @@ gtd_provider_eds_create_task (GtdProviderEds *provider,
data);
}
-void
-gtd_provider_eds_update_task (GtdProviderEds *provider,
- GtdTask *task)
+static void
+gtd_provider_eds_update_task (GtdProvider *provider,
+ GtdTask *task)
{
GtdProviderEdsPrivate *priv;
+ GtdProviderEds *self;
GtdTaskListEds *tasklist;
ECalComponent *component;
ECalClient *client;
@@ -929,7 +881,8 @@ gtd_provider_eds_update_task (GtdProviderEds *provider,
g_return_if_fail (GTD_IS_TASK (task));
g_return_if_fail (GTD_IS_TASK_LIST_EDS (gtd_task_get_list (task)));
- priv = gtd_provider_eds_get_instance_private (provider);
+ self = GTD_PROVIDER_EDS (provider);
+ priv = gtd_provider_eds_get_instance_private (self);
tasklist = GTD_TASK_LIST_EDS (gtd_task_get_list (task));
source = gtd_task_list_eds_get_source (tasklist);
client = g_hash_table_lookup (priv->clients, source);
@@ -938,7 +891,7 @@ gtd_provider_eds_update_task (GtdProviderEds *provider,
e_cal_component_commit_sequence (component);
/* Temporary data for async operation */
- data = task_data_new (provider, (gpointer) task);
+ data = task_data_new (self, (gpointer) task);
/* The task is not ready until we finish the operation */
gtd_object_set_ready (GTD_OBJECT (task), FALSE);
@@ -951,15 +904,16 @@ gtd_provider_eds_update_task (GtdProviderEds *provider,
data);
}
-void
-gtd_provider_eds_remove_task (GtdProviderEds *provider,
- GtdTask *task)
+static void
+gtd_provider_eds_remove_task (GtdProvider *provider,
+ GtdTask *task)
{
GtdProviderEdsPrivate *priv;
- ECalComponent *component;
- GtdTaskListEds *tasklist;
ECalComponentId *id;
+ GtdProviderEds *self;
+ GtdTaskListEds *tasklist;
+ ECalComponent *component;
ECalClient *client;
TaskData *data;
ESource *source;
@@ -967,7 +921,8 @@ gtd_provider_eds_remove_task (GtdProviderEds *provider,
g_return_if_fail (GTD_IS_TASK (task));
g_return_if_fail (GTD_IS_TASK_LIST_EDS (gtd_task_get_list (task)));
- priv = gtd_provider_eds_get_instance_private (provider);
+ self = GTD_PROVIDER_EDS (provider);
+ priv = gtd_provider_eds_get_instance_private (self);
tasklist = GTD_TASK_LIST_EDS (gtd_task_get_list (task));
source = gtd_task_list_eds_get_source (tasklist);
client = g_hash_table_lookup (priv->clients, source);
@@ -975,7 +930,7 @@ gtd_provider_eds_remove_task (GtdProviderEds *provider,
id = e_cal_component_get_id (component);
/* Temporary data for async operation */
- data = task_data_new (provider, (gpointer) task);
+ data = task_data_new (self, (gpointer) task);
/* The task is not ready until we finish the operation */
gtd_object_set_ready (GTD_OBJECT (task), FALSE);
@@ -991,18 +946,26 @@ gtd_provider_eds_remove_task (GtdProviderEds *provider,
e_cal_component_free_id (id);
}
-void
-gtd_provider_eds_create_task_list (GtdProviderEds *provider,
- GtdTaskList *list)
+static void
+gtd_provider_eds_create_task_list (GtdProvider *provider,
+ GtdTaskList *list)
{
GtdProviderEdsPrivate *priv;
- ESource *source;
+ GtdProviderEds *self;
+ ESource *source = NULL;
- g_return_if_fail (GTD_IS_TASK_LIST_EDS (list));
- g_return_if_fail (gtd_task_list_eds_get_source (GTD_TASK_LIST_EDS (list)));
+ self = GTD_PROVIDER_EDS (provider);
+ priv = gtd_provider_eds_get_instance_private (self);
- priv = gtd_provider_eds_get_instance_private (provider);
- source = gtd_task_list_eds_get_source (GTD_TASK_LIST_EDS (list));
+ /* Create an ESource */
+ if (GTD_PROVIDER_EDS_CLASS (G_OBJECT_GET_CLASS (provider))->create_source)
+ source = GTD_PROVIDER_EDS_CLASS (G_OBJECT_GET_CLASS (provider))->create_source (self);
+
+ if (!source)
+ return;
+
+ /* EDS properties */
+ e_source_set_display_name (source, gtd_task_list_get_name (list));
gtd_object_set_ready (GTD_OBJECT (provider), FALSE);
e_source_registry_commit_source (priv->source_registry,
@@ -1027,9 +990,9 @@ gtd_provider_eds_create_task_list (GtdProviderEds *provider,
}
}
-void
-gtd_provider_eds_update_task_list (GtdProviderEds *provider,
- GtdTaskList *list)
+static void
+gtd_provider_eds_update_task_list (GtdProvider *provider,
+ GtdTaskList *list)
{
GtdProviderEdsPrivate *priv;
@@ -1038,7 +1001,7 @@ gtd_provider_eds_update_task_list (GtdProviderEds *provider,
g_return_if_fail (GTD_IS_TASK_LIST (list));
g_return_if_fail (gtd_task_list_eds_get_source (GTD_TASK_LIST_EDS (list)));
- priv = gtd_provider_eds_get_instance_private (provider);
+ priv = gtd_provider_eds_get_instance_private (GTD_PROVIDER_EDS (provider));
source = gtd_task_list_eds_get_source (GTD_TASK_LIST_EDS (list));
gtd_object_set_ready (GTD_OBJECT (provider), FALSE);
@@ -1047,11 +1010,13 @@ gtd_provider_eds_update_task_list (GtdProviderEds *provider,
NULL,
(GAsyncReadyCallback) gtd_provider_eds_commit_source_finished,
provider);
+
+ g_signal_emit_by_name (provider, "list-changed", list);
}
-void
-gtd_provider_eds_remove_task_list (GtdProviderEds *provider,
- GtdTaskList *list)
+static void
+gtd_provider_eds_remove_task_list (GtdProvider *provider,
+ GtdTaskList *list)
{
ESource *source;
@@ -1076,24 +1041,26 @@ gtd_provider_eds_remove_task_list (GtdProviderEds *provider,
(GAsyncReadyCallback) gtd_provider_eds_remove_source_finished,
provider);
}
+
+ g_signal_emit_by_name (provider, "list-removed", list);
}
-GList*
-gtd_provider_eds_get_task_lists (GtdProviderEds *provider)
+static GList*
+gtd_provider_eds_get_task_lists (GtdProvider *provider)
{
- GtdProviderEdsPrivate *priv = gtd_provider_eds_get_instance_private (provider);
+ GtdProviderEdsPrivate *priv = gtd_provider_eds_get_instance_private (GTD_PROVIDER_EDS (provider));
return priv->task_lists;
}
-GtdTaskList*
-gtd_provider_eds_get_default_task_list (GtdProviderEds *provider)
+static GtdTaskList*
+gtd_provider_eds_get_default_task_list (GtdProvider *provider)
{
GtdProviderEdsPrivate *priv;
GtdTaskList *default_task_list;
ESource *default_source;
- priv = gtd_provider_eds_get_instance_private (provider);
+ priv = gtd_provider_eds_get_instance_private (GTD_PROVIDER_EDS (provider));
default_source = e_source_registry_ref_default_task_list (priv->source_registry);
default_task_list = g_object_get_data (G_OBJECT (default_source), "task-list");
@@ -1108,14 +1075,14 @@ gtd_provider_eds_get_default_task_list (GtdProviderEds *provider)
return default_task_list;
}
-void
-gtd_provider_eds_set_default_task_list (GtdProviderEds *provider,
- GtdTaskList *list)
+static void
+gtd_provider_eds_set_default_task_list (GtdProvider *provider,
+ GtdTaskList *list)
{
GtdProviderEdsPrivate *priv;
ESource *source;
- priv = gtd_provider_eds_get_instance_private (provider);
+ priv = gtd_provider_eds_get_instance_private (GTD_PROVIDER_EDS (provider));
source = g_object_get_data (G_OBJECT (list), "task-list");
e_source_registry_set_default_task_list (priv->source_registry, source);
@@ -1123,8 +1090,8 @@ gtd_provider_eds_set_default_task_list (GtdProviderEds *provider,
g_object_notify (G_OBJECT (provider), "default-task-list");
}
-GtdTask*
-gtd_provider_eds_generate_task (GtdProviderEds *self)
+static GtdTask*
+gtd_provider_eds_generate_task (GtdProvider *self)
{
ECalComponent *component;
GtdTask *task;
@@ -1138,3 +1105,171 @@ gtd_provider_eds_generate_task (GtdProviderEds *self)
return task;
}
+
+static void
+gtd_provider_iface_init (GtdProviderInterface *iface)
+{
+ iface->get_id = gtd_provider_eds_get_id;
+ iface->get_name = gtd_provider_eds_get_name;
+ iface->get_description = gtd_provider_eds_get_description;
+ iface->get_enabled = gtd_provider_eds_get_enabled;
+ iface->get_icon = gtd_provider_eds_get_icon;
+ iface->create_task = gtd_provider_eds_create_task;
+ iface->update_task = gtd_provider_eds_update_task;
+ iface->remove_task = gtd_provider_eds_remove_task;
+ iface->create_task_list = gtd_provider_eds_create_task_list;
+ iface->update_task_list = gtd_provider_eds_update_task_list;
+ iface->remove_task_list = gtd_provider_eds_remove_task_list;
+ iface->get_task_lists = gtd_provider_eds_get_task_lists;
+ iface->get_default_task_list = gtd_provider_eds_get_default_task_list;
+ iface->set_default_task_list = gtd_provider_eds_set_default_task_list;
+ iface->generate_task = gtd_provider_eds_generate_task;
+}
+
+
+/*
+ * GObject overrides
+ */
+
+static void
+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);
+
+ G_OBJECT_CLASS (gtd_provider_eds_parent_class)->finalize (object);
+}
+
+static void
+gtd_provider_eds_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GtdProvider *provider = GTD_PROVIDER (object);
+ GtdProviderEdsPrivate *priv = gtd_provider_eds_get_instance_private (GTD_PROVIDER_EDS (object));
+
+
+ switch (prop_id)
+ {
+ case PROP_DEFAULT_TASKLIST:
+ g_value_set_object (value, gtd_provider_eds_get_default_task_list (provider));
+ break;
+
+ case PROP_DESCRIPTION:
+ g_value_set_string (value, gtd_provider_eds_get_description (provider));
+ break;
+
+ case PROP_ENABLED:
+ g_value_set_boolean (value, gtd_provider_eds_get_enabled (provider));
+ break;
+
+ case PROP_ICON:
+ g_value_set_object (value, gtd_provider_eds_get_icon (provider));
+ break;
+
+ case PROP_ID:
+ g_value_set_string (value, gtd_provider_eds_get_id (provider));
+ break;
+
+ case PROP_NAME:
+ g_value_set_string (value, gtd_provider_eds_get_name (provider));
+ break;
+
+ case PROP_REGISTRY:
+ g_value_set_object (value, priv->source_registry);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+static void
+gtd_provider_eds_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GtdProviderEds *self = GTD_PROVIDER_EDS (object);
+
+ switch (prop_id)
+ {
+ case PROP_DEFAULT_TASKLIST:
+ gtd_provider_eds_set_default_task_list (GTD_PROVIDER (self), g_value_get_object (value));
+ break;
+
+ case PROP_REGISTRY:
+ gtd_provider_eds_set_registry (self, g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+static void
+gtd_provider_eds_class_init (GtdProviderEdsClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = gtd_provider_eds_finalize;
+ object_class->get_property = gtd_provider_eds_get_property;
+ object_class->set_property = gtd_provider_eds_set_property;
+
+ g_object_class_override_property (object_class, PROP_DEFAULT_TASKLIST, "default-task-list");
+ g_object_class_override_property (object_class, PROP_DESCRIPTION, "description");
+ g_object_class_override_property (object_class, PROP_ENABLED, "enabled");
+ g_object_class_override_property (object_class, PROP_ICON, "icon");
+ g_object_class_override_property (object_class, PROP_ID, "id");
+ g_object_class_override_property (object_class, PROP_NAME, "name");
+
+ g_object_class_install_property (object_class,
+ PROP_REGISTRY,
+ g_param_spec_object ("registry",
+ "Source registry",
+ "The EDS source registry object",
+ E_TYPE_SOURCE_REGISTRY,
+ G_PARAM_READABLE | G_PARAM_WRITABLE |
G_PARAM_CONSTRUCT_ONLY));
+}
+
+static void
+gtd_provider_eds_init (GtdProviderEds *self)
+{
+ GtdProviderEdsPrivate *priv = gtd_provider_eds_get_instance_private (self);
+
+ /* While it's not ready, we don't load tasklists */
+ gtd_object_set_ready (GTD_OBJECT (self), FALSE);
+
+ /* hash table */
+ priv->clients = g_hash_table_new_full ((GHashFunc) e_source_hash,
+ (GEqualFunc) e_source_equal,
+ g_object_unref,
+ g_object_unref);
+}
+
+GtdProviderEds*
+gtd_provider_eds_new (ESourceRegistry *registry)
+{
+ return g_object_new (GTD_TYPE_PROVIDER_EDS,
+ "registry", registry,
+ NULL);
+}
+
+ESourceRegistry*
+gtd_provider_eds_get_registry (GtdProviderEds *provider)
+{
+ GtdProviderEdsPrivate *priv;
+
+ g_return_val_if_fail (GTD_IS_PROVIDER_EDS (provider), NULL);
+
+ priv = gtd_provider_eds_get_instance_private (provider);
+
+ return priv->source_registry;
+}
diff --git a/plugins/eds/gtd-provider-eds.h b/plugins/eds/gtd-provider-eds.h
index 59c8226..402db2c 100644
--- a/plugins/eds/gtd-provider-eds.h
+++ b/plugins/eds/gtd-provider-eds.h
@@ -35,41 +35,25 @@ struct _GtdProviderEdsClass
{
GtdObjectClass parent;
- gboolean (*should_load_source) (GtdProviderEds *provider,
- ESource *source);
-};
-
-GtdProviderEds* gtd_provider_eds_new (ESourceRegistry *registry);
-
-ESourceRegistry* gtd_provider_eds_get_registry (GtdProviderEds *local);
-
-void gtd_provider_eds_create_task (GtdProviderEds *provider,
- GtdTask *task);
+ const gchar* (*get_id) (GtdProviderEds *self);
-void gtd_provider_eds_update_task (GtdProviderEds *provider,
- GtdTask *task);
+ const gchar* (*get_name) (GtdProviderEds *self);
-void gtd_provider_eds_remove_task (GtdProviderEds *provider,
- GtdTask *task);
+ const gchar* (*get_description) (GtdProviderEds *self);
-void gtd_provider_eds_create_task_list (GtdProviderEds *provider,
- GtdTaskList *list);
+ gboolean (*get_enabled) (GtdProviderEds *self);
-void gtd_provider_eds_update_task_list (GtdProviderEds *provider,
- GtdTaskList *list);
+ GIcon* (*get_icon) (GtdProviderEds *self);
-void gtd_provider_eds_remove_task_list (GtdProviderEds *provider,
- GtdTaskList *list);
+ ESource* (*create_source) (GtdProviderEds *self);
-GList* gtd_provider_eds_get_task_lists (GtdProviderEds *provider);
-
-GtdTaskList* gtd_provider_eds_get_default_task_list (GtdProviderEds *provider);
-
-void gtd_provider_eds_set_default_task_list (GtdProviderEds *provider,
- GtdTaskList *list);
+ gboolean (*should_load_source) (GtdProviderEds *provider,
+ ESource *source);
+};
-GtdTask* gtd_provider_eds_generate_task (GtdProviderEds *self);
+GtdProviderEds* gtd_provider_eds_new (ESourceRegistry *registry);
+ESourceRegistry* gtd_provider_eds_get_registry (GtdProviderEds *local);
G_END_DECLS
#endif /* GTD_PROVIDER_EDS_H */
diff --git a/plugins/eds/gtd-provider-goa.c b/plugins/eds/gtd-provider-goa.c
index 9641130..708ff42 100644
--- a/plugins/eds/gtd-provider-goa.c
+++ b/plugins/eds/gtd-provider-goa.c
@@ -33,171 +33,58 @@ struct _GtdProviderGoa
gchar *id;
};
-static void gtd_provider_iface_init (GtdProviderInterface *iface);
-
-G_DEFINE_TYPE_WITH_CODE (GtdProviderGoa, gtd_provider_goa, GTD_TYPE_PROVIDER_EDS,
- G_IMPLEMENT_INTERFACE (GTD_TYPE_PROVIDER,
- gtd_provider_iface_init))
+G_DEFINE_TYPE (GtdProviderGoa, gtd_provider_goa, GTD_TYPE_PROVIDER_EDS)
enum {
PROP_0,
PROP_ACCOUNT,
- PROP_DEFAULT_TASKLIST,
- PROP_DESCRIPTION,
- PROP_ENABLED,
- PROP_ICON,
- PROP_ID,
- PROP_NAME,
N_PROPS
};
/*
- * GtdProviderInterface implementation
+ * GtdProviderEds overrides
*/
+
static const gchar*
-gtd_provider_goa_get_id (GtdProvider *provider)
+gtd_provider_goa_get_id (GtdProviderEds *provider)
{
- GtdProviderGoa *self;
-
- self = GTD_PROVIDER_GOA (provider);
+ GtdProviderGoa *self = GTD_PROVIDER_GOA (provider);
return self->id;
}
static const gchar*
-gtd_provider_goa_get_name (GtdProvider *provider)
+gtd_provider_goa_get_name (GtdProviderEds *provider)
{
- GtdProviderGoa *self;
-
- self = GTD_PROVIDER_GOA (provider);
+ GtdProviderGoa *self = GTD_PROVIDER_GOA (provider);
return goa_account_get_provider_name (self->account);
}
static const gchar*
-gtd_provider_goa_get_description (GtdProvider *provider)
+gtd_provider_goa_get_description (GtdProviderEds *provider)
{
- GtdProviderGoa *self;
-
- self = GTD_PROVIDER_GOA (provider);
+ GtdProviderGoa *self = GTD_PROVIDER_GOA (provider);
return goa_account_get_identity (self->account);
}
-
static gboolean
-gtd_provider_goa_get_enabled (GtdProvider *provider)
+gtd_provider_goa_get_enabled (GtdProviderEds *provider)
{
- GtdProviderGoa *self;
-
- self = GTD_PROVIDER_GOA (provider);
+ GtdProviderGoa *self = GTD_PROVIDER_GOA (provider);
return !goa_account_get_calendar_disabled (self->account);
}
static GIcon*
-gtd_provider_goa_get_icon (GtdProvider *provider)
+gtd_provider_goa_get_icon (GtdProviderEds *provider)
{
- GtdProviderGoa *self;
-
- self = GTD_PROVIDER_GOA (provider);
+ GtdProviderGoa *self = GTD_PROVIDER_GOA (provider);
return self->icon;
}
-static void
-gtd_provider_goa_create_task (GtdProvider *provider,
- GtdTask *task)
-{
- gtd_provider_eds_create_task (GTD_PROVIDER_EDS (provider), task);
-}
-
-static void
-gtd_provider_goa_update_task (GtdProvider *provider,
- GtdTask *task)
-{
- gtd_provider_eds_update_task (GTD_PROVIDER_EDS (provider), task);
-}
-
-static void
-gtd_provider_goa_remove_task (GtdProvider *provider,
- GtdTask *task)
-{
- gtd_provider_eds_remove_task (GTD_PROVIDER_EDS (provider), task);
-}
-
-static void
-gtd_provider_goa_create_task_list (GtdProvider *provider,
- GtdTaskList *list)
-{
- gtd_provider_eds_create_task_list (GTD_PROVIDER_EDS (provider), list);
-
- g_signal_emit_by_name (provider, "list-added", list);
-}
-
-static void
-gtd_provider_goa_update_task_list (GtdProvider *provider,
- GtdTaskList *list)
-{
- gtd_provider_eds_update_task_list (GTD_PROVIDER_EDS (provider), list);
-
- g_signal_emit_by_name (provider, "list-changed", list);
-}
-
-static void
-gtd_provider_goa_remove_task_list (GtdProvider *provider,
- GtdTaskList *list)
-{
- gtd_provider_eds_remove_task_list (GTD_PROVIDER_EDS (provider), list);
-
- g_signal_emit_by_name (provider, "list-removed", list);
-}
-
-static GList*
-gtd_provider_goa_get_task_lists (GtdProvider *provider)
-{
- return gtd_provider_eds_get_task_lists (GTD_PROVIDER_EDS (provider));
-}
-
-static GtdTaskList*
-gtd_provider_goa_get_default_task_list (GtdProvider *provider)
-{
- return gtd_provider_eds_get_default_task_list (GTD_PROVIDER_EDS (provider));
-}
-
-static void
-gtd_provider_goa_set_default_task_list (GtdProvider *provider,
- GtdTaskList *list)
-{
- gtd_provider_eds_set_default_task_list (GTD_PROVIDER_EDS (provider), list);
-}
-
-static GtdTask*
-gtd_provider_goa_generate_task (GtdProvider *provider)
-{
- return gtd_provider_eds_generate_task (GTD_PROVIDER_EDS (provider));
-}
-
-static void
-gtd_provider_iface_init (GtdProviderInterface *iface)
-{
- iface->get_id = gtd_provider_goa_get_id;
- iface->get_name = gtd_provider_goa_get_name;
- iface->get_description = gtd_provider_goa_get_description;
- iface->get_enabled = gtd_provider_goa_get_enabled;
- iface->get_icon = gtd_provider_goa_get_icon;
- iface->create_task = gtd_provider_goa_create_task;
- iface->update_task = gtd_provider_goa_update_task;
- iface->remove_task = gtd_provider_goa_remove_task;
- iface->create_task_list = gtd_provider_goa_create_task_list;
- iface->update_task_list = gtd_provider_goa_update_task_list;
- iface->remove_task_list = gtd_provider_goa_remove_task_list;
- iface->get_task_lists = gtd_provider_goa_get_task_lists;
- iface->get_default_task_list = gtd_provider_goa_get_default_task_list;
- iface->set_default_task_list = gtd_provider_goa_set_default_task_list;
- iface->generate_task = gtd_provider_goa_generate_task;
-}
-
static void
gtd_provider_goa_set_account (GtdProviderGoa *provider,
GoaAccount *account)
@@ -230,6 +117,11 @@ gtd_provider_goa_set_account (GtdProviderGoa *provider,
}
}
+
+/*
+ * GObject overrides
+ */
+
static void
gtd_provider_goa_finalize (GObject *object)
{
@@ -250,7 +142,6 @@ gtd_provider_goa_get_property (GObject *object,
GParamSpec *pspec)
{
GtdProviderGoa *self = GTD_PROVIDER_GOA (object);
- GtdProvider *provider = GTD_PROVIDER (object);
switch (prop_id)
{
@@ -259,30 +150,6 @@ gtd_provider_goa_get_property (GObject *object,
g_value_set_object (value, self->account);
break;
- case PROP_DEFAULT_TASKLIST:
- g_value_set_object (value, gtd_provider_goa_get_default_task_list (provider));
- break;
-
- case PROP_DESCRIPTION:
- g_value_set_string (value, gtd_provider_goa_get_description (provider));
- break;
-
- case PROP_ENABLED:
- g_value_set_boolean (value, gtd_provider_goa_get_enabled (provider));
- break;
-
- case PROP_ICON:
- g_value_set_object (value, gtd_provider_goa_get_icon (provider));
- break;
-
- case PROP_ID:
- g_value_set_string (value, gtd_provider_goa_get_id (provider));
- break;
-
- case PROP_NAME:
- g_value_set_string (value, gtd_provider_goa_get_name (provider));
- break;
-
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -302,10 +169,6 @@ gtd_provider_goa_set_property (GObject *object,
gtd_provider_goa_set_account (self, g_value_get_object (value));
break;
- case PROP_DEFAULT_TASKLIST:
- gtd_provider_goa_set_default_task_list (GTD_PROVIDER (self), g_value_get_object (value));
- break;
-
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -360,19 +223,17 @@ gtd_provider_goa_class_init (GtdProviderGoaClass *klass)
GtdProviderEdsClass *eds_class = GTD_PROVIDER_EDS_CLASS (klass);
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ eds_class->get_id = gtd_provider_goa_get_id;
+ eds_class->get_name = gtd_provider_goa_get_name;
+ eds_class->get_description = gtd_provider_goa_get_description;
+ eds_class->get_enabled = gtd_provider_goa_get_enabled;
+ eds_class->get_icon = gtd_provider_goa_get_icon;
eds_class->should_load_source = gtd_provider_goa_should_load_source;
object_class->finalize = gtd_provider_goa_finalize;
object_class->get_property = gtd_provider_goa_get_property;
object_class->set_property = gtd_provider_goa_set_property;
- g_object_class_override_property (object_class, PROP_DEFAULT_TASKLIST, "default-task-list");
- g_object_class_override_property (object_class, PROP_DESCRIPTION, "description");
- g_object_class_override_property (object_class, PROP_ENABLED, "enabled");
- g_object_class_override_property (object_class, PROP_ICON, "icon");
- g_object_class_override_property (object_class, PROP_ID, "id");
- g_object_class_override_property (object_class, PROP_NAME, "name");
-
g_object_class_install_property (object_class,
PROP_ACCOUNT,
g_param_spec_object ("account",
diff --git a/plugins/eds/gtd-provider-local.c b/plugins/eds/gtd-provider-local.c
index 1ff1fdb..333f3e6 100644
--- a/plugins/eds/gtd-provider-local.c
+++ b/plugins/eds/gtd-provider-local.c
@@ -31,88 +31,49 @@ struct _GtdProviderLocal
GList *tasklists;
};
-static void gtd_provider_iface_init (GtdProviderInterface *iface);
-
-G_DEFINE_TYPE_WITH_CODE (GtdProviderLocal, gtd_provider_local, GTD_TYPE_PROVIDER_EDS,
- G_IMPLEMENT_INTERFACE (GTD_TYPE_PROVIDER,
- gtd_provider_iface_init))
-
-enum {
- PROP_0,
- PROP_ENABLED,
- PROP_DEFAULT_TASKLIST,
- PROP_DESCRIPTION,
- PROP_ICON,
- PROP_ID,
- PROP_NAME,
- LAST_PROP
-};
+G_DEFINE_TYPE (GtdProviderLocal, gtd_provider_local, GTD_TYPE_PROVIDER_EDS)
+
/*
- * GtdProviderInterface implementation
+ * GtdProviderEds overrides
*/
+
static const gchar*
-gtd_provider_local_get_id (GtdProvider *provider)
+gtd_provider_local_get_id (GtdProviderEds *provider)
{
return "local";
}
static const gchar*
-gtd_provider_local_get_name (GtdProvider *provider)
+gtd_provider_local_get_name (GtdProviderEds *provider)
{
return _("Local");
}
static const gchar*
-gtd_provider_local_get_description (GtdProvider *provider)
+gtd_provider_local_get_description (GtdProviderEds *provider)
{
return _("On This Computer");
}
-
static gboolean
-gtd_provider_local_get_enabled (GtdProvider *provider)
+gtd_provider_local_get_enabled (GtdProviderEds *provider)
{
return TRUE;
}
static GIcon*
-gtd_provider_local_get_icon (GtdProvider *provider)
+gtd_provider_local_get_icon (GtdProviderEds *provider)
{
- GtdProviderLocal *self;
-
- self = GTD_PROVIDER_LOCAL (provider);
+ GtdProviderLocal *self = GTD_PROVIDER_LOCAL (provider);
return self->icon;
}
-static void
-gtd_provider_local_create_task (GtdProvider *provider,
- GtdTask *task)
-{
- gtd_provider_eds_create_task (GTD_PROVIDER_EDS (provider), task);
-}
-
-static void
-gtd_provider_local_update_task (GtdProvider *provider,
- GtdTask *task)
-{
- gtd_provider_eds_update_task (GTD_PROVIDER_EDS (provider), task);
-}
-
-static void
-gtd_provider_local_remove_task (GtdProvider *provider,
- GtdTask *task)
-{
- gtd_provider_eds_remove_task (GTD_PROVIDER_EDS (provider), task);
-}
-
-static void
-gtd_provider_local_create_task_list (GtdProvider *provider,
- GtdTaskList *list)
+static ESource*
+gtd_provider_local_create_source (GtdProviderEds *provider)
{
ESourceExtension *extension;
- GtdTaskListEds *eds_list;
ESource *source;
GError *error;
@@ -137,93 +98,16 @@ gtd_provider_local_create_task_list (GtdProvider *provider,
NULL);
g_clear_error (&error);
- return;
+ return NULL;
}
- /* EDS properties */
- e_source_set_display_name (source, gtd_task_list_get_name (list));
-
/* Make it a local source */
extension = e_source_get_extension (source, E_SOURCE_EXTENSION_TASK_LIST);
e_source_set_parent (source, "local-stub");
e_source_backend_set_backend_name (E_SOURCE_BACKEND (extension), "local");
- /* EDS Task list */
- eds_list = gtd_task_list_eds_new (provider, source);
-
- gtd_provider_eds_create_task_list (GTD_PROVIDER_EDS (provider), GTD_TASK_LIST (eds_list));
-}
-
-static void
-gtd_provider_local_update_task_list (GtdProvider *provider,
- GtdTaskList *list)
-{
- gtd_provider_eds_update_task_list (GTD_PROVIDER_EDS (provider), list);
-
- g_signal_emit_by_name (provider, "list-changed", list);
-}
-
-static void
-gtd_provider_local_remove_task_list (GtdProvider *provider,
- GtdTaskList *list)
-{
- gtd_provider_eds_remove_task_list (GTD_PROVIDER_EDS (provider), list);
-
- g_signal_emit_by_name (provider, "list-removed", list);
-}
-
-static GList*
-gtd_provider_local_get_task_lists (GtdProvider *provider)
-{
- return gtd_provider_eds_get_task_lists (GTD_PROVIDER_EDS (provider));
-}
-
-static GtdTaskList*
-gtd_provider_local_get_default_task_list (GtdProvider *provider)
-{
- return gtd_provider_eds_get_default_task_list (GTD_PROVIDER_EDS (provider));
-}
-
-static void
-gtd_provider_local_set_default_task_list (GtdProvider *provider,
- GtdTaskList *list)
-{
- gtd_provider_eds_set_default_task_list (GTD_PROVIDER_EDS (provider), list);
-}
-
-static GtdTask*
-gtd_provider_local_generate_task (GtdProvider *provider)
-{
- return gtd_provider_eds_generate_task (GTD_PROVIDER_EDS (provider));
-}
-
-static void
-gtd_provider_iface_init (GtdProviderInterface *iface)
-{
- iface->get_id = gtd_provider_local_get_id;
- iface->get_name = gtd_provider_local_get_name;
- iface->get_description = gtd_provider_local_get_description;
- iface->get_enabled = gtd_provider_local_get_enabled;
- iface->get_icon = gtd_provider_local_get_icon;
- iface->create_task = gtd_provider_local_create_task;
- iface->update_task = gtd_provider_local_update_task;
- iface->remove_task = gtd_provider_local_remove_task;
- iface->create_task_list = gtd_provider_local_create_task_list;
- iface->update_task_list = gtd_provider_local_update_task_list;
- iface->remove_task_list = gtd_provider_local_remove_task_list;
- iface->get_task_lists = gtd_provider_local_get_task_lists;
- iface->get_default_task_list = gtd_provider_local_get_default_task_list;
- iface->set_default_task_list = gtd_provider_local_set_default_task_list;
- iface->generate_task = gtd_provider_local_generate_task;
-}
-
-GtdProviderLocal*
-gtd_provider_local_new (ESourceRegistry *registry)
-{
- return g_object_new (GTD_TYPE_PROVIDER_LOCAL,
- "registry", registry,
- NULL);
+ return source;
}
static void
@@ -236,64 +120,6 @@ gtd_provider_local_finalize (GObject *object)
G_OBJECT_CLASS (gtd_provider_local_parent_class)->finalize (object);
}
-static void
-gtd_provider_local_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtdProvider *provider = GTD_PROVIDER (object);
-
- switch (prop_id)
- {
- case PROP_DEFAULT_TASKLIST:
- g_value_set_object (value, gtd_provider_local_get_default_task_list (provider));
- break;
-
- case PROP_DESCRIPTION:
- g_value_set_string (value, gtd_provider_local_get_description (provider));
- break;
-
- case PROP_ENABLED:
- g_value_set_boolean (value, gtd_provider_local_get_enabled (provider));
- break;
-
- case PROP_ICON:
- g_value_set_object (value, gtd_provider_local_get_icon (provider));
- break;
-
- case PROP_ID:
- g_value_set_string (value, gtd_provider_local_get_id (provider));
- break;
-
- case PROP_NAME:
- g_value_set_string (value, gtd_provider_local_get_name (provider));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- }
-}
-
-static void
-gtd_provider_local_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtdProvider *provider = GTD_PROVIDER (object);
-
- switch (prop_id)
- {
- case PROP_DEFAULT_TASKLIST:
- gtd_provider_local_set_default_task_list (provider, g_value_get_object (value));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- }
-}
-
static gboolean
gtd_provider_local_should_load_source (GtdProviderEds *provider,
ESource *source)
@@ -310,18 +136,15 @@ gtd_provider_local_class_init (GtdProviderLocalClass *klass)
GtdProviderEdsClass *eds_class = GTD_PROVIDER_EDS_CLASS (klass);
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ eds_class->get_id = gtd_provider_local_get_id;
+ eds_class->get_name = gtd_provider_local_get_name;
+ eds_class->get_description = gtd_provider_local_get_description;
+ eds_class->get_enabled = gtd_provider_local_get_enabled;
+ eds_class->get_icon = gtd_provider_local_get_icon;
+ eds_class->create_source = gtd_provider_local_create_source;
eds_class->should_load_source = gtd_provider_local_should_load_source;
object_class->finalize = gtd_provider_local_finalize;
- object_class->get_property = gtd_provider_local_get_property;
- object_class->set_property = gtd_provider_local_set_property;
-
- g_object_class_override_property (object_class, PROP_DEFAULT_TASKLIST, "default-task-list");
- g_object_class_override_property (object_class, PROP_DESCRIPTION, "description");
- g_object_class_override_property (object_class, PROP_ENABLED, "enabled");
- g_object_class_override_property (object_class, PROP_ICON, "icon");
- g_object_class_override_property (object_class, PROP_ID, "id");
- g_object_class_override_property (object_class, PROP_NAME, "name");
}
static void
@@ -329,6 +152,13 @@ gtd_provider_local_init (GtdProviderLocal *self)
{
gtd_object_set_ready (GTD_OBJECT (self), TRUE);
- /* icon */
self->icon = G_ICON (g_themed_icon_new_with_default_fallbacks ("computer-symbolic"));
}
+
+GtdProviderLocal*
+gtd_provider_local_new (ESourceRegistry *registry)
+{
+ return g_object_new (GTD_TYPE_PROVIDER_LOCAL,
+ "registry", registry,
+ NULL);
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]