[gnome-calendar/calendar-management] manager: implement GcalManager::remove_source method
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar/calendar-management] manager: implement GcalManager::remove_source method
- Date: Thu, 5 Feb 2015 18:34:41 +0000 (UTC)
commit 06d0ee6f2516eaf3e25d68ef98caef3594398618
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Thu Feb 5 16:30:59 2015 -0200
manager: implement GcalManager::remove_source method
src/gcal-manager.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
src/gcal-manager.h | 3 +++
2 files changed, 50 insertions(+), 0 deletions(-)
---
diff --git a/src/gcal-manager.c b/src/gcal-manager.c
index 773e1fe..c7c216e 100644
--- a/src/gcal-manager.c
+++ b/src/gcal-manager.c
@@ -117,6 +117,10 @@ static void on_event_removed (GObject *sour
GAsyncResult *result,
gpointer user_data);
+static void on_source_removed (GObject *source_object,
+ GAsyncResult *result,
+ gpointer user_data);
+
static void remove_source (GcalManager *manager,
ESource *source);
@@ -480,6 +484,36 @@ on_event_removed (GObject *source_object,
g_object_unref (E_CAL_COMPONENT (user_data));
}
+/**
+ * on_source_removed:
+ * @source_object:
+ * @result: result of the operation
+ * @user_data: { link GcalManager} instance
+ *
+ * Called when a source is removed. Currently, it only checks for
+ * error, but a more sophisticated implementation will come in no time.
+ *
+ **/
+static void
+on_source_removed (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ GError *error;
+ error = NULL;
+
+ if (!e_source_remove_finish (E_SOURCE (source), result, &error))
+ {
+ /* FIXME: Notify the user somehow */
+ g_warning ("Error removing source: %s", error->message);
+ g_error_free (error);
+ }
+ else
+ {
+ remove_source (GCAL_MANAGER (user_data), E_SOURCE (source));
+ }
+}
+
void
remove_source (GcalManager *manager,
ESource *source)
@@ -921,6 +955,19 @@ gcal_manager_save_source (GcalManager *manager,
return result;
}
+/**
+ * gcal_manager_remove_source:
+ * @manager: a #GcalManager
+ * @source: the target #ESource
+ *
+ * Remove @source from ESourceRegistry.
+ */
+void
+gcal_manager_remove_source (GcalManager *manager,
+ ESource *source)
+{
+ e_source_remove (source, NULL, on_source_removed, manager);
+}
/**
* gcal_manager_disable_source:
diff --git a/src/gcal-manager.h b/src/gcal-manager.h
index 62e4cf2..cef2916 100644
--- a/src/gcal-manager.h
+++ b/src/gcal-manager.h
@@ -106,6 +106,9 @@ void gcal_manager_disable_source (GcalManager *manager
gboolean gcal_manager_save_source (GcalManager *manager,
ESource *source);
+void gcal_manager_remove_source (GcalManager *manager,
+ ESource *source);
+
gboolean gcal_manager_is_source_enabled (GcalManager *manager,
ESource *source);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]