[gnome-todo] manager: Add a providers model



commit 3dad645793dde5822f88d1eaef525f48f8f33619
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Tue May 5 12:55:57 2020 -0300

    manager: Add a providers model

 src/engine/gtd-manager.c | 20 ++++++++++++++++++++
 src/engine/gtd-manager.h |  2 ++
 2 files changed, 22 insertions(+)
---
diff --git a/src/engine/gtd-manager.c b/src/engine/gtd-manager.c
index 13a6656..89f9a46 100644
--- a/src/engine/gtd-manager.c
+++ b/src/engine/gtd-manager.c
@@ -59,6 +59,7 @@ struct _GtdManager
 
   GListModel         *inbox_model;
   GListModel         *lists_model;
+  GListModel         *providers_model;
   GListModel         *tasks_model;
   GListModel         *unarchived_tasks_model;
 
@@ -512,6 +513,7 @@ gtd_manager_init (GtdManager *self)
                                                                           filter_achived_lists_func,
                                                                           self,
                                                                           NULL);
+  self->providers_model = (GListModel*) gtd_list_store_new (GTD_TYPE_PROVIDER);
 }
 
 /**
@@ -574,6 +576,7 @@ gtd_manager_add_provider (GtdManager  *self,
   GTD_ENTRY;
 
   self->providers = g_list_prepend (self->providers, provider);
+  gtd_list_store_append (GTD_LIST_STORE (self->providers_model), provider);
 
   /* Add lists */
   lists = gtd_provider_get_task_lists (provider);
@@ -615,6 +618,7 @@ gtd_manager_remove_provider (GtdManager  *self,
   GTD_ENTRY;
 
   self->providers = g_list_remove (self->providers, provider);
+  gtd_list_store_remove (GTD_LIST_STORE (self->providers_model), provider);
 
   /* Remove lists */
   lists = gtd_provider_get_task_lists (provider);
@@ -886,6 +890,22 @@ gtd_manager_get_inbox_model (GtdManager *self)
   return self->inbox_model;
 }
 
+/**
+ * gtd_manager_get_providers_model:
+ * @self: a #GtdManager
+ *
+ * Retrieves the #GListModel containing #GtdProviders.
+ *
+ * Returns: (transfer none): a #GListModel
+ */
+GListModel*
+gtd_manager_get_providers_model (GtdManager *self)
+{
+  g_return_val_if_fail (GTD_IS_MANAGER (self), NULL);
+
+  return self->providers_model;
+}
+
 void
 gtd_manager_load_plugins (GtdManager *self)
 {
diff --git a/src/engine/gtd-manager.h b/src/engine/gtd-manager.h
index 7b46400..0b993f4 100644
--- a/src/engine/gtd-manager.h
+++ b/src/engine/gtd-manager.h
@@ -81,4 +81,6 @@ GListModel*          gtd_manager_get_tasks_model                 (GtdManager
 
 GListModel*          gtd_manager_get_inbox_model                 (GtdManager         *self);
 
+GListModel*          gtd_manager_get_providers_model             (GtdManager         *self);
+
 G_END_DECLS


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]