[evolution-data-server] Add e_book_backend_list_views().



commit 698ea69da9f95f75c7dcd493ed1acbc24e7a7f59
Author: Matthew Barnes <mbarnes redhat com>
Date:   Sun Oct 7 11:02:53 2012 -0400

    Add e_book_backend_list_views().
    
    Alternative to e_book_backend_foreach_view().

 addressbook/libedata-book/e-book-backend.c         |   39 ++++++++++++++++++++
 addressbook/libedata-book/e-book-backend.h         |    1 +
 .../libedata-book/libedata-book-sections.txt       |    1 +
 3 files changed, 41 insertions(+), 0 deletions(-)
---
diff --git a/addressbook/libedata-book/e-book-backend.c b/addressbook/libedata-book/e-book-backend.c
index 28ec05e..e2e653f 100644
--- a/addressbook/libedata-book/e-book-backend.c
+++ b/addressbook/libedata-book/e-book-backend.c
@@ -824,6 +824,45 @@ e_book_backend_remove_client (EBookBackend *backend,
 }
 
 /**
+ * e_book_backend_list_views:
+ * @backend: an #EBookBackend
+ *
+ * Returns a list of #EDataBookView instances added with
+ * e_book_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 book views
+ *
+ * Since: 3.8
+ **/
+GList *
+e_book_backend_list_views (EBookBackend *backend)
+{
+	GList *list;
+
+	g_return_val_if_fail (E_IS_BOOK_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_book_backend_foreach_view:
  * @backend: an #EBookBackend
  * @callback: callback to call
diff --git a/addressbook/libedata-book/e-book-backend.h b/addressbook/libedata-book/e-book-backend.h
index 32b4d0c..fcdafd9 100644
--- a/addressbook/libedata-book/e-book-backend.h
+++ b/addressbook/libedata-book/e-book-backend.h
@@ -305,6 +305,7 @@ void		e_book_backend_add_view		(EBookBackend *backend,
 						 EDataBookView *view);
 void		e_book_backend_remove_view	(EBookBackend *backend,
 						 EDataBookView *view);
+GList *		e_book_backend_list_views	(EBookBackend *backend);
 void		e_book_backend_foreach_view	(EBookBackend *backend,
 						 gboolean (*callback) (EDataBookView *view,
 						                       gpointer user_data),
diff --git a/docs/reference/addressbook/libedata-book/libedata-book-sections.txt b/docs/reference/addressbook/libedata-book/libedata-book-sections.txt
index e8c3507..8fa4904 100644
--- a/docs/reference/addressbook/libedata-book/libedata-book-sections.txt
+++ b/docs/reference/addressbook/libedata-book/libedata-book-sections.txt
@@ -35,6 +35,7 @@ e_book_backend_start_view
 e_book_backend_stop_view
 e_book_backend_add_view
 e_book_backend_remove_view
+e_book_backend_list_views
 e_book_backend_foreach_view
 e_book_backend_notify_update
 e_book_backend_notify_remove



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