1
by Sebastien Bacher
Import upstream version 1.2.1 |
1 |
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
2 |
/*
|
|
3 |
* Author:
|
|
4 |
* Nat Friedman (nat@ximian.com)
|
|
5 |
*
|
|
1.1.52
by Sebastien Bacher
Import upstream version 2.23.6 |
6 |
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
7 |
*/
|
8 |
||
9 |
#include <config.h> |
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
10 |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
11 |
#include <glib/gi18n-lib.h> |
12 |
||
1
by Sebastien Bacher
Import upstream version 1.2.1 |
13 |
#include "e-data-book-view.h" |
1.9.1
by Yves-Alexis Perez
Import upstream version 2.29.2 |
14 |
#include "e-data-book.h" |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
15 |
#include "e-book-backend.h" |
16 |
||
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
17 |
#define EDB_OPENING_ERROR e_data_book_create_error (E_DATA_BOOK_STATUS_BUSY, _("Cannot process, book backend is opening"))
|
18 |
#define EDB_NOT_OPENED_ERROR e_data_book_create_error (E_DATA_BOOK_STATUS_NOT_OPENED, NULL)
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
19 |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
20 |
#define E_BOOK_BACKEND_GET_PRIVATE(obj) \
|
21 |
(G_TYPE_INSTANCE_GET_PRIVATE \
|
|
22 |
((obj), E_TYPE_BOOK_BACKEND, EBookBackendPrivate))
|
|
23 |
||
1
by Sebastien Bacher
Import upstream version 1.2.1 |
24 |
struct _EBookBackendPrivate { |
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
25 |
ESourceRegistry *registry; |
26 |
||
1
by Sebastien Bacher
Import upstream version 1.2.1 |
27 |
GMutex *clients_mutex; |
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
28 |
GSList *clients; |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
29 |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
30 |
gboolean opening, opened, readonly, removed, online; |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
31 |
|
32 |
GMutex *views_mutex; |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
33 |
GSList *views; |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
34 |
|
35 |
gchar *cache_dir; |
|
36 |
};
|
|
37 |
||
38 |
/* Property IDs */
|
|
39 |
enum { |
|
40 |
PROP_0, |
|
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
41 |
PROP_CACHE_DIR, |
42 |
PROP_REGISTRY
|
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
43 |
};
|
44 |
||
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
45 |
G_DEFINE_TYPE (EBookBackend, e_book_backend, E_TYPE_BACKEND) |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
46 |
|
47 |
static void |
|
48 |
book_backend_set_default_cache_dir (EBookBackend *backend) |
|
49 |
{
|
|
50 |
ESource *source; |
|
51 |
const gchar *user_cache_dir; |
|
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
52 |
const gchar *uid; |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
53 |
gchar *filename; |
54 |
||
55 |
user_cache_dir = e_get_user_cache_dir (); |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
56 |
source = e_backend_get_source (E_BACKEND (backend)); |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
57 |
|
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
58 |
uid = e_source_get_uid (source); |
59 |
g_return_if_fail (uid != NULL); |
|
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
60 |
|
61 |
filename = g_build_filename ( |
|
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
62 |
user_cache_dir, "addressbook", uid, NULL); |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
63 |
e_book_backend_set_cache_dir (backend, filename); |
64 |
g_free (filename); |
|
65 |
}
|
|
66 |
||
67 |
static void |
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
68 |
book_backend_get_backend_property (EBookBackend *backend, |
69 |
EDataBook *book, |
|
70 |
guint32 opid, |
|
71 |
GCancellable *cancellable, |
|
72 |
const gchar *prop_name) |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
73 |
{
|
74 |
g_return_if_fail (backend != NULL); |
|
75 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
76 |
g_return_if_fail (book != NULL); |
|
77 |
g_return_if_fail (prop_name != NULL); |
|
78 |
||
79 |
if (g_str_equal (prop_name, CLIENT_BACKEND_PROPERTY_OPENED)) { |
|
80 |
e_data_book_respond_get_backend_property (book, opid, NULL, e_book_backend_is_opened (backend) ? "TRUE" : "FALSE"); |
|
81 |
} else if (g_str_equal (prop_name, CLIENT_BACKEND_PROPERTY_OPENING)) { |
|
82 |
e_data_book_respond_get_backend_property (book, opid, NULL, e_book_backend_is_opening (backend) ? "TRUE" : "FALSE"); |
|
83 |
} else if (g_str_equal (prop_name, CLIENT_BACKEND_PROPERTY_ONLINE)) { |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
84 |
e_data_book_respond_get_backend_property (book, opid, NULL, e_backend_get_online (E_BACKEND (backend)) ? "TRUE" : "FALSE"); |
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
85 |
} else if (g_str_equal (prop_name, CLIENT_BACKEND_PROPERTY_READONLY)) { |
86 |
e_data_book_respond_get_backend_property (book, opid, NULL, e_book_backend_is_readonly (backend) ? "TRUE" : "FALSE"); |
|
87 |
} else if (g_str_equal (prop_name, CLIENT_BACKEND_PROPERTY_CACHE_DIR)) { |
|
88 |
e_data_book_respond_get_backend_property (book, opid, NULL, e_book_backend_get_cache_dir (backend)); |
|
89 |
} else { |
|
90 |
e_data_book_respond_get_backend_property (book, opid, e_data_book_create_error_fmt (E_DATA_BOOK_STATUS_NOT_SUPPORTED, _("Unknown book property '%s'"), prop_name), NULL); |
|
91 |
}
|
|
92 |
}
|
|
93 |
||
94 |
static void |
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
95 |
book_backend_set_backend_property (EBookBackend *backend, |
96 |
EDataBook *book, |
|
97 |
guint32 opid, |
|
98 |
GCancellable *cancellable, |
|
99 |
const gchar *prop_name, |
|
100 |
const gchar *prop_value) |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
101 |
{
|
102 |
g_return_if_fail (backend != NULL); |
|
103 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
104 |
g_return_if_fail (book != NULL); |
|
105 |
g_return_if_fail (prop_name != NULL); |
|
106 |
||
107 |
e_data_book_respond_set_backend_property (book, opid, e_data_book_create_error_fmt (E_DATA_BOOK_STATUS_NOT_SUPPORTED, _("Cannot change value of book property '%s'"), prop_name)); |
|
108 |
}
|
|
109 |
||
110 |
static void |
|
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
111 |
book_backend_set_registry (EBookBackend *backend, |
112 |
ESourceRegistry *registry) |
|
113 |
{
|
|
114 |
g_return_if_fail (E_IS_SOURCE_REGISTRY (registry)); |
|
115 |
g_return_if_fail (backend->priv->registry == NULL); |
|
116 |
||
117 |
backend->priv->registry = g_object_ref (registry); |
|
118 |
}
|
|
119 |
||
120 |
static void |
|
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
121 |
book_backend_set_property (GObject *object, |
122 |
guint property_id, |
|
123 |
const GValue *value, |
|
124 |
GParamSpec *pspec) |
|
125 |
{
|
|
126 |
switch (property_id) { |
|
127 |
case PROP_CACHE_DIR: |
|
128 |
e_book_backend_set_cache_dir ( |
|
129 |
E_BOOK_BACKEND (object), |
|
130 |
g_value_get_string (value)); |
|
131 |
return; |
|
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
132 |
|
133 |
case PROP_REGISTRY: |
|
134 |
book_backend_set_registry ( |
|
135 |
E_BOOK_BACKEND (object), |
|
136 |
g_value_get_object (value)); |
|
137 |
return; |
|
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
138 |
}
|
139 |
||
140 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); |
|
141 |
}
|
|
142 |
||
143 |
static void |
|
144 |
book_backend_get_property (GObject *object, |
|
145 |
guint property_id, |
|
146 |
GValue *value, |
|
147 |
GParamSpec *pspec) |
|
148 |
{
|
|
149 |
switch (property_id) { |
|
150 |
case PROP_CACHE_DIR: |
|
151 |
g_value_set_string ( |
|
152 |
value, e_book_backend_get_cache_dir ( |
|
153 |
E_BOOK_BACKEND (object))); |
|
154 |
return; |
|
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
155 |
|
156 |
case PROP_REGISTRY: |
|
157 |
g_value_set_object ( |
|
158 |
value, e_book_backend_get_registry ( |
|
159 |
E_BOOK_BACKEND (object))); |
|
160 |
return; |
|
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
161 |
}
|
162 |
||
163 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); |
|
164 |
}
|
|
165 |
||
166 |
static void |
|
167 |
book_backend_dispose (GObject *object) |
|
168 |
{
|
|
169 |
EBookBackendPrivate *priv; |
|
170 |
||
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
171 |
priv = E_BOOK_BACKEND_GET_PRIVATE (object); |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
172 |
|
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
173 |
if (priv->registry != NULL) { |
174 |
g_object_unref (priv->registry); |
|
175 |
priv->registry = NULL; |
|
176 |
}
|
|
177 |
||
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
178 |
if (priv->views != NULL) { |
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
179 |
g_slist_free (priv->views); |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
180 |
priv->views = NULL; |
181 |
}
|
|
182 |
||
183 |
/* Chain up to parent's dispose() method. */
|
|
184 |
G_OBJECT_CLASS (e_book_backend_parent_class)->dispose (object); |
|
185 |
}
|
|
186 |
||
187 |
static void |
|
188 |
book_backend_finalize (GObject *object) |
|
189 |
{
|
|
190 |
EBookBackendPrivate *priv; |
|
191 |
||
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
192 |
priv = E_BOOK_BACKEND_GET_PRIVATE (object); |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
193 |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
194 |
g_slist_free (priv->clients); |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
195 |
|
196 |
g_mutex_free (priv->clients_mutex); |
|
197 |
g_mutex_free (priv->views_mutex); |
|
198 |
||
199 |
g_free (priv->cache_dir); |
|
200 |
||
201 |
/* Chain up to parent's finalize() method. */
|
|
202 |
G_OBJECT_CLASS (e_book_backend_parent_class)->finalize (object); |
|
203 |
}
|
|
204 |
||
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
205 |
static gboolean |
1.1.102
by Mathieu Trudel-Lapierre
Import upstream version 3.5.5 |
206 |
book_backend_authenticate_sync (EBackend *backend, |
207 |
ESourceAuthenticator *auth, |
|
208 |
GCancellable *cancellable, |
|
209 |
GError **error) |
|
210 |
{
|
|
211 |
EBookBackend *book_backend; |
|
212 |
ESourceRegistry *registry; |
|
213 |
ESource *source; |
|
214 |
||
215 |
book_backend = E_BOOK_BACKEND (backend); |
|
216 |
registry = e_book_backend_get_registry (book_backend); |
|
217 |
source = e_backend_get_source (backend); |
|
218 |
||
219 |
return e_source_registry_authenticate_sync ( |
|
220 |
registry, source, auth, cancellable, error); |
|
221 |
}
|
|
222 |
||
223 |
static gboolean |
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
224 |
view_notify_update (EDataBookView *view, |
225 |
gpointer contact) |
|
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
226 |
{
|
227 |
e_data_book_view_notify_update (view, contact); |
|
228 |
||
229 |
return TRUE; |
|
230 |
}
|
|
231 |
||
232 |
static void |
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
233 |
book_backend_notify_update (EBookBackend *backend, |
234 |
const EContact *contact) |
|
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
235 |
{
|
236 |
e_book_backend_foreach_view (backend, view_notify_update, (gpointer) contact); |
|
237 |
}
|
|
238 |
||
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
239 |
static void |
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
240 |
e_book_backend_class_init (EBookBackendClass *class) |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
241 |
{
|
242 |
GObjectClass *object_class; |
|
1.1.102
by Mathieu Trudel-Lapierre
Import upstream version 3.5.5 |
243 |
EBackendClass *backend_class; |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
244 |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
245 |
g_type_class_add_private (class, sizeof (EBookBackendPrivate)); |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
246 |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
247 |
object_class = G_OBJECT_CLASS (class); |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
248 |
object_class->set_property = book_backend_set_property; |
249 |
object_class->get_property = book_backend_get_property; |
|
250 |
object_class->dispose = book_backend_dispose; |
|
251 |
object_class->finalize = book_backend_finalize; |
|
252 |
||
1.1.102
by Mathieu Trudel-Lapierre
Import upstream version 3.5.5 |
253 |
backend_class = E_BACKEND_CLASS (class); |
254 |
backend_class->authenticate_sync = book_backend_authenticate_sync; |
|
255 |
||
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
256 |
class->get_backend_property = book_backend_get_backend_property; |
257 |
class->set_backend_property = book_backend_set_backend_property; |
|
258 |
class->notify_update = book_backend_notify_update; |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
259 |
|
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
260 |
g_object_class_install_property ( |
261 |
object_class, |
|
262 |
PROP_CACHE_DIR, |
|
263 |
g_param_spec_string ( |
|
264 |
"cache-dir", |
|
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
265 |
"Cache Dir", |
266 |
"The backend's cache directory", |
|
267 |
NULL, |
|
268 |
G_PARAM_READWRITE | |
|
269 |
G_PARAM_STATIC_STRINGS)); |
|
270 |
||
271 |
g_object_class_install_property ( |
|
272 |
object_class, |
|
273 |
PROP_REGISTRY, |
|
274 |
g_param_spec_object ( |
|
275 |
"registry", |
|
276 |
"Registry", |
|
277 |
"Data source registry", |
|
278 |
E_TYPE_SOURCE_REGISTRY, |
|
279 |
G_PARAM_READWRITE | |
|
280 |
G_PARAM_CONSTRUCT_ONLY | |
|
281 |
G_PARAM_STATIC_STRINGS)); |
|
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
282 |
}
|
283 |
||
284 |
static void |
|
285 |
e_book_backend_init (EBookBackend *backend) |
|
286 |
{
|
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
287 |
backend->priv = E_BOOK_BACKEND_GET_PRIVATE (backend); |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
288 |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
289 |
backend->priv->clients = NULL; |
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
290 |
backend->priv->clients_mutex = g_mutex_new (); |
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
291 |
|
292 |
backend->priv->views = NULL; |
|
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
293 |
backend->priv->views_mutex = g_mutex_new (); |
294 |
}
|
|
295 |
||
296 |
/**
|
|
297 |
* e_book_backend_get_cache_dir:
|
|
298 |
* @backend: an #EBookBackend
|
|
299 |
*
|
|
300 |
* Returns the cache directory for the given backend.
|
|
301 |
*
|
|
302 |
* Returns: the cache directory for the backend
|
|
303 |
*
|
|
304 |
* Since: 2.32
|
|
305 |
**/
|
|
306 |
const gchar * |
|
307 |
e_book_backend_get_cache_dir (EBookBackend *backend) |
|
308 |
{
|
|
309 |
g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), NULL); |
|
310 |
||
311 |
return backend->priv->cache_dir; |
|
312 |
}
|
|
313 |
||
314 |
/**
|
|
315 |
* e_book_backend_set_cache_dir:
|
|
316 |
* @backend: an #EBookBackend
|
|
317 |
* @cache_dir: a local cache directory
|
|
318 |
*
|
|
319 |
* Sets the cache directory for the given backend.
|
|
320 |
*
|
|
321 |
* Note that #EBookBackend is initialized with a usable default based on
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
322 |
* the #ESource given to e_book_backend_open(). Backends should
|
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
323 |
* not override the default without good reason.
|
324 |
*
|
|
325 |
* Since: 2.32
|
|
326 |
**/
|
|
327 |
void
|
|
328 |
e_book_backend_set_cache_dir (EBookBackend *backend, |
|
329 |
const gchar *cache_dir) |
|
330 |
{
|
|
331 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
332 |
g_return_if_fail (cache_dir != NULL); |
|
333 |
||
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
334 |
if (g_strcmp0 (backend->priv->cache_dir, cache_dir) == 0) |
335 |
return; |
|
336 |
||
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
337 |
g_free (backend->priv->cache_dir); |
338 |
backend->priv->cache_dir = g_strdup (cache_dir); |
|
339 |
||
340 |
g_object_notify (G_OBJECT (backend), "cache-dir"); |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
341 |
}
|
342 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
343 |
/**
|
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
344 |
* e_book_backend_get_registry:
|
345 |
* @backend: an #EBookBackend
|
|
346 |
*
|
|
347 |
* Returns the data source registry to which #EBackend:source belongs.
|
|
348 |
*
|
|
349 |
* Returns: an #ESourceRegistry
|
|
350 |
*
|
|
351 |
* Since: 3.6
|
|
352 |
**/
|
|
353 |
ESourceRegistry * |
|
354 |
e_book_backend_get_registry (EBookBackend *backend) |
|
355 |
{
|
|
356 |
g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), NULL); |
|
357 |
||
358 |
return backend->priv->registry; |
|
359 |
}
|
|
360 |
||
361 |
/**
|
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
362 |
* e_book_backend_open:
|
363 |
* @backend: an #EBookBackend
|
|
364 |
* @book: an #EDataBook
|
|
365 |
* @opid: the ID to use for this operation
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
366 |
* @cancellable: a #GCancellable for the operation
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
367 |
* @only_if_exists: %TRUE to prevent the creation of a new book
|
368 |
*
|
|
369 |
* Executes an 'open' request specified by @opid on @book
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
370 |
* using @backend. This call might be finished
|
371 |
* with e_data_book_respond_open() or e_book_backend_respond_opened(),
|
|
372 |
* though the overall opening phase finishes only after call
|
|
373 |
* of e_book_backend_notify_opened() after which call the backend
|
|
374 |
* is either fully opened (including authentication against (remote)
|
|
375 |
* server/storage) or an error was encountered during this opening phase.
|
|
376 |
* 'opened' and 'opening' properties are updated automatically.
|
|
377 |
* The backend refuses all other operations until the opening phase is finished.
|
|
378 |
*
|
|
379 |
* The e_book_backend_notify_opened() is called either from this function
|
|
380 |
* or from e_book_backend_authenticate_user(), or after necessary steps
|
|
381 |
* initiated by these two functions.
|
|
382 |
*
|
|
383 |
* The opening phase usually works like this:
|
|
384 |
* 1) client requests open for the backend
|
|
385 |
* 2) server receives this request and calls e_book_backend_open() - the opening phase begun
|
|
386 |
* 3) either the backend is opened during this call, and notifies client
|
|
387 |
* with e_book_backend_notify_opened() about that. This is usually
|
|
388 |
* for local backends; their opening phase is finished
|
|
389 |
* 4) or the backend requires authentication, thus it notifies client
|
|
390 |
* about that with e_book_backend_notify_auth_required() and is
|
|
391 |
* waiting for credentials, which will be received from client
|
|
392 |
* by e_book_backend_authenticate_user() call. Backend's opening
|
|
393 |
* phase is still running in this case, thus it doesn't call
|
|
394 |
* e_book_backend_notify_opened() within e_book_backend_open() call.
|
|
395 |
* 5) when backend receives credentials in e_book_backend_authenticate_user()
|
|
396 |
* then it tries to authenticate against a server/storage with them
|
|
397 |
* and only after it knows result of the authentication, whether user
|
|
398 |
* was or wasn't authenticated, it notifies client with the result
|
|
399 |
* by e_book_backend_notify_opened() and it's opening phase is
|
|
400 |
* finished now. If there was no error returned then the backend is
|
|
401 |
* considered opened, otherwise it's considered closed. Use AuthenticationFailed
|
|
402 |
* error when the given credentials were rejected by the server/store, which
|
|
403 |
* will result in a re-prompt on the client side, otherwise use AuthenticationRequired
|
|
404 |
* if there was anything wrong with the given credentials. Set error's
|
|
405 |
* message to a reason for a re-prompt, it'll be shown to a user.
|
|
406 |
* 6) client checks error returned from e_book_backend_notify_opened() and
|
|
407 |
* reprompts for a password if it was AuthenticationFailed. Otherwise
|
|
408 |
* considers backend opened based on the error presence (no error means success).
|
|
409 |
*
|
|
410 |
* In any case, the call of e_book_backend_open() should be always finished
|
|
411 |
* with e_data_book_respond_open(), which has no influence on the opening phase,
|
|
412 |
* or alternatively with e_book_backend_respond_opened(). Never use authentication
|
|
413 |
* errors in e_data_book_respond_open() to notify the client the authentication is
|
|
414 |
* required, there is e_book_backend_notify_auth_required() for this.
|
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
415 |
**/
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
416 |
void
|
417 |
e_book_backend_open (EBookBackend *backend, |
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
418 |
EDataBook *book, |
419 |
guint32 opid, |
|
420 |
GCancellable *cancellable, |
|
421 |
gboolean only_if_exists) |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
422 |
{
|
423 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
424 |
g_return_if_fail (E_IS_DATA_BOOK (book)); |
|
425 |
||
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
426 |
g_mutex_lock (backend->priv->clients_mutex); |
427 |
||
428 |
if (e_book_backend_is_opened (backend)) { |
|
429 |
g_mutex_unlock (backend->priv->clients_mutex); |
|
430 |
||
431 |
e_data_book_report_readonly (book, backend->priv->readonly); |
|
432 |
e_data_book_report_online (book, backend->priv->online); |
|
433 |
||
434 |
e_book_backend_respond_opened (backend, book, opid, NULL); |
|
435 |
} else if (e_book_backend_is_opening (backend)) { |
|
436 |
g_mutex_unlock (backend->priv->clients_mutex); |
|
437 |
||
438 |
e_data_book_respond_open (book, opid, EDB_OPENING_ERROR); |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
439 |
} else { |
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
440 |
backend->priv->opening = TRUE; |
441 |
g_mutex_unlock (backend->priv->clients_mutex); |
|
442 |
||
443 |
/* Subclasses may need to call e_book_backend_get_cache_dir() in
|
|
444 |
* their open() methods, so get the "cache-dir" property
|
|
445 |
* initialized before we call the method. */
|
|
446 |
book_backend_set_default_cache_dir (backend); |
|
447 |
||
448 |
g_return_if_fail (E_BOOK_BACKEND_GET_CLASS (backend)->open != NULL); |
|
449 |
||
450 |
(* E_BOOK_BACKEND_GET_CLASS (backend)->open) (backend, book, opid, cancellable, only_if_exists); |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
451 |
}
|
452 |
}
|
|
453 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
454 |
/**
|
455 |
* e_book_backend_remove:
|
|
456 |
* @backend: an #EBookBackend
|
|
457 |
* @book: an #EDataBook
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
458 |
* @cancellable: a #GCancellable for the operation
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
459 |
* @opid: the ID to use for this operation
|
460 |
*
|
|
461 |
* Executes a 'remove' request to remove all of @backend's data,
|
|
462 |
* specified by @opid on @book.
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
463 |
* This might be finished with e_data_book_respond_remove().
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
464 |
**/
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
465 |
void
|
466 |
e_book_backend_remove (EBookBackend *backend, |
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
467 |
EDataBook *book, |
468 |
guint32 opid, |
|
469 |
GCancellable *cancellable) |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
470 |
{
|
471 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
472 |
g_return_if_fail (E_IS_DATA_BOOK (book)); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
473 |
g_return_if_fail (E_BOOK_BACKEND_GET_CLASS (backend)->remove); |
474 |
||
475 |
if (e_book_backend_is_opening (backend)) |
|
476 |
e_data_book_respond_remove (book, opid, EDB_OPENING_ERROR); |
|
477 |
else
|
|
478 |
(* E_BOOK_BACKEND_GET_CLASS (backend)->remove) (backend, book, opid, cancellable); |
|
479 |
}
|
|
480 |
||
481 |
/**
|
|
482 |
* e_book_backend_refresh:
|
|
483 |
* @backend: an #EBookBackend
|
|
484 |
* @book: an #EDataBook
|
|
485 |
* @opid: the ID to use for this operation
|
|
486 |
* @cancellable: a #GCancellable for the operation
|
|
487 |
*
|
|
488 |
* Refreshes the address book being accessed by the given backend.
|
|
489 |
* This might be finished with e_data_book_respond_refresh(),
|
|
490 |
* and it might be called as soon as possible; it doesn't mean
|
|
491 |
* that the refreshing is done after calling that, the backend
|
|
492 |
* is only notifying client whether it started the refresh process
|
|
493 |
* or not.
|
|
494 |
*
|
|
495 |
* Since: 3.2
|
|
496 |
**/
|
|
497 |
void
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
498 |
e_book_backend_refresh (EBookBackend *backend, |
499 |
EDataBook *book, |
|
500 |
guint32 opid, |
|
501 |
GCancellable *cancellable) |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
502 |
{
|
503 |
g_return_if_fail (backend != NULL); |
|
504 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
505 |
||
506 |
if (e_book_backend_is_opening (backend)) |
|
507 |
e_data_book_respond_refresh (book, opid, EDB_OPENING_ERROR); |
|
508 |
else if (!E_BOOK_BACKEND_GET_CLASS (backend)->refresh) |
|
509 |
e_data_book_respond_refresh (book, opid, e_data_book_create_error (E_DATA_BOOK_STATUS_NOT_SUPPORTED, NULL)); |
|
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
510 |
else if (!e_book_backend_is_opened (backend)) |
511 |
e_data_book_respond_refresh (book, opid, EDB_NOT_OPENED_ERROR); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
512 |
else
|
513 |
(* E_BOOK_BACKEND_GET_CLASS (backend)->refresh) (backend, book, opid, cancellable); |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
514 |
}
|
515 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
516 |
/**
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
517 |
* e_book_backend_create_contacts
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
518 |
* @backend: an #EBookBackend
|
519 |
* @book: an #EDataBook
|
|
520 |
* @opid: the ID to use for this operation
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
521 |
* @cancellable: a #GCancellable for the operation
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
522 |
* @vcards: a #GSList of vCards to add
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
523 |
*
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
524 |
* Executes a 'create contacts' request specified by @opid on @book
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
525 |
* using @backend.
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
526 |
* This might be finished with e_data_book_respond_create_contacts().
|
527 |
*
|
|
528 |
* Since: 3.4
|
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
529 |
**/
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
530 |
void
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
531 |
e_book_backend_create_contacts (EBookBackend *backend, |
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
532 |
EDataBook *book, |
533 |
guint32 opid, |
|
534 |
GCancellable *cancellable, |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
535 |
const GSList *vcards) |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
536 |
{
|
537 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
538 |
g_return_if_fail (E_IS_DATA_BOOK (book)); |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
539 |
g_return_if_fail (vcards); |
540 |
g_return_if_fail (E_BOOK_BACKEND_GET_CLASS (backend)->create_contacts); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
541 |
|
542 |
if (e_book_backend_is_opening (backend)) |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
543 |
e_data_book_respond_create_contacts (book, opid, EDB_OPENING_ERROR, NULL); |
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
544 |
else if (!e_book_backend_is_opened (backend)) |
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
545 |
e_data_book_respond_create_contacts (book, opid, EDB_NOT_OPENED_ERROR, NULL); |
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
546 |
else
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
547 |
(* E_BOOK_BACKEND_GET_CLASS (backend)->create_contacts) (backend, book, opid, cancellable, vcards); |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
548 |
}
|
549 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
550 |
/**
|
551 |
* e_book_backend_remove_contacts:
|
|
552 |
* @backend: an #EBookBackend
|
|
553 |
* @book: an #EDataBook
|
|
554 |
* @opid: the ID to use for this operation
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
555 |
* @cancellable: a #GCancellable for the operation
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
556 |
* @id_list: list of string IDs to remove
|
557 |
*
|
|
558 |
* Executes a 'remove contacts' request specified by @opid on @book
|
|
559 |
* using @backend.
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
560 |
* This might be finished with e_data_book_respond_remove_contacts().
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
561 |
**/
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
562 |
void
|
563 |
e_book_backend_remove_contacts (EBookBackend *backend, |
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
564 |
EDataBook *book, |
565 |
guint32 opid, |
|
566 |
GCancellable *cancellable, |
|
567 |
const GSList *id_list) |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
568 |
{
|
569 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
570 |
g_return_if_fail (E_IS_DATA_BOOK (book)); |
|
571 |
g_return_if_fail (id_list); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
572 |
g_return_if_fail (E_BOOK_BACKEND_GET_CLASS (backend)->remove_contacts); |
573 |
||
574 |
if (e_book_backend_is_opening (backend)) |
|
575 |
e_data_book_respond_remove_contacts (book, opid, EDB_OPENING_ERROR, NULL); |
|
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
576 |
else if (!e_book_backend_is_opened (backend)) |
577 |
e_data_book_respond_remove_contacts (book, opid, EDB_NOT_OPENED_ERROR, NULL); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
578 |
else
|
579 |
(* E_BOOK_BACKEND_GET_CLASS (backend)->remove_contacts) (backend, book, opid, cancellable, id_list); |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
580 |
}
|
581 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
582 |
/**
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
583 |
* e_book_backend_modify_contacts:
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
584 |
* @backend: an #EBookBackend
|
585 |
* @book: an #EDataBook
|
|
586 |
* @opid: the ID to use for this operation
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
587 |
* @cancellable: a #GCancellable for the operation
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
588 |
* @vcards: the VCards to update
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
589 |
*
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
590 |
* Executes a 'modify contacts' request specified by @opid on @book
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
591 |
* using @backend.
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
592 |
* This might be finished with e_data_book_respond_modify_contacts().
|
593 |
*
|
|
594 |
* Since: 3.4
|
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
595 |
**/
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
596 |
void
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
597 |
e_book_backend_modify_contacts (EBookBackend *backend, |
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
598 |
EDataBook *book, |
599 |
guint32 opid, |
|
600 |
GCancellable *cancellable, |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
601 |
const GSList *vcards) |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
602 |
{
|
603 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
604 |
g_return_if_fail (E_IS_DATA_BOOK (book)); |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
605 |
g_return_if_fail (vcards); |
606 |
g_return_if_fail (E_BOOK_BACKEND_GET_CLASS (backend)->modify_contacts); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
607 |
|
608 |
if (e_book_backend_is_opening (backend)) |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
609 |
e_data_book_respond_modify_contacts (book, opid, EDB_OPENING_ERROR, NULL); |
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
610 |
else if (!e_book_backend_is_opened (backend)) |
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
611 |
e_data_book_respond_modify_contacts (book, opid, EDB_NOT_OPENED_ERROR, NULL); |
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
612 |
else
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
613 |
(* E_BOOK_BACKEND_GET_CLASS (backend)->modify_contacts) (backend, book, opid, cancellable, vcards); |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
614 |
}
|
615 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
616 |
/**
|
617 |
* e_book_backend_get_contact:
|
|
618 |
* @backend: an #EBookBackend
|
|
619 |
* @book: an #EDataBook
|
|
620 |
* @opid: the ID to use for this operation
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
621 |
* @cancellable: a #GCancellable for the operation
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
622 |
* @id: the ID of the contact to get
|
623 |
*
|
|
624 |
* Executes a 'get contact' request specified by @opid on @book
|
|
625 |
* using @backend.
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
626 |
* This might be finished with e_data_book_respond_get_contact().
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
627 |
**/
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
628 |
void
|
629 |
e_book_backend_get_contact (EBookBackend *backend, |
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
630 |
EDataBook *book, |
631 |
guint32 opid, |
|
632 |
GCancellable *cancellable, |
|
633 |
const gchar *id) |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
634 |
{
|
635 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
636 |
g_return_if_fail (E_IS_DATA_BOOK (book)); |
|
637 |
g_return_if_fail (id); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
638 |
g_return_if_fail (E_BOOK_BACKEND_GET_CLASS (backend)->get_contact); |
639 |
||
640 |
if (e_book_backend_is_opening (backend)) |
|
641 |
e_data_book_respond_get_contact (book, opid, EDB_OPENING_ERROR, NULL); |
|
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
642 |
else if (!e_book_backend_is_opened (backend)) |
643 |
e_data_book_respond_get_contact (book, opid, EDB_NOT_OPENED_ERROR, NULL); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
644 |
else
|
645 |
(* E_BOOK_BACKEND_GET_CLASS (backend)->get_contact) (backend, book, opid, cancellable, id); |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
646 |
}
|
647 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
648 |
/**
|
649 |
* e_book_backend_get_contact_list:
|
|
650 |
* @backend: an #EBookBackend
|
|
651 |
* @book: an #EDataBook
|
|
652 |
* @opid: the ID to use for this operation
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
653 |
* @cancellable: a #GCancellable for the operation
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
654 |
* @query: the s-expression to match
|
655 |
*
|
|
656 |
* Executes a 'get contact list' request specified by @opid on @book
|
|
657 |
* using @backend.
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
658 |
* This might be finished with e_data_book_respond_get_contact_list().
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
659 |
**/
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
660 |
void
|
661 |
e_book_backend_get_contact_list (EBookBackend *backend, |
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
662 |
EDataBook *book, |
663 |
guint32 opid, |
|
664 |
GCancellable *cancellable, |
|
665 |
const gchar *query) |
|
1.11.9
by Josselin Mouette
Import upstream version 3.2.2 |
666 |
{
|
667 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
668 |
g_return_if_fail (E_IS_DATA_BOOK (book)); |
|
669 |
g_return_if_fail (query); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
670 |
g_return_if_fail (E_BOOK_BACKEND_GET_CLASS (backend)->get_contact_list); |
671 |
||
672 |
if (e_book_backend_is_opening (backend)) |
|
673 |
e_data_book_respond_get_contact_list (book, opid, EDB_OPENING_ERROR, NULL); |
|
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
674 |
else if (!e_book_backend_is_opened (backend)) |
675 |
e_data_book_respond_get_contact_list (book, opid, EDB_NOT_OPENED_ERROR, NULL); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
676 |
else
|
677 |
(* E_BOOK_BACKEND_GET_CLASS (backend)->get_contact_list) (backend, book, opid, cancellable, query); |
|
678 |
}
|
|
679 |
||
680 |
/**
|
|
681 |
* e_book_backend_get_contact_list_uids:
|
|
682 |
* @backend: an #EBookBackend
|
|
683 |
* @book: an #EDataBook
|
|
684 |
* @opid: the ID to use for this operation
|
|
685 |
* @cancellable: a #GCancellable for the operation
|
|
686 |
* @query: the s-expression to match
|
|
687 |
*
|
|
688 |
* Executes a 'get contact list uids' request specified by @opid on @book
|
|
689 |
* using @backend.
|
|
690 |
* This might be finished with e_data_book_respond_get_contact_list_uids().
|
|
691 |
*
|
|
692 |
* Since: 3.2
|
|
693 |
**/
|
|
694 |
void
|
|
695 |
e_book_backend_get_contact_list_uids (EBookBackend *backend, |
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
696 |
EDataBook *book, |
697 |
guint32 opid, |
|
698 |
GCancellable *cancellable, |
|
699 |
const gchar *query) |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
700 |
{
|
701 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
702 |
g_return_if_fail (E_IS_DATA_BOOK (book)); |
|
703 |
g_return_if_fail (query); |
|
704 |
g_return_if_fail (E_BOOK_BACKEND_GET_CLASS (backend)->get_contact_list_uids); |
|
705 |
||
706 |
if (e_book_backend_is_opening (backend)) |
|
707 |
e_data_book_respond_get_contact_list_uids (book, opid, EDB_OPENING_ERROR, NULL); |
|
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
708 |
else if (!e_book_backend_is_opened (backend)) |
709 |
e_data_book_respond_get_contact_list_uids (book, opid, EDB_NOT_OPENED_ERROR, NULL); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
710 |
else
|
711 |
(* E_BOOK_BACKEND_GET_CLASS (backend)->get_contact_list_uids) (backend, book, opid, cancellable, query); |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
712 |
}
|
713 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
714 |
/**
|
715 |
* e_book_backend_start_book_view:
|
|
716 |
* @backend: an #EBookBackend
|
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
717 |
* @view: the #EDataBookView to start
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
718 |
*
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
719 |
* Starts running the query specified by @view, emitting signals for
|
720 |
* matching contacts.
|
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
721 |
**/
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
722 |
void
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
723 |
e_book_backend_start_book_view (EBookBackend *backend, |
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
724 |
EDataBookView *view) |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
725 |
{
|
726 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
727 |
g_return_if_fail (E_IS_DATA_BOOK_VIEW (view)); |
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
728 |
g_return_if_fail (E_BOOK_BACKEND_GET_CLASS (backend)->start_book_view); |
1.10.7
by Josselin Mouette
Import upstream version 2.91.92 |
729 |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
730 |
(* E_BOOK_BACKEND_GET_CLASS (backend)->start_book_view) (backend, view); |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
731 |
}
|
732 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
733 |
/**
|
734 |
* e_book_backend_stop_book_view:
|
|
735 |
* @backend: an #EBookBackend
|
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
736 |
* @view: the #EDataBookView to stop
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
737 |
*
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
738 |
* Stops running the query specified by @view, emitting no more signals.
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
739 |
**/
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
740 |
void
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
741 |
e_book_backend_stop_book_view (EBookBackend *backend, |
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
742 |
EDataBookView *view) |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
743 |
{
|
744 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
745 |
g_return_if_fail (E_IS_DATA_BOOK_VIEW (view)); |
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
746 |
g_return_if_fail (E_BOOK_BACKEND_GET_CLASS (backend)->stop_book_view); |
1.10.7
by Josselin Mouette
Import upstream version 2.91.92 |
747 |
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
748 |
(* E_BOOK_BACKEND_GET_CLASS (backend)->stop_book_view) (backend, view); |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
749 |
}
|
750 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
751 |
/**
|
752 |
* e_book_backend_add_book_view:
|
|
753 |
* @backend: an #EBookBackend
|
|
754 |
* @view: an #EDataBookView
|
|
755 |
*
|
|
756 |
* Adds @view to @backend for querying.
|
|
757 |
**/
|
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
758 |
void
|
759 |
e_book_backend_add_book_view (EBookBackend *backend, |
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
760 |
EDataBookView *view) |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
761 |
{
|
762 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
763 |
||
764 |
g_mutex_lock (backend->priv->views_mutex); |
|
765 |
||
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
766 |
e_data_book_view_ref (view); |
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
767 |
backend->priv->views = g_slist_append (backend->priv->views, view); |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
768 |
|
769 |
g_mutex_unlock (backend->priv->views_mutex); |
|
770 |
}
|
|
771 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
772 |
/**
|
773 |
* e_book_backend_remove_book_view:
|
|
774 |
* @backend: an #EBookBackend
|
|
775 |
* @view: an #EDataBookView
|
|
776 |
*
|
|
777 |
* Removes @view from @backend.
|
|
778 |
**/
|
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
779 |
void
|
780 |
e_book_backend_remove_book_view (EBookBackend *backend, |
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
781 |
EDataBookView *view) |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
782 |
{
|
783 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
784 |
||
785 |
g_mutex_lock (backend->priv->views_mutex); |
|
786 |
||
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
787 |
backend->priv->views = g_slist_remove (backend->priv->views, view); |
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
788 |
e_data_book_view_unref (view); |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
789 |
|
790 |
g_mutex_unlock (backend->priv->views_mutex); |
|
791 |
}
|
|
792 |
||
793 |
/**
|
|
794 |
* e_book_backend_add_client:
|
|
795 |
* @backend: An addressbook backend.
|
|
796 |
* @book: the corba object representing the client connection.
|
|
797 |
*
|
|
798 |
* Adds a client to an addressbook backend.
|
|
799 |
*
|
|
1.11.3
by Yves-Alexis Perez
Import upstream version 2.30.1 |
800 |
* Returns: TRUE on success, FALSE on failure to add the client.
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
801 |
*/
|
802 |
gboolean
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
803 |
e_book_backend_add_client (EBookBackend *backend, |
804 |
EDataBook *book) |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
805 |
{
|
806 |
g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), FALSE); |
|
807 |
g_return_val_if_fail (E_IS_DATA_BOOK (book), FALSE); |
|
808 |
||
809 |
g_mutex_lock (backend->priv->clients_mutex); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
810 |
backend->priv->clients = g_slist_prepend (backend->priv->clients, book); |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
811 |
g_mutex_unlock (backend->priv->clients_mutex); |
812 |
||
813 |
return TRUE; |
|
814 |
}
|
|
815 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
816 |
/**
|
817 |
* e_book_backend_remove_client:
|
|
818 |
* @backend: an #EBookBackend
|
|
819 |
* @book: an #EDataBook to remove
|
|
820 |
*
|
|
821 |
* Removes @book from the list of @backend's clients.
|
|
822 |
**/
|
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
823 |
void
|
824 |
e_book_backend_remove_client (EBookBackend *backend, |
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
825 |
EDataBook *book) |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
826 |
{
|
827 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
828 |
g_return_if_fail (E_IS_DATA_BOOK (book)); |
|
829 |
||
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
830 |
/* Make sure the backend stays alive while holding the mutex. */
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
831 |
g_object_ref (backend); |
832 |
||
833 |
/* Disconnect */
|
|
834 |
g_mutex_lock (backend->priv->clients_mutex); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
835 |
backend->priv->clients = g_slist_remove (backend->priv->clients, book); |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
836 |
|
1.1.100
by Mathieu Trudel-Lapierre
Import upstream version 3.5.3.1 |
837 |
if (backend->priv->clients == NULL) |
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
838 |
backend->priv->opening = FALSE; |
1.1.39
by Sebastien Bacher
Import upstream version 2.21.3 |
839 |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
840 |
g_mutex_unlock (backend->priv->clients_mutex); |
841 |
||
842 |
g_object_unref (backend); |
|
843 |
}
|
|
844 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
845 |
/**
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
846 |
* e_book_backend_foreach_view:
|
847 |
* @backend: an #EBookBackend
|
|
848 |
* @callback: callback to call
|
|
849 |
* @user_data: user_data passed into the @callback
|
|
850 |
*
|
|
851 |
* Calls @callback for each known book view of this @backend.
|
|
852 |
* @callback returns %FALSE to stop further processing.
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
853 |
*
|
854 |
* Since: 3.2
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
855 |
**/
|
856 |
void
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
857 |
e_book_backend_foreach_view (EBookBackend *backend, |
858 |
gboolean (*callback) (EDataBookView *view, |
|
859 |
gpointer user_data), |
|
860 |
gpointer user_data) |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
861 |
{
|
862 |
const GSList *views; |
|
863 |
EDataBookView *view; |
|
864 |
gboolean stop = FALSE; |
|
865 |
||
866 |
g_return_if_fail (backend != NULL); |
|
867 |
g_return_if_fail (callback != NULL); |
|
868 |
||
869 |
g_mutex_lock (backend->priv->views_mutex); |
|
870 |
||
871 |
for (views = backend->priv->views; views && !stop; views = views->next) { |
|
872 |
view = E_DATA_BOOK_VIEW (views->data); |
|
873 |
stop = !callback (view, user_data); |
|
874 |
}
|
|
875 |
||
876 |
g_mutex_unlock (backend->priv->views_mutex); |
|
877 |
}
|
|
878 |
||
879 |
/**
|
|
880 |
* e_book_backend_get_book_backend_property:
|
|
881 |
* @backend: an #EBookBackend
|
|
882 |
* @book: an #EDataBook
|
|
883 |
* @opid: the ID to use for this operation
|
|
884 |
* @cancellable: a #GCancellable for the operation
|
|
885 |
* @prop_name: property name to get value of; cannot be NULL
|
|
886 |
*
|
|
887 |
* Calls the get_backend_property method on the given backend.
|
|
888 |
* This might be finished with e_data_book_respond_get_backend_property().
|
|
889 |
* Default implementation takes care of common properties and returns
|
|
890 |
* an 'unsupported' error for any unknown properties. The subclass may
|
|
891 |
* always call this default implementation for properties which fetching
|
|
892 |
* it doesn't overwrite.
|
|
893 |
*
|
|
894 |
* Since: 3.2
|
|
895 |
**/
|
|
896 |
void
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
897 |
e_book_backend_get_backend_property (EBookBackend *backend, |
898 |
EDataBook *book, |
|
899 |
guint32 opid, |
|
900 |
GCancellable *cancellable, |
|
901 |
const gchar *prop_name) |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
902 |
{
|
903 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
904 |
g_return_if_fail (E_BOOK_BACKEND_GET_CLASS (backend)->get_backend_property); |
|
905 |
||
906 |
E_BOOK_BACKEND_GET_CLASS (backend)->get_backend_property (backend, book, opid, cancellable, prop_name); |
|
907 |
}
|
|
908 |
||
909 |
/**
|
|
910 |
* e_book_backend_set_backend_property:
|
|
911 |
* @backend: an #EBookBackend
|
|
912 |
* @book: an #EDataBook
|
|
913 |
* @opid: the ID to use for this operation
|
|
914 |
* @cancellable: a #GCancellable for the operation
|
|
915 |
* @prop_name: property name to change; cannot be NULL
|
|
916 |
* @prop_value: value to set to @prop_name; cannot be NULL
|
|
917 |
*
|
|
918 |
* Calls the set_backend_property method on the given backend.
|
|
919 |
* This might be finished with e_data_book_respond_set_backend_property().
|
|
920 |
* Default implementation simply returns an 'unsupported' error.
|
|
921 |
* The subclass may always call this default implementation for properties
|
|
922 |
* which fetching it doesn't overwrite.
|
|
923 |
*
|
|
924 |
* Since: 3.2
|
|
925 |
**/
|
|
926 |
void
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
927 |
e_book_backend_set_backend_property (EBookBackend *backend, |
928 |
EDataBook *book, |
|
929 |
guint32 opid, |
|
930 |
GCancellable *cancellable, |
|
931 |
const gchar *prop_name, |
|
932 |
const gchar *prop_value) |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
933 |
{
|
934 |
g_return_if_fail (backend != NULL); |
|
935 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
936 |
g_return_if_fail (prop_name != NULL); |
|
937 |
g_return_if_fail (prop_value != NULL); |
|
938 |
g_return_if_fail (E_BOOK_BACKEND_GET_CLASS (backend)->set_backend_property != NULL); |
|
939 |
||
940 |
E_BOOK_BACKEND_GET_CLASS (backend)->set_backend_property (backend, book, opid, cancellable, prop_name, prop_value); |
|
941 |
}
|
|
942 |
||
943 |
/**
|
|
944 |
* e_book_backend_is_opened:
|
|
945 |
* @backend: an #EBookBackend
|
|
946 |
*
|
|
947 |
* Checks if @backend's storage has been opened (and
|
|
948 |
* authenticated, if necessary) and the backend itself
|
|
949 |
* is ready for accessing. This property is changed automatically
|
|
950 |
* within call of e_book_backend_notify_opened().
|
|
951 |
*
|
|
952 |
* Returns: %TRUE if fully opened, %FALSE otherwise.
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
953 |
*
|
954 |
* Since: 3.2
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
955 |
**/
|
956 |
gboolean
|
|
957 |
e_book_backend_is_opened (EBookBackend *backend) |
|
958 |
{
|
|
959 |
g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), FALSE); |
|
960 |
||
961 |
return backend->priv->opened; |
|
962 |
}
|
|
963 |
||
964 |
/**
|
|
965 |
* e_book_backend_is_opening:
|
|
966 |
* @backend: an #EBookBackend
|
|
967 |
*
|
|
968 |
* Checks if @backend is processing its opening phase, which
|
|
969 |
* includes everything since the e_book_backend_open() call,
|
|
970 |
* through authentication, up to e_book_backend_notify_opened().
|
|
971 |
* This property is managed automatically and the backend deny
|
|
972 |
* every operation except of cancel and authenticate_user while
|
|
973 |
* it is being opening.
|
|
974 |
*
|
|
975 |
* Returns: %TRUE if opening phase is in the effect, %FALSE otherwise.
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
976 |
*
|
977 |
* Since: 3.2
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
978 |
**/
|
979 |
gboolean
|
|
980 |
e_book_backend_is_opening (EBookBackend *backend) |
|
981 |
{
|
|
982 |
g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), FALSE); |
|
983 |
||
984 |
return backend->priv->opening; |
|
985 |
}
|
|
986 |
||
987 |
/**
|
|
988 |
* e_book_backend_is_readonly:
|
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
989 |
* @backend: an #EBookBackend
|
990 |
*
|
|
991 |
* Checks if we can write to @backend.
|
|
992 |
*
|
|
1.11.3
by Yves-Alexis Perez
Import upstream version 2.30.1 |
993 |
* Returns: %TRUE if writeable, %FALSE if not.
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
994 |
*
|
995 |
* Since: 3.2
|
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
996 |
**/
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
997 |
gboolean
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
998 |
e_book_backend_is_readonly (EBookBackend *backend) |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
999 |
{
|
1000 |
g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), FALSE); |
|
1.1.39
by Sebastien Bacher
Import upstream version 2.21.3 |
1001 |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1002 |
return backend->priv->readonly; |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1003 |
}
|
1004 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
1005 |
/**
|
1006 |
* e_book_backend_is_removed:
|
|
1007 |
* @backend: an #EBookBackend
|
|
1008 |
*
|
|
1009 |
* Checks if @backend has been removed from its physical storage.
|
|
1010 |
*
|
|
1.11.3
by Yves-Alexis Perez
Import upstream version 2.30.1 |
1011 |
* Returns: %TRUE if @backend has been removed, %FALSE otherwise.
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
1012 |
**/
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1013 |
gboolean
|
1014 |
e_book_backend_is_removed (EBookBackend *backend) |
|
1015 |
{
|
|
1016 |
g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), FALSE); |
|
1.1.39
by Sebastien Bacher
Import upstream version 2.21.3 |
1017 |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1018 |
return backend->priv->removed; |
1019 |
}
|
|
1020 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
1021 |
/**
|
1022 |
* e_book_backend_set_is_removed:
|
|
1023 |
* @backend: an #EBookBackend
|
|
1024 |
* @is_removed: A flag indicating whether the backend's storage was removed
|
|
1025 |
*
|
|
1026 |
* Sets the flag indicating whether @backend was removed to @is_removed.
|
|
1027 |
* Meant to be used by backend implementations.
|
|
1028 |
**/
|
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1029 |
void
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1030 |
e_book_backend_set_is_removed (EBookBackend *backend, |
1031 |
gboolean is_removed) |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1032 |
{
|
1033 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
1.1.39
by Sebastien Bacher
Import upstream version 2.21.3 |
1034 |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1035 |
backend->priv->removed = is_removed; |
1036 |
}
|
|
1037 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
1038 |
/**
|
1.1.28
by Sebastien Bacher
Import upstream version 1.11.2 |
1039 |
* e_book_backend_sync:
|
1040 |
* @backend: an #EBookbackend
|
|
1041 |
*
|
|
1042 |
* Write all pending data to disk. This is only required under special
|
|
1043 |
* circumstances (for example before a live backup) and should not be used in
|
|
1044 |
* normal use.
|
|
1.11.3
by Yves-Alexis Perez
Import upstream version 2.30.1 |
1045 |
*
|
1046 |
* Since: 1.12
|
|
1.1.28
by Sebastien Bacher
Import upstream version 1.11.2 |
1047 |
*/
|
1.1.39
by Sebastien Bacher
Import upstream version 2.21.3 |
1048 |
void
|
1.1.28
by Sebastien Bacher
Import upstream version 1.11.2 |
1049 |
e_book_backend_sync (EBookBackend *backend) |
1050 |
{
|
|
1051 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
1.1.39
by Sebastien Bacher
Import upstream version 2.21.3 |
1052 |
|
1.10.7
by Josselin Mouette
Import upstream version 2.91.92 |
1053 |
g_object_ref (backend); |
1054 |
||
1.1.28
by Sebastien Bacher
Import upstream version 1.11.2 |
1055 |
if (E_BOOK_BACKEND_GET_CLASS (backend)->sync) |
1056 |
(* E_BOOK_BACKEND_GET_CLASS (backend)->sync) (backend); |
|
1.10.7
by Josselin Mouette
Import upstream version 2.91.92 |
1057 |
|
1058 |
g_object_unref (backend); |
|
1.1.28
by Sebastien Bacher
Import upstream version 1.11.2 |
1059 |
}
|
1060 |
||
1061 |
/**
|
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1062 |
* e_book_backend_notify_update:
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
1063 |
* @backend: an #EBookBackend
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1064 |
* @contact: a new or modified contact
|
1065 |
*
|
|
1066 |
* Notifies all of @backend's book views about the new or modified
|
|
1067 |
* contacts @contact.
|
|
1068 |
*
|
|
1.10.8
by Jordi Mallach
Import upstream version 3.4.1 |
1069 |
* e_data_book_respond_create_contacts() and e_data_book_respond_modify_contacts() call this
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1070 |
* function for you. You only need to call this from your backend if
|
1071 |
* contacts are created or modified by another (non-PAS-using) client.
|
|
1072 |
**/
|
|
1073 |
void
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1074 |
e_book_backend_notify_update (EBookBackend *backend, |
1075 |
const EContact *contact) |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1076 |
{
|
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
1077 |
E_BOOK_BACKEND_GET_CLASS (backend)->notify_update (backend, contact); |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1078 |
}
|
1079 |
||
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1080 |
static gboolean |
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1081 |
view_notify_remove (EDataBookView *view, |
1082 |
gpointer id) |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1083 |
{
|
1084 |
e_data_book_view_notify_remove (view, id); |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1085 |
|
1086 |
return TRUE; |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1087 |
}
|
1088 |
||
1089 |
/**
|
|
1090 |
* e_book_backend_notify_remove:
|
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
1091 |
* @backend: an #EBookBackend
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1092 |
* @id: a contact id
|
1093 |
*
|
|
1094 |
* Notifies all of @backend's book views that the contact with UID
|
|
1095 |
* @id has been removed.
|
|
1096 |
*
|
|
1097 |
* e_data_book_respond_remove_contacts() calls this function for you. You
|
|
1098 |
* only need to call this from your backend if contacts are removed by
|
|
1099 |
* another (non-PAS-using) client.
|
|
1100 |
**/
|
|
1101 |
void
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1102 |
e_book_backend_notify_remove (EBookBackend *backend, |
1103 |
const gchar *id) |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1104 |
{
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1105 |
e_book_backend_foreach_view (backend, view_notify_remove, (gpointer) id); |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1106 |
}
|
1107 |
||
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1108 |
static gboolean |
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1109 |
view_notify_complete (EDataBookView *view, |
1110 |
gpointer unused) |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1111 |
{
|
1.1.82
by Mathieu Trudel-Lapierre
Import upstream version 2.32.0 |
1112 |
e_data_book_view_notify_complete (view, NULL /* SUCCESS */); |
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1113 |
|
1114 |
return TRUE; |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1115 |
}
|
1116 |
||
1117 |
/**
|
|
1118 |
* e_book_backend_notify_complete:
|
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
1119 |
* @backend: an #EBookbackend
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1120 |
*
|
1121 |
* Notifies all of @backend's book views that the current set of
|
|
1122 |
* notifications is complete; use this after a series of
|
|
1123 |
* e_book_backend_notify_update() and e_book_backend_notify_remove() calls.
|
|
1124 |
**/
|
|
1125 |
void
|
|
1126 |
e_book_backend_notify_complete (EBookBackend *backend) |
|
1127 |
{
|
|
1128 |
e_book_backend_foreach_view (backend, view_notify_complete, NULL); |
|
1129 |
}
|
|
1130 |
||
1131 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
1132 |
/**
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1133 |
* e_book_backend_notify_error:
|
1134 |
* @backend: an #EBookBackend
|
|
1135 |
* @message: an error message
|
|
1136 |
*
|
|
1137 |
* Notifies each backend listener about an error. This is meant to be used
|
|
1138 |
* for cases where is no GError return possibility, to notify user about
|
|
1139 |
* an issue.
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1140 |
*
|
1141 |
* Since: 3.2
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1142 |
**/
|
1143 |
void
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1144 |
e_book_backend_notify_error (EBookBackend *backend, |
1145 |
const gchar *message) |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1146 |
{
|
1147 |
EBookBackendPrivate *priv; |
|
1148 |
GSList *clients; |
|
1149 |
||
1150 |
priv = backend->priv; |
|
1151 |
||
1152 |
g_mutex_lock (priv->clients_mutex); |
|
1153 |
||
1154 |
for (clients = priv->clients; clients != NULL; clients = g_slist_next (clients)) |
|
1155 |
e_data_book_report_error (E_DATA_BOOK (clients->data), message); |
|
1156 |
||
1157 |
g_mutex_unlock (priv->clients_mutex); |
|
1158 |
}
|
|
1159 |
||
1160 |
/**
|
|
1161 |
* e_book_backend_notify_readonly:
|
|
1162 |
* @backend: an #EBookBackend
|
|
1163 |
* @is_readonly: flag indicating readonly status
|
|
1164 |
*
|
|
1165 |
* Notifies all backend's clients about the current readonly state.
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1166 |
*
|
1167 |
* Since: 3.2
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1168 |
**/
|
1169 |
void
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1170 |
e_book_backend_notify_readonly (EBookBackend *backend, |
1171 |
gboolean is_readonly) |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1172 |
{
|
1173 |
EBookBackendPrivate *priv; |
|
1174 |
GSList *clients; |
|
1175 |
||
1176 |
priv = backend->priv; |
|
1177 |
priv->readonly = is_readonly; |
|
1178 |
g_mutex_lock (priv->clients_mutex); |
|
1179 |
||
1180 |
for (clients = priv->clients; clients != NULL; clients = g_slist_next (clients)) |
|
1181 |
e_data_book_report_readonly (E_DATA_BOOK (clients->data), is_readonly); |
|
1182 |
||
1183 |
g_mutex_unlock (priv->clients_mutex); |
|
1184 |
||
1185 |
}
|
|
1186 |
||
1187 |
/**
|
|
1188 |
* e_book_backend_notify_online:
|
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
1189 |
* @backend: an #EBookBackend
|
1190 |
* @is_online: flag indicating whether @backend is connected and online
|
|
1191 |
*
|
|
1192 |
* Notifies clients of @backend's connection status indicated by @is_online.
|
|
1193 |
* Meant to be used by backend implementations.
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1194 |
*
|
1195 |
* Since: 3.2
|
|
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
1196 |
**/
|
1.1.39
by Sebastien Bacher
Import upstream version 2.21.3 |
1197 |
void
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1198 |
e_book_backend_notify_online (EBookBackend *backend, |
1199 |
gboolean is_online) |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1200 |
{
|
1201 |
EBookBackendPrivate *priv; |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1202 |
GSList *clients; |
1.1.39
by Sebastien Bacher
Import upstream version 2.21.3 |
1203 |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1204 |
priv = backend->priv; |
1.1.32
by Sebastien Bacher
Import upstream version 1.11.6 |
1205 |
priv->online = is_online; |
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1206 |
g_mutex_lock (priv->clients_mutex); |
1.1.39
by Sebastien Bacher
Import upstream version 2.21.3 |
1207 |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1208 |
for (clients = priv->clients; clients != NULL; clients = g_slist_next (clients)) |
1209 |
e_data_book_report_online (E_DATA_BOOK (clients->data), is_online); |
|
1
by Sebastien Bacher
Import upstream version 1.2.1 |
1210 |
|
1211 |
g_mutex_unlock (priv->clients_mutex); |
|
1212 |
}
|
|
1213 |
||
1.1.1
by Daniel Holbach
Import upstream version 1.4.1 |
1214 |
/**
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1215 |
* e_book_backend_notify_opened:
|
1216 |
* @backend: an #EBookBackend
|
|
1217 |
* @error: a #GError corresponding to the error encountered during
|
|
1218 |
* the opening phase. Use %NULL for success. The @error is freed
|
|
1219 |
* automatically if not %NULL.
|
|
1220 |
*
|
|
1221 |
* Notifies clients that @backend finished its opening phase.
|
|
1222 |
* See e_book_backend_open() for more information how the opening
|
|
1223 |
* phase works. Calling this function changes 'opening' property,
|
|
1224 |
* same as 'opened'. 'opening' is set to %FALSE and the backend
|
|
1225 |
* is considered 'opened' only if the @error is %NULL.
|
|
1226 |
*
|
|
1227 |
* See also: e_book_backend_respond_opened()
|
|
1228 |
*
|
|
1229 |
* Note: The @error is freed automatically if not %NULL.
|
|
1230 |
*
|
|
1231 |
* Meant to be used by backend implementations.
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1232 |
*
|
1233 |
* Since: 3.2
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1234 |
**/
|
1235 |
void
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1236 |
e_book_backend_notify_opened (EBookBackend *backend, |
1237 |
GError *error) |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1238 |
{
|
1239 |
EBookBackendPrivate *priv; |
|
1240 |
GSList *clients; |
|
1241 |
||
1242 |
priv = backend->priv; |
|
1243 |
g_mutex_lock (priv->clients_mutex); |
|
1244 |
||
1245 |
priv->opening = FALSE; |
|
1246 |
priv->opened = error == NULL; |
|
1247 |
||
1248 |
for (clients = priv->clients; clients != NULL; clients = g_slist_next (clients)) |
|
1249 |
e_data_book_report_opened (E_DATA_BOOK (clients->data), error); |
|
1250 |
||
1251 |
g_mutex_unlock (priv->clients_mutex); |
|
1252 |
||
1253 |
if (error) |
|
1254 |
g_error_free (error); |
|
1255 |
}
|
|
1256 |
||
1257 |
/**
|
|
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
1258 |
* e_book_backend_notify_property_changed:
|
1259 |
* @backend: an #EBookBackend
|
|
1260 |
* @prop_name: property name, which changed
|
|
1261 |
* @prop_value: new property value
|
|
1262 |
*
|
|
1263 |
* Notifies clients about property value change.
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1264 |
*
|
1265 |
* Since: 3.2
|
|
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
1266 |
**/
|
1267 |
void
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1268 |
e_book_backend_notify_property_changed (EBookBackend *backend, |
1269 |
const gchar *prop_name, |
|
1270 |
const gchar *prop_value) |
|
1.1.91
by Mathieu Trudel-Lapierre
Import upstream version 3.1.5 |
1271 |
{
|
1272 |
EBookBackendPrivate *priv; |
|
1273 |
GSList *clients; |
|
1274 |
||
1275 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
1276 |
g_return_if_fail (prop_name != NULL); |
|
1277 |
g_return_if_fail (*prop_name != '\0'); |
|
1278 |
g_return_if_fail (prop_value != NULL); |
|
1279 |
||
1280 |
priv = backend->priv; |
|
1281 |
g_mutex_lock (priv->clients_mutex); |
|
1282 |
||
1283 |
for (clients = priv->clients; clients != NULL; clients = g_slist_next (clients)) |
|
1284 |
e_data_book_report_backend_property_changed (E_DATA_BOOK (clients->data), prop_name, prop_value); |
|
1285 |
||
1286 |
g_mutex_unlock (priv->clients_mutex); |
|
1287 |
}
|
|
1288 |
||
1289 |
/**
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1290 |
* e_book_backend_respond_opened:
|
1291 |
* @backend: an #EBookBackend
|
|
1292 |
* @book: an #EDataBook
|
|
1293 |
* @opid: an operation ID
|
|
1294 |
* @error: result error; can be %NULL, if it isn't then it's automatically freed
|
|
1295 |
*
|
|
1296 |
* This is a replacement for e_data_book_respond_open() for cases where
|
|
1297 |
* the finish of 'open' method call also finishes backend opening phase.
|
|
1.1.89
by Mathieu Trudel-Lapierre
Import upstream version 3.1.3.1 |
1298 |
* This function covers calling of both e_book_backend_notify_opened()
|
1299 |
* and e_data_book_respond_open() with the same @error.
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1300 |
*
|
1301 |
* See e_book_backend_open() for more details how the opening phase works.
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1302 |
*
|
1303 |
* Since: 3.2
|
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1304 |
**/
|
1305 |
void
|
|
1.1.92
by Mathieu Trudel-Lapierre
Import upstream version 3.1.91 |
1306 |
e_book_backend_respond_opened (EBookBackend *backend, |
1307 |
EDataBook *book, |
|
1308 |
guint32 opid, |
|
1309 |
GError *error) |
|
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1310 |
{
|
1311 |
GError *copy = NULL; |
|
1312 |
||
1313 |
g_return_if_fail (backend != NULL); |
|
1314 |
g_return_if_fail (E_IS_BOOK_BACKEND (backend)); |
|
1315 |
g_return_if_fail (book != NULL); |
|
1316 |
g_return_if_fail (opid != 0); |
|
1317 |
||
1318 |
if (error) |
|
1319 |
copy = g_error_copy (error); |
|
1320 |
||
1.1.89
by Mathieu Trudel-Lapierre
Import upstream version 3.1.3.1 |
1321 |
e_book_backend_notify_opened (backend, copy); |
1.1.88
by Mathieu Trudel-Lapierre
Import upstream version 3.1.2 |
1322 |
e_data_book_respond_open (book, opid, error); |
1323 |
}
|