[gnome-todo] manager: add api to create lists



commit ce9d7e6390b2a747f94cea303d0daabfb6d8a994
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Tue Aug 25 20:44:20 2015 -0300

    manager: add api to create lists

 src/gtd-manager.c |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/gtd-manager.h |    4 +++
 2 files changed, 61 insertions(+), 0 deletions(-)
---
diff --git a/src/gtd-manager.c b/src/gtd-manager.c
index aa2d8e3..b9e1140 100644
--- a/src/gtd-manager.c
+++ b/src/gtd-manager.c
@@ -425,6 +425,30 @@ task_list_removal_finished (GtdManager  *manager,
 }
 
 static void
+gtd_manager__remote_create_source_finished (GObject      *source,
+                                            GAsyncResult *result,
+                                            gpointer      user_data)
+{
+  GError *error;
+
+  error = NULL;
+
+  e_source_remote_create_finish (E_SOURCE (source),
+                                 result,
+                                 &error);
+
+  if (error)
+    {
+      g_warning ("%s: %s: %s",
+                 G_STRFUNC,
+                 _("Error creating task list"),
+                 error->message);
+
+      g_clear_error (&error);
+    }
+}
+
+static void
 gtd_manager__remote_delete_finished (GObject      *source,
                                      GAsyncResult *result,
                                      gpointer      user_data)
@@ -1360,6 +1384,39 @@ gtd_manager_update_task (GtdManager *manager,
 }
 
 /**
+ * gtd_manager_create_task_list:
+ *
+ *
+ * Creates a new task list at the given source.
+ *
+ * Returns:
+ */
+void
+gtd_manager_create_task_list (GtdManager  *manager,
+                              GtdTaskList *list)
+{
+  GtdManagerPrivate *priv;
+  ESource *source;
+  ESource *parent;
+
+  g_return_if_fail (GTD_IS_MANAGER (manager));
+  g_return_if_fail (GTD_IS_TASK_LIST (list));
+  g_return_if_fail (gtd_task_list_get_source (list));
+
+  priv = manager->priv;
+  source = gtd_task_list_get_source (list);
+  parent = e_source_registry_ref_source (priv->source_registry, e_source_get_parent (source));
+
+  e_source_remote_create (parent,
+                          source,
+                          NULL,
+                          (GAsyncReadyCallback) gtd_manager__remote_create_source_finished,
+                          manager);
+
+  g_object_unref (parent);
+}
+
+/**
  * gtd_manager_remove_task_list:
  * @manager: a #GtdManager
  * @list: a #GtdTaskList
diff --git a/src/gtd-manager.h b/src/gtd-manager.h
index 1587b3e..444ced2 100644
--- a/src/gtd-manager.h
+++ b/src/gtd-manager.h
@@ -41,6 +41,10 @@ GList*                  gtd_manager_get_task_lists        (GtdManager
 
 GList*                  gtd_manager_get_storage_locations (GtdManager           *manager);
 
+/* Task lists */
+void                    gtd_manager_create_task_list      (GtdManager           *manager,
+                                                           GtdTaskList          *list);
+
 void                    gtd_manager_remove_task_list      (GtdManager           *manager,
                                                            GtdTaskList          *list);
 


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