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



commit c25935607ee765bd8d391dd3fd92e98bad435924
Author: Matthew Barnes <mbarnes redhat com>
Date:   Mon Jun 11 14:22:02 2012 -0400

    Add e_collection_backend_get_cache_dir().
    
    Returns the UID-based cache directory for an ECollectionBackend.
    
    This will tie into EServerSideSource's "write-directory" property.

 .../reference/libebackend/libebackend-sections.txt |    1 +
 libebackend/e-collection-backend.c                 |   37 +++++++++++++++++++-
 libebackend/e-collection-backend.h                 |    2 +
 3 files changed, 39 insertions(+), 1 deletions(-)
---
diff --git a/docs/reference/libebackend/libebackend-sections.txt b/docs/reference/libebackend/libebackend-sections.txt
index 271e31d..4619a18 100644
--- a/docs/reference/libebackend/libebackend-sections.txt
+++ b/docs/reference/libebackend/libebackend-sections.txt
@@ -114,6 +114,7 @@ e_backend_factory_get_type
 ECollectionBackend
 e_collection_backend_new_child
 e_collection_backend_ref_server
+e_collection_backend_get_cache_dir
 e_collection_backend_list_calendar_sources
 e_collection_backend_list_contacts_sources
 e_collection_backend_list_mail_sources
diff --git a/libebackend/e-collection-backend.c b/libebackend/e-collection-backend.c
index 4aacd3b..caa9445 100644
--- a/libebackend/e-collection-backend.c
+++ b/libebackend/e-collection-backend.c
@@ -54,6 +54,8 @@ struct _ECollectionBackendPrivate {
 	GWeakRef server;
 	GQueue children;
 
+	gchar *cache_dir;
+
 	/* Remembers memory-only data source UIDs
 	 * based on a server-assigned resource ID. */
 	gchar *collection_filename;
@@ -463,6 +465,8 @@ collection_backend_constructed (GObject *object)
 	ESourceRegistryServer *server;
 	ESource *source;
 	GNode *node;
+	const gchar *collection_uid;
+	const gchar *user_cache_dir;
 	gulong handler_id;
 
 	backend = E_COLLECTION_BACKEND (object);
@@ -471,11 +475,20 @@ collection_backend_constructed (GObject *object)
 	G_OBJECT_CLASS (e_collection_backend_parent_class)->
 		constructed (object);
 
+	source = e_backend_get_source (E_BACKEND (backend));
+
 	collection_backend_load_collection_file (backend);
 
+	/* Determine the backend's cache directory. */
+
+	user_cache_dir = e_get_user_cache_dir ();
+	collection_uid = e_source_get_uid (source);
+	backend->priv->cache_dir = g_build_filename (
+		user_cache_dir, "sources", collection_uid, NULL);
+	g_mkdir_with_parents (backend->priv->cache_dir, 0700);
+
 	/* Emit "child-added" signals for the children we already have. */
 
-	source = e_backend_get_source (E_BACKEND (backend));
 	node = e_server_side_source_get_node (E_SERVER_SIDE_SOURCE (source));
 	node = g_node_first_child (node);
 
@@ -704,6 +717,28 @@ e_collection_backend_ref_server (ECollectionBackend *backend)
 }
 
 /**
+ * e_collection_backend_get_cache_dir:
+ * @backend: an #ECollectionBackend
+ *
+ * Returns the private cache directory path for @backend, which is named
+ * after the #ESource:uid of @backend's collection #EBackend:source.
+ *
+ * The cache directory is meant to store key files for backend-created
+ * data sources.  See also: e_server_side_source_set_write_directory()
+ *
+ * Returns: the cache directory for @backend
+ *
+ * Since: 3.6
+ **/
+const gchar *
+e_collection_backend_get_cache_dir (ECollectionBackend *backend)
+{
+	g_return_val_if_fail (E_IS_COLLECTION_BACKEND (backend), NULL);
+
+	return backend->priv->cache_dir;
+}
+
+/**
  * e_collection_backend_list_calendar_sources:
  * @backend: an #ECollectionBackend
  *
diff --git a/libebackend/e-collection-backend.h b/libebackend/e-collection-backend.h
index 169864d..6670480 100644
--- a/libebackend/e-collection-backend.h
+++ b/libebackend/e-collection-backend.h
@@ -85,6 +85,8 @@ ESource *	e_collection_backend_new_child	(ECollectionBackend *backend,
 						 const gchar *resource_id);
 struct _ESourceRegistryServer *
 		e_collection_backend_ref_server	(ECollectionBackend *backend);
+const gchar *	e_collection_backend_get_cache_dir
+						(ECollectionBackend *backend);
 GList *		e_collection_backend_list_calendar_sources
 						(ECollectionBackend *backend);
 GList *		e_collection_backend_list_contacts_sources



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