[evolution-data-server] Add e_source_registry_list_enabled().
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Add e_source_registry_list_enabled().
- Date: Sun, 17 Mar 2013 13:42:34 +0000 (UTC)
commit 402f3d481a36dcb964ac6a9899fd0f2331f3d472
Author: Matthew Barnes <mbarnes redhat com>
Date: Sat Mar 9 18:46:52 2013 -0500
Add e_source_registry_list_enabled().
Similar to e_source_registry_list_sources(), but returns only enabled
sources according to e_source_registry_check_enabled().
.../libedataserver/libedataserver-sections.txt | 1 +
libedataserver/e-source-registry.c | 49 ++++++++++++++++++++
libedataserver/e-source-registry.h | 2 +
3 files changed, 52 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/libedataserver/libedataserver-sections.txt
b/docs/reference/libedataserver/libedataserver-sections.txt
index 821ebcd..f29ae98 100644
--- a/docs/reference/libedataserver/libedataserver-sections.txt
+++ b/docs/reference/libedataserver/libedataserver-sections.txt
@@ -853,6 +853,7 @@ e_source_registry_create_sources
e_source_registry_create_sources_finish
e_source_registry_ref_source
e_source_registry_list_sources
+e_source_registry_list_enabled
e_source_registry_find_extension
e_source_registry_check_enabled
e_source_registry_build_display_tree
diff --git a/libedataserver/e-source-registry.c b/libedataserver/e-source-registry.c
index a2dc1dd..6c4f2fd 100644
--- a/libedataserver/e-source-registry.c
+++ b/libedataserver/e-source-registry.c
@@ -2431,6 +2431,55 @@ e_source_registry_list_sources (ESourceRegistry *registry,
}
/**
+ * e_source_registry_list_enabled:
+ * @registry: an #ESourceRegistry
+ * @extension_name: (allow-none): an extension name, or %NULL
+ *
+ * Similar to e_source_registry_list_sources(), but returns only enabled
+ * sources according to e_source_registry_check_enabled().
+ *
+ * The sources 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: (element-type ESource) (transfer full): a sorted list of sources
+ *
+ * Since: 3.10
+ **/
+GList *
+e_source_registry_list_enabled (ESourceRegistry *registry,
+ const gchar *extension_name)
+{
+ GList *list, *link;
+ GQueue trash = G_QUEUE_INIT;
+
+ g_return_val_if_fail (E_IS_SOURCE_REGISTRY (registry), NULL);
+
+ list = e_source_registry_list_sources (registry, extension_name);
+
+ for (link = list; link != NULL; link = g_list_next (link)) {
+ ESource *source = E_SOURCE (link->data);
+
+ if (!e_source_registry_check_enabled (registry, source)) {
+ g_queue_push_tail (&trash, link);
+ g_object_unref (source);
+ }
+ }
+
+ /* We do want pop_head() here, not pop_head_link(). */
+ while ((link = g_queue_pop_head (&trash)) != NULL)
+ list = g_list_delete_link (list, link);
+
+ return list;
+}
+
+/**
* e_source_registry_find_extension:
* @registry: an #ESourceRegistry
* @source: an #ESource
diff --git a/libedataserver/e-source-registry.h b/libedataserver/e-source-registry.h
index 1c15f5c..b6eefc9 100644
--- a/libedataserver/e-source-registry.h
+++ b/libedataserver/e-source-registry.h
@@ -139,6 +139,8 @@ ESource * e_source_registry_ref_source (ESourceRegistry *registry,
const gchar *uid);
GList * e_source_registry_list_sources (ESourceRegistry *registry,
const gchar *extension_name);
+GList * e_source_registry_list_enabled (ESourceRegistry *registry,
+ const gchar *extension_name);
ESource * e_source_registry_find_extension
(ESourceRegistry *registry,
ESource *source,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]