[evolution-data-server] Add e_cal_backend_list_views().
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Add e_cal_backend_list_views().
- Date: Sun, 7 Oct 2012 22:42:14 +0000 (UTC)
commit 3df9b0ab2e7e9169ff23b9dd9c6579608772eca5
Author: Matthew Barnes <mbarnes redhat com>
Date: Sun Oct 7 11:51:11 2012 -0400
Add e_cal_backend_list_views().
Alternative to e_cal_backend_foreach_view().
calendar/libedata-cal/e-cal-backend.c | 39 ++++++++++++++++++++
calendar/libedata-cal/e-cal-backend.h | 1 +
.../libedata-cal/libedata-cal-sections.txt | 1 +
3 files changed, 41 insertions(+), 0 deletions(-)
---
diff --git a/calendar/libedata-cal/e-cal-backend.c b/calendar/libedata-cal/e-cal-backend.c
index f0d2937..1f78b35 100644
--- a/calendar/libedata-cal/e-cal-backend.c
+++ b/calendar/libedata-cal/e-cal-backend.c
@@ -759,6 +759,45 @@ e_cal_backend_remove_view (ECalBackend *backend,
}
/**
+ * e_cal_backend_list_views:
+ * @backend: an #ECalBackend
+ *
+ * Returns a list of #ECalBookView instances added with
+ * e_cal_backend_add_view().
+ *
+ * The views returned in the list are referenced for thread-safety.
+ * They must each be unreferenced with g_object_unref() when finished
+ * with them. Free the returned list itself with g_list_free().
+ *
+ * An easy way to free the list properly in one step is as follows:
+ *
+ * |[
+ * g_list_free_full (list, g_object_unref);
+ * ]|
+ *
+ * Returns: a list of cal views
+ *
+ * Since: 3.8
+ **/
+GList *
+e_cal_backend_list_views (ECalBackend *backend)
+{
+ GList *list;
+
+ g_return_val_if_fail (E_IS_CAL_BACKEND (backend), NULL);
+
+ g_mutex_lock (backend->priv->views_mutex);
+
+ /* XXX Use g_list_copy_deep() once we require GLib >= 2.34. */
+ list = g_list_copy (backend->priv->views);
+ g_list_foreach (list, (GFunc) g_object_ref, NULL);
+
+ g_mutex_unlock (backend->priv->views_mutex);
+
+ return list;
+}
+
+/**
* e_cal_backend_foreach_view:
* @backend: an #ECalBackend
* @callback: callback to call
diff --git a/calendar/libedata-cal/e-cal-backend.h b/calendar/libedata-cal/e-cal-backend.h
index 8aa5dcf..37d6136 100644
--- a/calendar/libedata-cal/e-cal-backend.h
+++ b/calendar/libedata-cal/e-cal-backend.h
@@ -290,6 +290,7 @@ void e_cal_backend_add_view (ECalBackend *backend,
EDataCalView *view);
void e_cal_backend_remove_view (ECalBackend *backend,
EDataCalView *view);
+GList * e_cal_backend_list_views (ECalBackend *backend);
void e_cal_backend_foreach_view (ECalBackend *backend,
gboolean (*callback) (EDataCalView *view,
gpointer user_data),
diff --git a/docs/reference/calendar/libedata-cal/libedata-cal-sections.txt b/docs/reference/calendar/libedata-cal/libedata-cal-sections.txt
index 2c8ef6f..57520e4 100644
--- a/docs/reference/calendar/libedata-cal/libedata-cal-sections.txt
+++ b/docs/reference/calendar/libedata-cal/libedata-cal-sections.txt
@@ -25,6 +25,7 @@ e_cal_backend_add_client
e_cal_backend_remove_client
e_cal_backend_add_view
e_cal_backend_remove_view
+e_cal_backend_list_views
e_cal_backend_foreach_view
e_cal_backend_set_notification_proxy
e_cal_backend_get_backend_property
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]