[evolution-data-server/wip/mcrha/libical-glib] Add operation-flags to some calendar operations
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/wip/mcrha/libical-glib] Add operation-flags to some calendar operations
- Date: Thu, 28 Feb 2019 13:00:48 +0000 (UTC)
commit 6a5ef0c7a5b12f4578d240a3d2b81bf09b779b9d
Author: Milan Crha <mcrha redhat com>
Date: Thu Feb 28 13:59:24 2019 +0100
Add operation-flags to some calendar operations
These can influence the behavior in the future, like when being used
by the issue number 59. This is only a preparation for it, to not
change API too many times.
.../backends/caldav/e-cal-backend-caldav.c | 3 +
.../backends/contacts/e-cal-backend-contacts.c | 3 +
src/calendar/backends/file/e-cal-backend-file.c | 5 +
.../backends/gtasks/e-cal-backend-gtasks.c | 2 +
.../backends/weather/e-cal-backend-weather.c | 3 +-
src/calendar/libecal/e-cal-client.c | 99 ++++++--
src/calendar/libecal/e-cal-client.h | 18 ++
src/calendar/libecal/e-cal-enums.h | 35 ++-
src/calendar/libecal/e-cal-util.c | 56 +++++
src/calendar/libecal/e-cal-util.h | 6 +
src/calendar/libecal/e-reminder-watcher.c | 1 +
src/calendar/libedata-cal/e-cal-backend-sync.c | 54 +++--
src/calendar/libedata-cal/e-cal-backend-sync.h | 12 +
src/calendar/libedata-cal/e-cal-backend.c | 60 ++++-
src/calendar/libedata-cal/e-cal-backend.h | 30 ++-
src/calendar/libedata-cal/e-cal-cache.c | 253 +++++++++++++++++----
src/calendar/libedata-cal/e-cal-cache.h | 22 +-
src/calendar/libedata-cal/e-cal-meta-backend.c | 104 +++++----
src/calendar/libedata-cal/e-cal-meta-backend.h | 4 +
src/calendar/libedata-cal/e-data-cal.c | 15 +-
src/libebackend/e-backend-enums.h | 22 --
src/libedataserver/e-source-enums.h | 22 ++
.../org.gnome.evolution.dataserver.Calendar.xml | 6 +
tests/libecal/test-cal-client-bulk-methods.c | 16 +-
tests/libecal/test-cal-client-create-object.c | 4 +-
.../libecal/test-cal-client-get-attachment-uris.c | 2 +-
tests/libecal/test-cal-client-get-free-busy.c | 2 +-
tests/libecal/test-cal-client-get-object-list.c | 2 +-
tests/libecal/test-cal-client-get-revision.c | 4 +-
tests/libecal/test-cal-client-get-view.c | 6 +-
tests/libecal/test-cal-client-modify-object.c | 6 +-
tests/libecal/test-cal-client-receive-objects.c | 4 +-
tests/libecal/test-cal-client-refresh.c | 2 +-
tests/libecal/test-cal-client-remove-object.c | 8 +-
tests/libecal/test-cal-client-revision-view.c | 6 +-
tests/libecal/test-cal-client-send-objects.c | 4 +-
tests/libedata-cal/test-cal-cache-intervals.c | 6 +-
tests/libedata-cal/test-cal-cache-offline.c | 89 ++++++--
tests/libedata-cal/test-cal-cache-utils.c | 2 +-
tests/libedata-cal/test-cal-meta-backend.c | 128 ++++++-----
40 files changed, 850 insertions(+), 276 deletions(-)
---
diff --git a/src/calendar/backends/caldav/e-cal-backend-caldav.c
b/src/calendar/backends/caldav/e-cal-backend-caldav.c
index 3039a4413..47e1d71eb 100644
--- a/src/calendar/backends/caldav/e-cal-backend-caldav.c
+++ b/src/calendar/backends/caldav/e-cal-backend-caldav.c
@@ -617,6 +617,7 @@ ecb_caldav_search_changes_cb (ECalCache *cal_cache,
const gchar *revision,
const gchar *object,
const gchar *extra,
+ guint32 custom_flags,
EOfflineState offline_state,
gpointer user_data)
{
@@ -1221,6 +1222,7 @@ ecb_caldav_save_component_sync (ECalMetaBackend *meta_backend,
EConflictResolution conflict_resolution,
const GSList *instances,
const gchar *extra,
+ guint32 opflags,
gchar **out_new_uid,
gchar **out_new_extra,
GCancellable *cancellable,
@@ -1348,6 +1350,7 @@ ecb_caldav_remove_component_sync (ECalMetaBackend *meta_backend,
const gchar *uid,
const gchar *extra,
const gchar *object,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
diff --git a/src/calendar/backends/contacts/e-cal-backend-contacts.c
b/src/calendar/backends/contacts/e-cal-backend-contacts.c
index 3be8e7c04..4b5666be5 100644
--- a/src/calendar/backends/contacts/e-cal-backend-contacts.c
+++ b/src/calendar/backends/contacts/e-cal-backend-contacts.c
@@ -1154,6 +1154,7 @@ e_cal_backend_contacts_receive_objects (ECalBackendSync *backend,
EDataCal *cal,
GCancellable *cancellable,
const gchar *calobj,
+ guint32 opflags,
GError **perror)
{
g_propagate_error (perror, EDC_ERROR (PermissionDenied));
@@ -1164,6 +1165,7 @@ e_cal_backend_contacts_send_objects (ECalBackendSync *backend,
EDataCal *cal,
GCancellable *cancellable,
const gchar *calobj,
+ guint32 opflags,
GSList **users,
gchar **modified_calobj,
GError **perror)
@@ -1400,6 +1402,7 @@ e_cal_backend_contacts_create_objects (ECalBackendSync *backend,
EDataCal *cal,
GCancellable *cancellable,
const GSList *calobjs,
+ guint32 opflags,
GSList **uids,
GSList **new_components,
GError **perror)
diff --git a/src/calendar/backends/file/e-cal-backend-file.c b/src/calendar/backends/file/e-cal-backend-file.c
index 3f3a0aa69..1a5f7a045 100644
--- a/src/calendar/backends/file/e-cal-backend-file.c
+++ b/src/calendar/backends/file/e-cal-backend-file.c
@@ -2259,6 +2259,7 @@ e_cal_backend_file_create_objects (ECalBackendSync *backend,
EDataCal *cal,
GCancellable *cancellable,
const GSList *in_calobjs,
+ guint32 opflags,
GSList **uids,
GSList **new_components,
GError **error)
@@ -2438,6 +2439,7 @@ e_cal_backend_file_modify_objects (ECalBackendSync *backend,
GCancellable *cancellable,
const GSList *calobjs,
ECalObjModType mod,
+ guint32 opflags,
GSList **old_components,
GSList **new_components,
GError **error)
@@ -3042,6 +3044,7 @@ e_cal_backend_file_remove_objects (ECalBackendSync *backend,
GCancellable *cancellable,
const GSList *ids,
ECalObjModType mod,
+ guint32 opflags,
GSList **old_components,
GSList **new_components,
GError **error)
@@ -3367,6 +3370,7 @@ e_cal_backend_file_receive_objects (ECalBackendSync *backend,
EDataCal *cal,
GCancellable *cancellable,
const gchar *calobj,
+ guint32 opflags,
GError **error)
{
ESourceRegistry *registry;
@@ -3673,6 +3677,7 @@ e_cal_backend_file_send_objects (ECalBackendSync *backend,
EDataCal *cal,
GCancellable *cancellable,
const gchar *calobj,
+ guint32 opflags,
GSList **users,
gchar **modified_calobj,
GError **perror)
diff --git a/src/calendar/backends/gtasks/e-cal-backend-gtasks.c
b/src/calendar/backends/gtasks/e-cal-backend-gtasks.c
index 26b22edbf..cfa5abdbc 100644
--- a/src/calendar/backends/gtasks/e-cal-backend-gtasks.c
+++ b/src/calendar/backends/gtasks/e-cal-backend-gtasks.c
@@ -867,6 +867,7 @@ ecb_gtasks_save_component_sync (ECalMetaBackend *meta_backend,
EConflictResolution conflict_resolution,
const GSList *instances, /* ECalComponent * */
const gchar *extra,
+ guint32 opflags,
gchar **out_new_uid,
gchar **out_new_extra,
GCancellable *cancellable,
@@ -961,6 +962,7 @@ ecb_gtasks_remove_component_sync (ECalMetaBackend *meta_backend,
const gchar *uid,
const gchar *extra,
const gchar *object,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
diff --git a/src/calendar/backends/weather/e-cal-backend-weather.c
b/src/calendar/backends/weather/e-cal-backend-weather.c
index 4bd7532aa..f24029813 100644
--- a/src/calendar/backends/weather/e-cal-backend-weather.c
+++ b/src/calendar/backends/weather/e-cal-backend-weather.c
@@ -133,7 +133,7 @@ static void
put_component_to_store (ECalBackendWeather *cb,
ECalComponent *comp)
{
- e_cal_cache_put_component (cb->priv->cache, comp, NULL, E_CACHE_IS_ONLINE, NULL, NULL);
+ e_cal_cache_put_component (cb->priv->cache, comp, NULL, 0, E_CACHE_IS_ONLINE, NULL, NULL);
}
static gint
@@ -732,6 +732,7 @@ e_cal_backend_weather_receive_objects (ECalBackendSync *backend,
EDataCal *cal,
GCancellable *cancellable,
const gchar *calobj,
+ guint32 opflags,
GError **perror)
{
g_propagate_error (perror, EDC_ERROR (PermissionDenied));
diff --git a/src/calendar/libecal/e-cal-client.c b/src/calendar/libecal/e-cal-client.c
index fe63e5316..289985c7d 100644
--- a/src/calendar/libecal/e-cal-client.c
+++ b/src/calendar/libecal/e-cal-client.c
@@ -90,6 +90,7 @@ struct _AsyncContext {
ECalObjModType mod;
time_t start;
time_t end;
+ guint32 opflags;
};
struct _SignalClosure {
@@ -4597,6 +4598,7 @@ cal_client_create_object_thread (GSimpleAsyncResult *simple,
if (!e_cal_client_create_object_sync (
E_CAL_CLIENT (source_object),
async_context->in_comp,
+ async_context->opflags,
&async_context->uid,
cancellable, &local_error)) {
@@ -4615,6 +4617,7 @@ cal_client_create_object_thread (GSimpleAsyncResult *simple,
* e_cal_client_create_object:
* @client: an #ECalClient
* @icalcomp: The component to create
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: a #GCancellable; can be %NULL
* @callback: callback to call when a result is ready
* @user_data: user data for the @callback
@@ -4630,6 +4633,7 @@ cal_client_create_object_thread (GSimpleAsyncResult *simple,
void
e_cal_client_create_object (ECalClient *client,
ICalComponent *icalcomp,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -4642,6 +4646,7 @@ e_cal_client_create_object (ECalClient *client,
async_context = g_slice_new0 (AsyncContext);
async_context->in_comp = i_cal_component_new_clone (icalcomp);
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (client), callback, user_data,
@@ -4707,6 +4712,7 @@ e_cal_client_create_object_finish (ECalClient *client,
* e_cal_client_create_object_sync:
* @client: an #ECalClient
* @icalcomp: The component to create
+ * @opflags: bit-or of #ECalOperationFlags
* @out_uid: (out) (nullable): Return value for the UID assigned to the new component
* by the calendar backend
* @cancellable: a #GCancellable; can be %NULL
@@ -4725,6 +4731,7 @@ e_cal_client_create_object_finish (ECalClient *client,
gboolean
e_cal_client_create_object_sync (ECalClient *client,
ICalComponent *icalcomp,
+ guint32 opflags,
gchar **out_uid,
GCancellable *cancellable,
GError **error)
@@ -4737,7 +4744,7 @@ e_cal_client_create_object_sync (ECalClient *client,
g_return_val_if_fail (icalcomp != NULL, FALSE);
success = e_cal_client_create_objects_sync (
- client, &link, &string_list, cancellable, error);
+ client, &link, opflags, &string_list, cancellable, error);
/* Sanity check. */
g_return_val_if_fail (
@@ -4768,6 +4775,7 @@ cal_client_create_objects_thread (GSimpleAsyncResult *simple,
if (!e_cal_client_create_objects_sync (
E_CAL_CLIENT (source_object),
async_context->comp_list,
+ async_context->opflags,
&async_context->string_list,
cancellable, &local_error)) {
@@ -4786,6 +4794,7 @@ cal_client_create_objects_thread (GSimpleAsyncResult *simple,
* e_cal_client_create_objects:
* @client: an #ECalClient
* @icalcomps: (element-type ICalComponent): The components to create
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: (allow-none): a #GCancellable; can be %NULL
* @callback: callback to call when a result is ready
* @user_data: user data for the @callback
@@ -4801,6 +4810,7 @@ cal_client_create_objects_thread (GSimpleAsyncResult *simple,
void
e_cal_client_create_objects (ECalClient *client,
GSList *icalcomps,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -4814,6 +4824,7 @@ e_cal_client_create_objects (ECalClient *client,
async_context = g_slice_new0 (AsyncContext);
async_context->comp_list = g_slist_copy_deep (
icalcomps, (GCopyFunc) i_cal_component_new_clone, NULL);
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (client), callback, user_data,
@@ -4879,6 +4890,7 @@ e_cal_client_create_objects_finish (ECalClient *client,
* e_cal_client_create_objects_sync:
* @client: an #ECalClient
* @icalcomps: (element-type ICalComponent): The components to create
+ * @opflags: bit-or of #ECalOperationFlags
* @out_uids: (out) (nullable) (element-type utf8): Return value for the UIDs assigned
* to the new components by the calendar backend
* @cancellable: (allow-none): a #GCancellable; can be %NULL
@@ -4898,6 +4910,7 @@ e_cal_client_create_objects_finish (ECalClient *client,
gboolean
e_cal_client_create_objects_sync (ECalClient *client,
GSList *icalcomps,
+ guint32 opflags,
GSList **out_uids,
GCancellable *cancellable,
GError **error)
@@ -4925,7 +4938,7 @@ e_cal_client_create_objects_sync (ECalClient *client,
e_dbus_calendar_call_create_objects_sync (
client->priv->dbus_proxy,
(const gchar * const *) strv,
- &uids, cancellable, &local_error);
+ opflags, &uids, cancellable, &local_error);
g_strfreev (strv);
@@ -4974,6 +4987,7 @@ cal_client_modify_object_thread (GSimpleAsyncResult *simple,
E_CAL_CLIENT (source_object),
async_context->in_comp,
async_context->mod,
+ async_context->opflags,
cancellable, &local_error)) {
if (!local_error)
@@ -4992,6 +5006,7 @@ cal_client_modify_object_thread (GSimpleAsyncResult *simple,
* @client: an #ECalClient
* @icalcomp: Component to modify
* @mod: Type of modification
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: a #GCancellable; can be %NULL
* @callback: callback to call when a result is ready
* @user_data: user data for the @callback
@@ -5013,6 +5028,7 @@ void
e_cal_client_modify_object (ECalClient *client,
ICalComponent *icalcomp,
ECalObjModType mod,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -5026,6 +5042,7 @@ e_cal_client_modify_object (ECalClient *client,
async_context = g_slice_new0 (AsyncContext);
async_context->in_comp = i_cal_component_new_clone (icalcomp);
async_context->mod = mod;
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (client), callback, user_data,
@@ -5078,6 +5095,7 @@ e_cal_client_modify_object_finish (ECalClient *client,
* @client: an #ECalClient
* @icalcomp: Component to modify
* @mod: Type of modification
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: a #GCancellable; can be %NULL
* @error: (out): a #GError to set an error, if any
*
@@ -5097,6 +5115,7 @@ gboolean
e_cal_client_modify_object_sync (ECalClient *client,
ICalComponent *icalcomp,
ECalObjModType mod,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
@@ -5106,7 +5125,7 @@ e_cal_client_modify_object_sync (ECalClient *client,
g_return_val_if_fail (icalcomp != NULL, FALSE);
return e_cal_client_modify_objects_sync (
- client, &link, mod, cancellable, error);
+ client, &link, mod, opflags, cancellable, error);
}
/* Helper for e_cal_client_modify_objects() */
@@ -5124,6 +5143,7 @@ cal_client_modify_objects_thread (GSimpleAsyncResult *simple,
E_CAL_CLIENT (source_object),
async_context->comp_list,
async_context->mod,
+ async_context->opflags,
cancellable, &local_error)) {
if (!local_error)
@@ -5142,6 +5162,7 @@ cal_client_modify_objects_thread (GSimpleAsyncResult *simple,
* @client: an #ECalClient
* @icalcomps: (element-type ICalComponent): Components to modify
* @mod: Type of modification
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: (allow-none): a #GCancellable; can be %NULL
* @callback: callback to call when a result is ready
* @user_data: user data for the @callback
@@ -5163,6 +5184,7 @@ void
e_cal_client_modify_objects (ECalClient *client,
GSList *icalcomps,
ECalObjModType mod,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -5177,6 +5199,7 @@ e_cal_client_modify_objects (ECalClient *client,
async_context->comp_list = g_slist_copy_deep (
icalcomps, (GCopyFunc) i_cal_component_new_clone, NULL);
async_context->mod = mod;
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (client), callback, user_data,
@@ -5229,6 +5252,7 @@ e_cal_client_modify_objects_finish (ECalClient *client,
* @client: an #ECalClient
* @icalcomps: (element-type ICalComponent): Components to modify
* @mod: Type of modification
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: (allow-none): a #GCancellable; can be %NULL
* @error: (out): a #GError to set an error, if any
*
@@ -5248,12 +5272,13 @@ gboolean
e_cal_client_modify_objects_sync (ECalClient *client,
GSList *icalcomps,
ECalObjModType mod,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
GFlagsClass *flags_class;
GFlagsValue *flags_value;
- GString *flags;
+ GString *mod_flags;
gchar **strv;
gint ii = 0;
GError *local_error = NULL;
@@ -5261,13 +5286,13 @@ e_cal_client_modify_objects_sync (ECalClient *client,
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (icalcomps != NULL, FALSE);
- flags = g_string_new (NULL);
+ mod_flags = g_string_new (NULL);
flags_class = g_type_class_ref (E_TYPE_CAL_OBJ_MOD_TYPE);
flags_value = g_flags_get_first_value (flags_class, mod);
while (flags_value != NULL) {
- if (flags->len > 0)
- g_string_append_c (flags, ':');
- g_string_append (flags, flags_value->value_nick);
+ if (mod_flags->len > 0)
+ g_string_append_c (mod_flags, ':');
+ g_string_append (mod_flags, flags_value->value_nick);
mod &= ~flags_value->value;
flags_value = g_flags_get_first_value (flags_class, mod);
}
@@ -5286,12 +5311,12 @@ e_cal_client_modify_objects_sync (ECalClient *client,
e_dbus_calendar_call_modify_objects_sync (
client->priv->dbus_proxy,
(const gchar * const *) strv,
- flags->str, cancellable, &local_error);
+ mod_flags->str, opflags, cancellable, &local_error);
g_strfreev (strv);
g_type_class_unref (flags_class);
- g_string_free (flags, TRUE);
+ g_string_free (mod_flags, TRUE);
if (local_error != NULL) {
g_dbus_error_strip_remote_error (local_error);
@@ -5318,6 +5343,7 @@ cal_client_remove_object_thread (GSimpleAsyncResult *simple,
async_context->uid,
async_context->rid,
async_context->mod,
+ async_context->opflags,
cancellable, &local_error)) {
if (!local_error)
@@ -5337,6 +5363,7 @@ cal_client_remove_object_thread (GSimpleAsyncResult *simple,
* @uid: UID of the object to remove
* @rid: Recurrence ID of the specific recurrence to remove
* @mod: Type of the removal
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: a #GCancellable; can be %NULL
* @callback: callback to call when a result is ready
* @user_data: user data for the @callback
@@ -5357,6 +5384,7 @@ e_cal_client_remove_object (ECalClient *client,
const gchar *uid,
const gchar *rid,
ECalObjModType mod,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -5372,6 +5400,7 @@ e_cal_client_remove_object (ECalClient *client,
async_context->uid = g_strdup (uid);
async_context->rid = g_strdup (rid);
async_context->mod = mod;
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (client), callback, user_data,
@@ -5425,6 +5454,7 @@ e_cal_client_remove_object_finish (ECalClient *client,
* @uid: UID of the object to remove
* @rid: Recurrence ID of the specific recurrence to remove
* @mod: Type of the removal
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: a #GCancellable; can be %NULL
* @error: (out): a #GError to set an error, if any
*
@@ -5443,6 +5473,7 @@ e_cal_client_remove_object_sync (ECalClient *client,
const gchar *uid,
const gchar *rid,
ECalObjModType mod,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
@@ -5456,7 +5487,7 @@ e_cal_client_remove_object_sync (ECalClient *client,
id = e_cal_component_id_new (uid, rid);
link = g_slist_prepend (NULL, id);
- success = e_cal_client_remove_objects_sync (client, link, mod, cancellable, error);
+ success = e_cal_client_remove_objects_sync (client, link, mod, opflags, cancellable, error);
g_slist_free_full (link, e_cal_component_id_free);
@@ -5478,6 +5509,7 @@ cal_client_remove_objects_thread (GSimpleAsyncResult *simple,
E_CAL_CLIENT (source_object),
async_context->ids_list,
async_context->mod,
+ async_context->opflags,
cancellable, &local_error)) {
if (!local_error)
@@ -5497,6 +5529,7 @@ cal_client_remove_objects_thread (GSimpleAsyncResult *simple,
* @ids: (element-type ECalComponentId): A list of #ECalComponentId objects
* identifying the objects to remove
* @mod: Type of the removal
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: a #GCancellable; can be %NULL
* @callback: callback to call when a result is ready
* @user_data: user data for the @callback
@@ -5515,6 +5548,7 @@ void
e_cal_client_remove_objects (ECalClient *client,
const GSList *ids,
ECalObjModType mod,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -5529,6 +5563,7 @@ e_cal_client_remove_objects (ECalClient *client,
async_context->ids_list = g_slist_copy_deep (
(GSList *) ids, (GCopyFunc) e_cal_component_id_copy, NULL);
async_context->mod = mod;
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (client), callback, user_data,
@@ -5582,6 +5617,7 @@ e_cal_client_remove_objects_finish (ECalClient *client,
* @ids: (element-type ECalComponentId): a list of #ECalComponentId objects
* identifying the objects to remove
* @mod: Type of the removal
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: (allow-none): a #GCancellable; can be %NULL
* @error: (out): a #GError to set an error, if any
*
@@ -5598,26 +5634,27 @@ gboolean
e_cal_client_remove_objects_sync (ECalClient *client,
const GSList *ids,
ECalObjModType mod,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
GVariantBuilder builder;
GFlagsClass *flags_class;
GFlagsValue *flags_value;
- GString *flags;
+ GString *mod_flags;
guint n_valid_uids = 0;
GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (ids != NULL, FALSE);
- flags = g_string_new (NULL);
+ mod_flags = g_string_new (NULL);
flags_class = g_type_class_ref (E_TYPE_CAL_OBJ_MOD_TYPE);
flags_value = g_flags_get_first_value (flags_class, mod);
while (flags_value != NULL) {
- if (flags->len > 0)
- g_string_append_c (flags, ':');
- g_string_append (flags, flags_value->value_nick);
+ if (mod_flags->len > 0)
+ g_string_append_c (mod_flags, ':');
+ g_string_append (mod_flags, flags_value->value_nick);
mod &= ~flags_value->value;
flags_value = g_flags_get_first_value (flags_class, mod);
}
@@ -5668,13 +5705,13 @@ e_cal_client_remove_objects_sync (ECalClient *client,
e_dbus_calendar_call_remove_objects_sync (
client->priv->dbus_proxy,
g_variant_builder_end (&builder),
- flags->str, cancellable, &local_error);
+ mod_flags->str, opflags, cancellable, &local_error);
} else {
g_variant_builder_clear (&builder);
}
g_type_class_unref (flags_class);
- g_string_free (flags, TRUE);
+ g_string_free (mod_flags, TRUE);
if (local_error != NULL) {
g_dbus_error_strip_remote_error (local_error);
@@ -5699,6 +5736,7 @@ cal_client_receive_objects_thread (GSimpleAsyncResult *simple,
if (!e_cal_client_receive_objects_sync (
E_CAL_CLIENT (source_object),
async_context->in_comp,
+ async_context->opflags,
cancellable, &local_error)) {
if (!local_error)
@@ -5716,6 +5754,7 @@ cal_client_receive_objects_thread (GSimpleAsyncResult *simple,
* e_cal_client_receive_objects:
* @client: an #ECalClient
* @icalcomp: An #ICalComponent
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: a #GCancellable; can be %NULL
* @callback: callback to call when a result is ready
* @user_data: user data for the @callback
@@ -5732,6 +5771,7 @@ cal_client_receive_objects_thread (GSimpleAsyncResult *simple,
void
e_cal_client_receive_objects (ECalClient *client,
ICalComponent *icalcomp,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -5744,6 +5784,7 @@ e_cal_client_receive_objects (ECalClient *client,
async_context = g_slice_new0 (AsyncContext);
async_context->in_comp = i_cal_component_new_clone (icalcomp);
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (client), callback, user_data,
@@ -5795,6 +5836,7 @@ e_cal_client_receive_objects_finish (ECalClient *client,
* e_cal_client_receive_objects_sync:
* @client: an #ECalClient
* @icalcomp: An #ICalComponent
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: a #GCancellable; can be %NULL
* @error: (out): a #GError to set an error, if any
*
@@ -5809,6 +5851,7 @@ e_cal_client_receive_objects_finish (ECalClient *client,
gboolean
e_cal_client_receive_objects_sync (ECalClient *client,
ICalComponent *icalcomp,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
@@ -5822,7 +5865,7 @@ e_cal_client_receive_objects_sync (ECalClient *client,
utf8_ical_string = e_util_utf8_make_valid (ical_string);
e_dbus_calendar_call_receive_objects_sync (
- client->priv->dbus_proxy, utf8_ical_string,
+ client->priv->dbus_proxy, utf8_ical_string, opflags,
cancellable, &local_error);
g_free (utf8_ical_string);
@@ -5851,6 +5894,7 @@ cal_client_send_objects_thread (GSimpleAsyncResult *simple,
if (!e_cal_client_send_objects_sync (
E_CAL_CLIENT (source_object),
async_context->in_comp,
+ async_context->opflags,
&async_context->string_list,
&async_context->out_comp,
cancellable, &local_error)) {
@@ -5870,6 +5914,7 @@ cal_client_send_objects_thread (GSimpleAsyncResult *simple,
* e_cal_client_send_objects:
* @client: an #ECalClient
* @icalcomp: An #ICalComponent to be sent
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: a #GCancellable; can be %NULL
* @callback: callback to call when a result is ready
* @user_data: user data for the @callback
@@ -5884,6 +5929,7 @@ cal_client_send_objects_thread (GSimpleAsyncResult *simple,
void
e_cal_client_send_objects (ECalClient *client,
ICalComponent *icalcomp,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -5896,6 +5942,7 @@ e_cal_client_send_objects (ECalClient *client,
async_context = g_slice_new0 (AsyncContext);
async_context->in_comp = i_cal_component_new_clone (icalcomp);
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (client), callback, user_data,
@@ -5972,6 +6019,7 @@ e_cal_client_send_objects_finish (ECalClient *client,
* e_cal_client_send_objects_sync:
* @client: an #ECalClient
* @icalcomp: An #ICalComponent to be sent
+ * @opflags: bit-or of #ECalOperationFlags
* @out_users: (out) (transfer full) (element-type utf8): List of users to send the
* @out_modified_icalcomp to
* @out_modified_icalcomp: (out) (transfer full): Return value for the #ICalComponent to be sent
@@ -5992,6 +6040,7 @@ e_cal_client_send_objects_finish (ECalClient *client,
gboolean
e_cal_client_send_objects_sync (ECalClient *client,
ICalComponent *icalcomp,
+ guint32 opflags,
GSList **out_users,
ICalComponent **out_modified_icalcomp,
GCancellable *cancellable,
@@ -6012,8 +6061,8 @@ e_cal_client_send_objects_sync (ECalClient *client,
utf8_ical_string = e_util_utf8_make_valid (ical_string);
e_dbus_calendar_call_send_objects_sync (
- client->priv->dbus_proxy, utf8_ical_string, &users,
- &out_ical_string, cancellable, &local_error);
+ client->priv->dbus_proxy, utf8_ical_string, opflags,
+ &users, &out_ical_string, cancellable, &local_error);
g_free (utf8_ical_string);
g_free (ical_string);
@@ -6277,6 +6326,7 @@ cal_client_discard_alarm_thread (GSimpleAsyncResult *simple,
async_context->uid,
async_context->rid,
async_context->auid,
+ async_context->opflags,
cancellable, &local_error)) {
if (!local_error)
@@ -6296,6 +6346,7 @@ cal_client_discard_alarm_thread (GSimpleAsyncResult *simple,
* @uid: Unique identifier for a calendar component
* @rid: Recurrence identifier
* @auid: Alarm identifier to discard
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: a #GCancellable; can be %NULL
* @callback: callback to call when a result is ready
* @user_data: user data for the @callback
@@ -6311,6 +6362,7 @@ e_cal_client_discard_alarm (ECalClient *client,
const gchar *uid,
const gchar *rid,
const gchar *auid,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -6327,6 +6379,7 @@ e_cal_client_discard_alarm (ECalClient *client,
async_context->uid = g_strdup (uid);
async_context->rid = g_strdup (rid);
async_context->auid = g_strdup (auid);
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (client), callback, user_data,
@@ -6380,6 +6433,7 @@ e_cal_client_discard_alarm_finish (ECalClient *client,
* @uid: Unique identifier for a calendar component
* @rid: Recurrence identifier
* @auid: Alarm identifier to discard
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: a #GCancellable; can be %NULL
* @error: (out): a #GError to set an error, if any
*
@@ -6394,6 +6448,7 @@ e_cal_client_discard_alarm_sync (ECalClient *client,
const gchar *uid,
const gchar *rid,
const gchar *auid,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
@@ -6415,7 +6470,7 @@ e_cal_client_discard_alarm_sync (ECalClient *client,
e_dbus_calendar_call_discard_alarm_sync (
client->priv->dbus_proxy,
- utf8_uid, utf8_rid, utf8_auid,
+ utf8_uid, utf8_rid, utf8_auid, opflags,
cancellable, &local_error);
g_free (utf8_uid);
diff --git a/src/calendar/libecal/e-cal-client.h b/src/calendar/libecal/e-cal-client.h
index ca7678922..c1b17d2ec 100644
--- a/src/calendar/libecal/e-cal-client.h
+++ b/src/calendar/libecal/e-cal-client.h
@@ -326,6 +326,7 @@ gboolean e_cal_client_get_free_busy_sync (ECalClient *client,
GError **error);
void e_cal_client_create_object (ECalClient *client,
ICalComponent *icalcomp,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -336,11 +337,13 @@ gboolean e_cal_client_create_object_finish
GError **error);
gboolean e_cal_client_create_object_sync (ECalClient *client,
ICalComponent *icalcomp,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
gchar **out_uid,
GCancellable *cancellable,
GError **error);
void e_cal_client_create_objects (ECalClient *client,
GSList *icalcomps, /* ICalComponent * */
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -352,12 +355,14 @@ gboolean e_cal_client_create_objects_finish
gboolean e_cal_client_create_objects_sync
(ECalClient *client,
GSList *icalcomps, /* ICalComponent * */
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GSList **out_uids, /* gchar * */
GCancellable *cancellable,
GError **error);
void e_cal_client_modify_object (ECalClient *client,
ICalComponent *icalcomp,
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -368,11 +373,13 @@ gboolean e_cal_client_modify_object_finish
gboolean e_cal_client_modify_object_sync (ECalClient *client,
ICalComponent *icalcomp,
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GError **error);
void e_cal_client_modify_objects (ECalClient *client,
GSList *icalcomps, /* ICalComponent * */
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -384,12 +391,14 @@ gboolean e_cal_client_modify_objects_sync
(ECalClient *client,
GSList *icalcomps, /* ICalComponent * */
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GError **error);
void e_cal_client_remove_object (ECalClient *client,
const gchar *uid,
const gchar *rid,
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -401,11 +410,13 @@ gboolean e_cal_client_remove_object_sync (ECalClient *client,
const gchar *uid,
const gchar *rid,
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GError **error);
void e_cal_client_remove_objects (ECalClient *client,
const GSList *ids, /* ECalComponentId * */
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -417,10 +428,12 @@ gboolean e_cal_client_remove_objects_sync
(ECalClient *client,
const GSList *ids, /* ECalComponentId * */
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GError **error);
void e_cal_client_receive_objects (ECalClient *client,
ICalComponent *icalcomp,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -431,10 +444,12 @@ gboolean e_cal_client_receive_objects_finish
gboolean e_cal_client_receive_objects_sync
(ECalClient *client,
ICalComponent *icalcomp,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GError **error);
void e_cal_client_send_objects (ECalClient *client,
ICalComponent *icalcomp,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -446,6 +461,7 @@ gboolean e_cal_client_send_objects_finish
GError **error);
gboolean e_cal_client_send_objects_sync (ECalClient *client,
ICalComponent *icalcomp,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GSList **out_users, /* gchar * */
ICalComponent **out_modified_icalcomp,
GCancellable *cancellable,
@@ -473,6 +489,7 @@ void e_cal_client_discard_alarm (ECalClient *client,
const gchar *uid,
const gchar *rid,
const gchar *auid,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -484,6 +501,7 @@ gboolean e_cal_client_discard_alarm_sync (ECalClient *client,
const gchar *uid,
const gchar *rid,
const gchar *auid,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GError **error);
void e_cal_client_get_view (ECalClient *client,
diff --git a/src/calendar/libecal/e-cal-enums.h b/src/calendar/libecal/e-cal-enums.h
index d1ea0226d..18af5dd26 100644
--- a/src/calendar/libecal/e-cal-enums.h
+++ b/src/calendar/libecal/e-cal-enums.h
@@ -196,12 +196,45 @@ typedef enum {
*
* Since: 3.30
**/
-typedef enum {
+typedef enum { /*< flags >*/
E_CAL_RECUR_DESCRIBE_RECURRENCE_FLAG_NONE = 0,
E_CAL_RECUR_DESCRIBE_RECURRENCE_FLAG_PREFIXED = (1 << 0),
E_CAL_RECUR_DESCRIBE_RECURRENCE_FLAG_FALLBACK = (1 << 1)
} ECalRecurDescribeRecurrenceFlags;
+/**
+ * ECalOperationFlags:
+ * @E_CAL_OPERATION_FLAG_NONE: no operation flags defined
+ * @E_CAL_OPERATION_FLAG_CONFLICT_FAIL: conflict resolution mode, to fail and do not
+ * do any changes, when a conflict is detected
+ * @E_CAL_OPERATION_FLAG_CONFLICT_USE_NEWER: conflict resolution mode, to use newer
+ * of the local and the server side data, when a conflict is detected
+ * @E_CAL_OPERATION_FLAG_CONFLICT_KEEP_SERVER: conflict resolution mode, to use
+ * the server data (and local changed), when a conflict is detected
+ * @E_CAL_OPERATION_FLAG_CONFLICT_KEEP_LOCAL: conflict resolution mode, to use
+ * local data (and always overwrite server data), when a conflict is detected
+ * @E_CAL_OPERATION_FLAG_CONFLICT_WRITE_COPY: conflict resolution mode, to create
+ * a copy of the data, when a conflict is detected
+ * @E_CAL_OPERATION_FLAG_DISABLE_ITIP_MESSAGE: request to disable send of an iTip
+ * message by the server; this works only for servers which support iTip handling
+ *
+ * Calendar operation flags, to specify behavior in certain situations. The conflict
+ * resolution mode flags cannot be combined together, where the @E_CAL_OPERATION_FLAG_CONFLICT_KEEP_LOCAL
+ * is the default behavior (and it is used when no other conflict resolution flag is set).
+ * The flags can be ignored when the operation or the backend don't support it.
+ *
+ * Since: 3.36
+ **/
+typedef enum { /*< flags >*/
+ E_CAL_OPERATION_FLAG_NONE = 0,
+ E_CAL_OPERATION_FLAG_CONFLICT_FAIL = (1 << 0),
+ E_CAL_OPERATION_FLAG_CONFLICT_USE_NEWER = (1 << 1),
+ E_CAL_OPERATION_FLAG_CONFLICT_KEEP_SERVER = (1 << 2),
+ E_CAL_OPERATION_FLAG_CONFLICT_KEEP_LOCAL = 0,
+ E_CAL_OPERATION_FLAG_CONFLICT_WRITE_COPY = (1 << 3),
+ E_CAL_OPERATION_FLAG_DISABLE_ITIP_MESSAGE = (1 << 4)
+} ECalOperationFlags;
+
G_END_DECLS
#endif /* E_CAL_ENUMS_H */
diff --git a/src/calendar/libecal/e-cal-util.c b/src/calendar/libecal/e-cal-util.c
index 1d77fc297..45d515036 100644
--- a/src/calendar/libecal/e-cal-util.c
+++ b/src/calendar/libecal/e-cal-util.c
@@ -2557,3 +2557,59 @@ e_cal_util_mark_task_complete_sync (ICalComponent *vtodo,
return TRUE;
}
+
+/**
+ * e_cal_util_operation_flags_to_conflict_resolution:
+ * @flags: bit-or of #ECalOperationFlags
+ *
+ * Decodes the #EConflictResolution from the bit-or of #ECalOperationFlags.
+ *
+ * Returns: an #EConflictResolution as stored in the @flags
+ *
+ * Since: 3.36
+ **/
+EConflictResolution
+e_cal_util_operation_flags_to_conflict_resolution (guint32 flags)
+{
+ if ((flags & E_CAL_OPERATION_FLAG_CONFLICT_FAIL) != 0)
+ return E_CONFLICT_RESOLUTION_FAIL;
+ else if ((flags & E_CAL_OPERATION_FLAG_CONFLICT_USE_NEWER) != 0)
+ return E_CONFLICT_RESOLUTION_USE_NEWER;
+ else if ((flags & E_CAL_OPERATION_FLAG_CONFLICT_KEEP_SERVER) != 0)
+ return E_CONFLICT_RESOLUTION_KEEP_SERVER;
+ else if ((flags & E_CAL_OPERATION_FLAG_CONFLICT_WRITE_COPY) != 0)
+ return E_CONFLICT_RESOLUTION_WRITE_COPY;
+
+ /* E_CAL_OPERATION_FLAG_CONFLICT_KEEP_LOCAL is the default */
+ return E_CONFLICT_RESOLUTION_KEEP_LOCAL;
+}
+
+/**
+ * e_cal_util_conflict_resolution_to_operation_flags:
+ * @conflict_resolution: an #EConflictResolution
+ *
+ * Encodes the #EConflictResolution into the bit-or of #ECalOperationFlags.
+ * The returned value can be bit-or-ed into other #ECalOperationFlags value.
+ *
+ * Returns: a bit-or #ECalOperationFlags corresponding to the @conflict_resolution
+ *
+ * Since: 3.36
+ **/
+guint32
+e_cal_util_conflict_resolution_to_operation_flags (EConflictResolution conflict_resolution)
+{
+ switch (conflict_resolution) {
+ case E_CONFLICT_RESOLUTION_FAIL:
+ return E_CAL_OPERATION_FLAG_CONFLICT_FAIL;
+ case E_CONFLICT_RESOLUTION_USE_NEWER:
+ return E_CAL_OPERATION_FLAG_CONFLICT_USE_NEWER;
+ case E_CONFLICT_RESOLUTION_KEEP_SERVER:
+ return E_CAL_OPERATION_FLAG_CONFLICT_KEEP_SERVER;
+ case E_CONFLICT_RESOLUTION_KEEP_LOCAL:
+ return E_CAL_OPERATION_FLAG_CONFLICT_KEEP_LOCAL;
+ case E_CONFLICT_RESOLUTION_WRITE_COPY:
+ return E_CAL_OPERATION_FLAG_CONFLICT_WRITE_COPY;
+ }
+
+ return E_CAL_OPERATION_FLAG_CONFLICT_KEEP_LOCAL;
+}
diff --git a/src/calendar/libecal/e-cal-util.h b/src/calendar/libecal/e-cal-util.h
index ef5b4d151..1f77d31a4 100644
--- a/src/calendar/libecal/e-cal-util.h
+++ b/src/calendar/libecal/e-cal-util.h
@@ -26,6 +26,7 @@
#include <libical-glib/libical-glib.h>
#include <time.h>
+#include <libedataserver/libedataserver.h>
#include <libecal/e-cal-component.h>
#include <libecal/e-cal-recur.h>
#include <libecal/e-cal-enums.h>
@@ -297,6 +298,11 @@ gboolean e_cal_util_mark_task_complete_sync
struct _ECalClient *cal_client,
GCancellable *cancellable,
GError **error);
+EConflictResolution
+ e_cal_util_operation_flags_to_conflict_resolution
+ (guint32 flags); /* bit-or of ECalOperationFlags */
+guint32 e_cal_util_conflict_resolution_to_operation_flags /* bit-or of ECalOperationFlags */
+ (EConflictResolution conflict_resolution);
G_END_DECLS
diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c
index ebecf99bb..2632a1ee7 100644
--- a/src/calendar/libecal/e-reminder-watcher.c
+++ b/src/calendar/libecal/e-reminder-watcher.c
@@ -3174,6 +3174,7 @@ e_reminder_watcher_dismiss_one_sync (ECalClient *client,
e_cal_component_id_get_uid (id),
e_cal_component_id_get_rid (id),
e_cal_component_alarm_instance_get_uid (rd->instance),
+ E_CAL_OPERATION_FLAG_NONE,
cancellable, &local_error);
e_reminder_watcher_debug_print ("Discard alarm for '%s' from %s (uid:%s rid:%s auid:%s)
%s%s%s%s\n",
diff --git a/src/calendar/libedata-cal/e-cal-backend-sync.c b/src/calendar/libedata-cal/e-cal-backend-sync.c
index 46ee65fe7..8a823e662 100644
--- a/src/calendar/libedata-cal/e-cal-backend-sync.c
+++ b/src/calendar/libedata-cal/e-cal-backend-sync.c
@@ -241,6 +241,7 @@ e_cal_backend_sync_get_free_busy (ECalBackendSync *backend,
* @cal: An EDataCal object.
* @cancellable: a #GCancellable for the operation
* @calobjs: The objects to be added.
+ * @opflags: bit-or of #ECalOperationFlags
* @uids: Placeholder for server-generated UIDs.
* @new_components: (out) (transfer full): Placeholder for returned #ECalComponent objects.
* @error: Out parameter for a #GError.
@@ -254,6 +255,7 @@ e_cal_backend_sync_create_objects (ECalBackendSync *backend,
EDataCal *cal,
GCancellable *cancellable,
const GSList *calobjs,
+ guint32 opflags,
GSList **uids,
GSList **new_components,
GError **error)
@@ -268,7 +270,7 @@ e_cal_backend_sync_create_objects (ECalBackendSync *backend,
if (class->create_objects_sync != NULL) {
class->create_objects_sync (
backend, cal, cancellable,
- calobjs, uids, new_components, error);
+ calobjs, opflags, uids, new_components, error);
} else {
g_set_error_literal (
error, E_CLIENT_ERROR,
@@ -285,6 +287,7 @@ e_cal_backend_sync_create_objects (ECalBackendSync *backend,
* @cancellable: a #GCancellable for the operation
* @calobjs: Objects to be modified.
* @mod: Type of modification to be done.
+ * @opflags: bit-or of #ECalOperationFlags
* @old_components: (out) (transfer full): Placeholder for returning the old components as they were stored
on the
* backend.
* @new_components: (out) (transfer full): Placeholder for returning the new components as they have been
stored
@@ -301,6 +304,7 @@ e_cal_backend_sync_modify_objects (ECalBackendSync *backend,
GCancellable *cancellable,
const GSList *calobjs,
ECalObjModType mod,
+ guint32 opflags,
GSList **old_components,
GSList **new_components,
GError **error)
@@ -315,7 +319,7 @@ e_cal_backend_sync_modify_objects (ECalBackendSync *backend,
if (class->modify_objects_sync != NULL) {
class->modify_objects_sync (
backend, cal, cancellable,
- calobjs, mod, old_components, new_components, error);
+ calobjs, mod, opflags, old_components, new_components, error);
} else {
g_set_error_literal (
error, E_CLIENT_ERROR,
@@ -332,6 +336,7 @@ e_cal_backend_sync_modify_objects (ECalBackendSync *backend,
* @cancellable: a #GCancellable for the operation
* @ids: List of #ECalComponentId objects identifying the objects to remove.
* @mod: Type of removal.
+ * @opflags: bit-or of #ECalOperationFlags
* @old_components: (out) (transfer full): Placeholder for returning the old components as they were stored
on the
* backend.
* @new_components: (out) (transfer full): Placeholder for returning the new components as they have been
stored
@@ -349,6 +354,7 @@ e_cal_backend_sync_remove_objects (ECalBackendSync *backend,
GCancellable *cancellable,
const GSList *ids,
ECalObjModType mod,
+ guint32 opflags,
GSList **old_components,
GSList **new_components,
GError **error)
@@ -363,7 +369,7 @@ e_cal_backend_sync_remove_objects (ECalBackendSync *backend,
if (class->remove_objects_sync != NULL) {
class->remove_objects_sync (
backend, cal, cancellable,
- ids, mod, old_components, new_components, error);
+ ids, mod, opflags, old_components, new_components, error);
} else {
g_set_error_literal (
error, E_CLIENT_ERROR,
@@ -377,6 +383,7 @@ e_cal_backend_sync_remove_objects (ECalBackendSync *backend,
* e_cal_backend_sync_receive_objects:
* @backend: An ECalBackendSync object.
* @cal: An EDataCal object.
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: a #GCancellable for the operation
* @calobj: iCalendar object to receive.
* @error: Out parameter for a #GError.
@@ -388,6 +395,7 @@ e_cal_backend_sync_receive_objects (ECalBackendSync *backend,
EDataCal *cal,
GCancellable *cancellable,
const gchar *calobj,
+ guint32 opflags,
GError **error)
{
ECalBackendSyncClass *class;
@@ -399,7 +407,7 @@ e_cal_backend_sync_receive_objects (ECalBackendSync *backend,
if (class->receive_objects_sync != NULL) {
class->receive_objects_sync (
- backend, cal, cancellable, calobj, error);
+ backend, cal, cancellable, calobj, opflags, error);
} else {
g_set_error_literal (
error, E_CLIENT_ERROR,
@@ -415,6 +423,7 @@ e_cal_backend_sync_receive_objects (ECalBackendSync *backend,
* @cal: An EDataCal object.
* @cancellable: a #GCancellable for the operation
* @calobj: The iCalendar object to send.
+ * @opflags: bit-or of #ECalOperationFlags
* @users: List of users to send notifications to.
* @modified_calobj: Placeholder for the iCalendar object after being modified.
* @error: Out parameter for a #GError.
@@ -426,6 +435,7 @@ e_cal_backend_sync_send_objects (ECalBackendSync *backend,
EDataCal *cal,
GCancellable *cancellable,
const gchar *calobj,
+ guint32 opflags,
GSList **users,
gchar **modified_calobj,
GError **error)
@@ -440,7 +450,7 @@ e_cal_backend_sync_send_objects (ECalBackendSync *backend,
if (class->send_objects_sync != NULL) {
class->send_objects_sync (
backend, cal, cancellable,
- calobj, users, modified_calobj, error);
+ calobj, opflags, users, modified_calobj, error);
} else {
g_set_error_literal (
error, E_CLIENT_ERROR,
@@ -502,6 +512,7 @@ e_cal_backend_sync_get_attachment_uris (ECalBackendSync *backend,
* @uid: Unique id of the calendar object.
* @rid: Recurrence id of the calendar object.
* @auid: Alarm ID to remove.
+ * @opflags: bit-or of #ECalOperationFlags
* @error: Out parameter for a #GError.
*
* Calls the discard_alarm_sync method on the given backend.
@@ -513,6 +524,7 @@ e_cal_backend_sync_discard_alarm (ECalBackendSync *backend,
const gchar *uid,
const gchar *rid,
const gchar *auid,
+ guint32 opflags,
GError **error)
{
ECalBackendSyncClass *class;
@@ -527,7 +539,7 @@ e_cal_backend_sync_discard_alarm (ECalBackendSync *backend,
if (class->discard_alarm_sync != NULL) {
class->discard_alarm_sync (
backend, cal, cancellable,
- uid, rid, auid, error);
+ uid, rid, auid, opflags, error);
} else {
g_set_error_literal (
error, E_CLIENT_ERROR,
@@ -740,13 +752,14 @@ cal_backend_create_objects (ECalBackend *backend,
EDataCal *cal,
guint32 opid,
GCancellable *cancellable,
- const GSList *calobjs)
+ const GSList *calobjs,
+ guint32 opflags)
{
GError *error = NULL;
GSList *uids = NULL;
GSList *new_components = NULL;
- e_cal_backend_sync_create_objects (E_CAL_BACKEND_SYNC (backend), cal, cancellable, calobjs, &uids,
&new_components, &error);
+ e_cal_backend_sync_create_objects (E_CAL_BACKEND_SYNC (backend), cal, cancellable, calobjs, opflags,
&uids, &new_components, &error);
if (!new_components)
new_components = ecalcomponent_slist_from_strings (calobjs);
@@ -763,12 +776,13 @@ cal_backend_modify_objects (ECalBackend *backend,
guint32 opid,
GCancellable *cancellable,
const GSList *calobjs,
- ECalObjModType mod)
+ ECalObjModType mod,
+ guint32 opflags)
{
GError *error = NULL;
GSList *old_components = NULL, *new_components = NULL;
- e_cal_backend_sync_modify_objects (E_CAL_BACKEND_SYNC (backend), cal, cancellable, calobjs, mod,
&old_components, &new_components, &error);
+ e_cal_backend_sync_modify_objects (E_CAL_BACKEND_SYNC (backend), cal, cancellable, calobjs, mod,
opflags, &old_components, &new_components, &error);
if (!old_components)
old_components = ecalcomponent_slist_from_strings (calobjs);
@@ -785,12 +799,13 @@ cal_backend_remove_objects (ECalBackend *backend,
guint32 opid,
GCancellable *cancellable,
const GSList *ids,
- ECalObjModType mod)
+ ECalObjModType mod,
+ guint32 opflags)
{
GError *error = NULL;
GSList *old_components = NULL, *new_components = NULL;
- e_cal_backend_sync_remove_objects (E_CAL_BACKEND_SYNC (backend), cal, cancellable, ids, mod,
&old_components, &new_components, &error);
+ e_cal_backend_sync_remove_objects (E_CAL_BACKEND_SYNC (backend), cal, cancellable, ids, mod, opflags,
&old_components, &new_components, &error);
e_data_cal_respond_remove_objects (cal, opid, error, ids, old_components, new_components);
@@ -803,11 +818,12 @@ cal_backend_receive_objects (ECalBackend *backend,
EDataCal *cal,
guint32 opid,
GCancellable *cancellable,
- const gchar *calobj)
+ const gchar *calobj,
+ guint32 opflags)
{
GError *error = NULL;
- e_cal_backend_sync_receive_objects (E_CAL_BACKEND_SYNC (backend), cal, cancellable, calobj, &error);
+ e_cal_backend_sync_receive_objects (E_CAL_BACKEND_SYNC (backend), cal, cancellable, calobj, opflags,
&error);
e_data_cal_respond_receive_objects (cal, opid, error);
}
@@ -817,13 +833,14 @@ cal_backend_send_objects (ECalBackend *backend,
EDataCal *cal,
guint32 opid,
GCancellable *cancellable,
- const gchar *calobj)
+ const gchar *calobj,
+ guint32 opflags)
{
GError *error = NULL;
GSList *users = NULL;
gchar *modified_calobj = NULL;
- e_cal_backend_sync_send_objects (E_CAL_BACKEND_SYNC (backend), cal, cancellable, calobj, &users,
&modified_calobj, &error);
+ e_cal_backend_sync_send_objects (E_CAL_BACKEND_SYNC (backend), cal, cancellable, calobj, opflags,
&users, &modified_calobj, &error);
e_data_cal_respond_send_objects (cal, opid, error, users, modified_calobj ? modified_calobj : calobj);
@@ -858,11 +875,12 @@ cal_backend_discard_alarm (ECalBackend *backend,
GCancellable *cancellable,
const gchar *uid,
const gchar *rid,
- const gchar *auid)
+ const gchar *auid,
+ guint32 opflags)
{
GError *error = NULL;
- e_cal_backend_sync_discard_alarm (E_CAL_BACKEND_SYNC (backend), cal, cancellable, uid, rid, auid,
&error);
+ e_cal_backend_sync_discard_alarm (E_CAL_BACKEND_SYNC (backend), cal, cancellable, uid, rid, auid,
opflags, &error);
e_data_cal_respond_discard_alarm (cal, opid, error);
}
diff --git a/src/calendar/libedata-cal/e-cal-backend-sync.h b/src/calendar/libedata-cal/e-cal-backend-sync.h
index 84ae1f76c..b0f8b85e1 100644
--- a/src/calendar/libedata-cal/e-cal-backend-sync.h
+++ b/src/calendar/libedata-cal/e-cal-backend-sync.h
@@ -122,6 +122,7 @@ struct _ECalBackendSyncClass {
EDataCal *cal,
GCancellable *cancellable,
const GSList *calobjs,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GSList **uids,
GSList **new_components,
GError **error);
@@ -130,6 +131,7 @@ struct _ECalBackendSyncClass {
GCancellable *cancellable,
const GSList *calobjs,
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GSList **old_components,
GSList **new_components,
GError **error);
@@ -138,6 +140,7 @@ struct _ECalBackendSyncClass {
GCancellable *cancellable,
const GSList *ids,
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GSList **old_components,
GSList **new_components,
GError **error);
@@ -145,11 +148,13 @@ struct _ECalBackendSyncClass {
EDataCal *cal,
GCancellable *cancellable,
const gchar *calobj,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GError **error);
void (*send_objects_sync) (ECalBackendSync *backend,
EDataCal *cal,
GCancellable *cancellable,
const gchar *calobj,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GSList **users,
gchar **modified_calobj,
GError **error);
@@ -167,6 +172,7 @@ struct _ECalBackendSyncClass {
const gchar *uid,
const gchar *rid,
const gchar *auid,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GError **error);
void (*get_timezone_sync) (ECalBackendSync *backend,
EDataCal *cal,
@@ -222,6 +228,7 @@ void e_cal_backend_sync_create_objects
EDataCal *cal,
GCancellable *cancellable,
const GSList *calobjs,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GSList **uids,
GSList **new_components,
GError **error);
@@ -231,6 +238,7 @@ void e_cal_backend_sync_modify_objects
GCancellable *cancellable,
const GSList *calobjs,
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GSList **old_components,
GSList **new_components,
GError **error);
@@ -240,6 +248,7 @@ void e_cal_backend_sync_remove_objects
GCancellable *cancellable,
const GSList *ids,
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GSList **old_components,
GSList **new_components,
GError **error);
@@ -248,11 +257,13 @@ void e_cal_backend_sync_receive_objects
EDataCal *cal,
GCancellable *cancellable,
const gchar *calobj,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GError **error);
void e_cal_backend_sync_send_objects (ECalBackendSync *backend,
EDataCal *cal,
GCancellable *cancellable,
const gchar *calobj,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GSList **users,
gchar **modified_calobj,
GError **error);
@@ -271,6 +282,7 @@ void e_cal_backend_sync_discard_alarm
const gchar *uid,
const gchar *rid,
const gchar *auid,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GError **error);
void e_cal_backend_sync_get_timezone (ECalBackendSync *backend,
EDataCal *cal,
diff --git a/src/calendar/libedata-cal/e-cal-backend.c b/src/calendar/libedata-cal/e-cal-backend.c
index 25e521cc0..0235e26ca 100644
--- a/src/calendar/libedata-cal/e-cal-backend.c
+++ b/src/calendar/libedata-cal/e-cal-backend.c
@@ -84,6 +84,7 @@ struct _AsyncContext {
time_t end;
GSList *compid_list;
GSList *string_list;
+ guint32 opflags;
/* Outputs */
GQueue result_queue;
@@ -2470,6 +2471,7 @@ e_cal_backend_get_free_busy_finish (ECalBackend *backend,
* e_cal_backend_create_objects_sync:
* @backend: an #ECalBackend
* @calobjs: a %NULL-terminated array of iCalendar strings
+ * @opflags: bit-or of #ECalOperationFlags
* @out_uids: a #GQueue in which to deposit results
* @cancellable: optional #GCancellable object, or %NULL
* @error: return location for a #GError, or %NULL
@@ -2488,6 +2490,7 @@ e_cal_backend_get_free_busy_finish (ECalBackend *backend,
gboolean
e_cal_backend_create_objects_sync (ECalBackend *backend,
const gchar * const *calobjs,
+ guint32 opflags,
GQueue *out_uids,
GCancellable *cancellable,
GError **error)
@@ -2502,7 +2505,7 @@ e_cal_backend_create_objects_sync (ECalBackend *backend,
closure = e_async_closure_new ();
e_cal_backend_create_objects (
- backend, calobjs, cancellable,
+ backend, calobjs, opflags, cancellable,
e_async_closure_callback, closure);
result = e_async_closure_wait (closure);
@@ -2559,7 +2562,7 @@ cal_backend_create_objects_thread (GSimpleAsyncResult *simple,
class->create_objects (
backend, data_cal, opid, cancellable,
- async_context->string_list);
+ async_context->string_list, async_context->opflags);
}
g_object_unref (data_cal);
@@ -2569,6 +2572,7 @@ cal_backend_create_objects_thread (GSimpleAsyncResult *simple,
* e_cal_backend_create_objects:
* @backend: an #ECalBackend
* @calobjs: a %NULL-terminated array of iCalendar strings
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: optional #GCancellable object, or %NULL
* @callback: a #GAsyncReadyCallback to call when the request is satisifed
* @user_data: data to pass to the callback function
@@ -2584,6 +2588,7 @@ cal_backend_create_objects_thread (GSimpleAsyncResult *simple,
void
e_cal_backend_create_objects (ECalBackend *backend,
const gchar * const *calobjs,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -2601,6 +2606,7 @@ e_cal_backend_create_objects (ECalBackend *backend,
async_context = g_slice_new0 (AsyncContext);
async_context->string_list = g_slist_reverse (list);
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (backend), callback, user_data,
@@ -2696,6 +2702,7 @@ e_cal_backend_create_objects_finish (ECalBackend *backend,
* @backend: an #ECalBackend
* @calobjs: a %NULL-terminated array of iCalendar strings
* @mod: modification type for recurrences
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: optional #GCancellable object, or %NULL
* @error: return location for a #GError, or %NULL
*
@@ -2711,6 +2718,7 @@ gboolean
e_cal_backend_modify_objects_sync (ECalBackend *backend,
const gchar * const *calobjs,
ECalObjModType mod,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
@@ -2724,7 +2732,7 @@ e_cal_backend_modify_objects_sync (ECalBackend *backend,
closure = e_async_closure_new ();
e_cal_backend_modify_objects (
- backend, calobjs, mod, cancellable,
+ backend, calobjs, mod, opflags, cancellable,
e_async_closure_callback, closure);
result = e_async_closure_wait (closure);
@@ -2782,7 +2790,8 @@ cal_backend_modify_objects_thread (GSimpleAsyncResult *simple,
class->modify_objects (
backend, data_cal, opid, cancellable,
async_context->string_list,
- async_context->mod);
+ async_context->mod,
+ async_context->opflags);
}
g_object_unref (data_cal);
@@ -2793,6 +2802,7 @@ cal_backend_modify_objects_thread (GSimpleAsyncResult *simple,
* @backend: an #ECalBackend
* @calobjs: a %NULL-terminated array of iCalendar strings
* @mod: modification type for recurrences
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: optional #GCancellable object, or %NULL
* @callback: a #GAsyncReadyCallback to call when the request is satisfied
* @user_data: data to pass to the callback function
@@ -2810,6 +2820,7 @@ void
e_cal_backend_modify_objects (ECalBackend *backend,
const gchar * const *calobjs,
ECalObjModType mod,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -2828,6 +2839,7 @@ e_cal_backend_modify_objects (ECalBackend *backend,
async_context = g_slice_new0 (AsyncContext);
async_context->string_list = g_slist_reverse (list);
async_context->mod = mod;
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (backend), callback, user_data,
@@ -2929,6 +2941,7 @@ e_cal_backend_modify_objects_finish (ECalBackend *backend,
* @backend: an #ECalBackend
* @component_ids: (element-type ECalComponentId): a #GList of #ECalComponentId structs
* @mod: modification type for recurrences
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: optional #GCancellable object, or %NULL
* @error: return location for a #GError, or %NULL
*
@@ -2944,6 +2957,7 @@ gboolean
e_cal_backend_remove_objects_sync (ECalBackend *backend,
GList *component_ids,
ECalObjModType mod,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
@@ -2957,7 +2971,7 @@ e_cal_backend_remove_objects_sync (ECalBackend *backend,
closure = e_async_closure_new ();
e_cal_backend_remove_objects (
- backend, component_ids, mod, cancellable,
+ backend, component_ids, mod, opflags, cancellable,
e_async_closure_callback, closure);
result = e_async_closure_wait (closure);
@@ -3008,7 +3022,8 @@ cal_backend_remove_objects_thread (GSimpleAsyncResult *simple,
class->remove_objects (
backend, data_cal, opid, cancellable,
async_context->compid_list,
- async_context->mod);
+ async_context->mod,
+ async_context->opflags);
}
g_object_unref (data_cal);
@@ -3019,6 +3034,7 @@ cal_backend_remove_objects_thread (GSimpleAsyncResult *simple,
* @backend: an #ECalBackend
* @component_ids: (element-type ECalComponentId): a #GList of #ECalComponentId structs
* @mod: modification type for recurrences
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: optional #GCancellable object, or %NULL
* @callback: a #GAsyncReadyCallback to call when the request is satisfied
* @user_data: data to pass to the callback function
@@ -3036,6 +3052,7 @@ void
e_cal_backend_remove_objects (ECalBackend *backend,
GList *component_ids,
ECalObjModType mod,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -3056,6 +3073,7 @@ e_cal_backend_remove_objects (ECalBackend *backend,
async_context = g_slice_new0 (AsyncContext);
async_context->compid_list = g_slist_reverse (list);
async_context->mod = mod;
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (backend), callback, user_data,
@@ -3168,6 +3186,7 @@ e_cal_backend_remove_objects_finish (ECalBackend *backend,
* e_cal_backend_receive_objects_sync:
* @backend: an #ECalBackend
* @calobj: an iCalendar string
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: optional #GCancellable object, or %NULL
* @error: return location for a #GError, or %NULL
*
@@ -3183,6 +3202,7 @@ e_cal_backend_remove_objects_finish (ECalBackend *backend,
gboolean
e_cal_backend_receive_objects_sync (ECalBackend *backend,
const gchar *calobj,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
@@ -3196,7 +3216,7 @@ e_cal_backend_receive_objects_sync (ECalBackend *backend,
closure = e_async_closure_new ();
e_cal_backend_receive_objects (
- backend, calobj, cancellable,
+ backend, calobj, opflags, cancellable,
e_async_closure_callback, closure);
result = e_async_closure_wait (closure);
@@ -3246,7 +3266,8 @@ cal_backend_receive_objects_thread (GSimpleAsyncResult *simple,
class->receive_objects (
backend, data_cal, opid, cancellable,
- async_context->calobj);
+ async_context->calobj,
+ async_context->opflags);
}
g_object_unref (data_cal);
@@ -3256,6 +3277,7 @@ cal_backend_receive_objects_thread (GSimpleAsyncResult *simple,
* e_cal_backend_receive_objects:
* @backend: an #ECalBackend
* @calobj: an iCalendar string
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: optional #GCancellable object, or %NULL
* @callback: a #GAsyncReadyCallback to call when the request is satisfied
* @user_data: data to pass to the callback function
@@ -3273,6 +3295,7 @@ cal_backend_receive_objects_thread (GSimpleAsyncResult *simple,
void
e_cal_backend_receive_objects (ECalBackend *backend,
const gchar *calobj,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -3285,6 +3308,7 @@ e_cal_backend_receive_objects (ECalBackend *backend,
async_context = g_slice_new0 (AsyncContext);
async_context->calobj = g_strdup (calobj);
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (backend), callback, user_data,
@@ -3342,6 +3366,7 @@ e_cal_backend_receive_objects_finish (ECalBackend *backend,
* e_cal_backend_send_objects_sync:
* @backend: an #ECalBackend
* @calobj: an iCalendar string
+ * @opflags: bit-or of #ECalOperationFlags
* @out_users: a #GQueue in which to deposit results
* @cancellable: optional #GCancellable object, or %NULL
* @error: return location for a #GError, or %NULL
@@ -3362,6 +3387,7 @@ e_cal_backend_receive_objects_finish (ECalBackend *backend,
gchar *
e_cal_backend_send_objects_sync (ECalBackend *backend,
const gchar *calobj,
+ guint32 opflags,
GQueue *out_users,
GCancellable *cancellable,
GError **error)
@@ -3376,7 +3402,7 @@ e_cal_backend_send_objects_sync (ECalBackend *backend,
closure = e_async_closure_new ();
e_cal_backend_send_objects (
- backend, calobj, cancellable,
+ backend, calobj, opflags, cancellable,
e_async_closure_callback, closure);
result = e_async_closure_wait (closure);
@@ -3426,7 +3452,8 @@ cal_backend_send_objects_thread (GSimpleAsyncResult *simple,
class->send_objects (
backend, data_cal, opid, cancellable,
- async_context->calobj);
+ async_context->calobj,
+ async_context->opflags);
}
g_object_unref (data_cal);
@@ -3436,6 +3463,7 @@ cal_backend_send_objects_thread (GSimpleAsyncResult *simple,
* e_cal_backend_send_objects:
* @backend: an #ECalBackend
* @calobj: an iCalendar string
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: optional #GCancellable object, or %NULL
* @callback: a #GAsyncReadyCallback to call when the request is satisfied
* @user_data: data to pass to the callback function
@@ -3451,6 +3479,7 @@ cal_backend_send_objects_thread (GSimpleAsyncResult *simple,
void
e_cal_backend_send_objects (ECalBackend *backend,
const gchar *calobj,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -3463,6 +3492,7 @@ e_cal_backend_send_objects (ECalBackend *backend,
async_context = g_slice_new0 (AsyncContext);
async_context->calobj = g_strdup (calobj);
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (backend), callback, user_data,
@@ -3739,6 +3769,7 @@ e_cal_backend_get_attachment_uris_finish (ECalBackend *backend,
* @uid: a unique ID for an iCalendar object
* @rid: a recurrence ID, or %NULL
* @alarm_uid: a unique ID for an iCalendar VALARM object
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: optional #GCancellable object, or %NULL
* @error: return location for a #GError, or %NULL
*
@@ -3756,6 +3787,7 @@ e_cal_backend_discard_alarm_sync (ECalBackend *backend,
const gchar *uid,
const gchar *rid,
const gchar *alarm_uid,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
@@ -3771,7 +3803,7 @@ e_cal_backend_discard_alarm_sync (ECalBackend *backend,
closure = e_async_closure_new ();
e_cal_backend_discard_alarm (
- backend, uid, rid, alarm_uid, cancellable,
+ backend, uid, rid, alarm_uid, opflags, cancellable,
e_async_closure_callback, closure);
result = e_async_closure_wait (closure);
@@ -3830,7 +3862,8 @@ cal_backend_discard_alarm_thread (GSimpleAsyncResult *simple,
backend, data_cal, opid, cancellable,
async_context->uid,
async_context->rid,
- async_context->alarm_uid);
+ async_context->alarm_uid,
+ async_context->opflags);
}
g_object_unref (data_cal);
@@ -3842,6 +3875,7 @@ cal_backend_discard_alarm_thread (GSimpleAsyncResult *simple,
* @uid: a unique ID for an iCalendar object
* @rid: a recurrence ID, or %NULL
* @alarm_uid: a unique ID for an iCalendar VALARM object
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: optional #GCancellable object, or %NULL
* @callback: a #GAsyncReadyCallback to call when the request is satisfied
* @user_data: data to pass to the callback function
@@ -3860,6 +3894,7 @@ e_cal_backend_discard_alarm (ECalBackend *backend,
const gchar *uid,
const gchar *rid,
const gchar *alarm_uid,
+ guint32 opflags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -3876,6 +3911,7 @@ e_cal_backend_discard_alarm (ECalBackend *backend,
async_context->uid = g_strdup (uid);
async_context->rid = g_strdup (rid);
async_context->alarm_uid = g_strdup (alarm_uid);
+ async_context->opflags = opflags;
simple = g_simple_async_result_new (
G_OBJECT (backend), callback, user_data,
diff --git a/src/calendar/libedata-cal/e-cal-backend.h b/src/calendar/libedata-cal/e-cal-backend.h
index b732e20f3..3423b1d10 100644
--- a/src/calendar/libedata-cal/e-cal-backend.h
+++ b/src/calendar/libedata-cal/e-cal-backend.h
@@ -142,29 +142,34 @@ struct _ECalBackendClass {
EDataCal *cal,
guint32 opid,
GCancellable *cancellable,
- const GSList *calobjs); /* gchar * */
+ const GSList *calobjs, /* gchar * */
+ guint32 opflags); /* bit-or of ECalOperationFlags */
void (*modify_objects) (ECalBackend *backend,
EDataCal *cal,
guint32 opid,
GCancellable *cancellable,
const GSList *calobjs, /* gchar * */
- ECalObjModType mod);
+ ECalObjModType mod,
+ guint32 opflags); /* bit-or of ECalOperationFlags */
void (*remove_objects) (ECalBackend *backend,
EDataCal *cal,
guint32 opid,
GCancellable *cancellable,
const GSList *ids, /* ECalComponentId * */
- ECalObjModType mod);
+ ECalObjModType mod,
+ guint32 opflags); /* bit-or of ECalOperationFlags */
void (*receive_objects) (ECalBackend *backend,
EDataCal *cal,
guint32 opid,
GCancellable *cancellable,
- const gchar *calobj);
+ const gchar *calobj,
+ guint32 opflags); /* bit-or of ECalOperationFlags */
void (*send_objects) (ECalBackend *backend,
EDataCal *cal,
guint32 opid,
GCancellable *cancellable,
- const gchar *calobj);
+ const gchar *calobj,
+ guint32 opflags); /* bit-or of ECalOperationFlags */
void (*get_attachment_uris) (ECalBackend *backend,
EDataCal *cal,
guint32 opid,
@@ -177,7 +182,8 @@ struct _ECalBackendClass {
GCancellable *cancellable,
const gchar *uid,
const gchar *rid,
- const gchar *auid);
+ const gchar *auid,
+ guint32 opflags); /* bit-or of ECalOperationFlags */
void (*get_timezone) (ECalBackend *backend,
EDataCal *cal,
guint32 opid,
@@ -312,11 +318,13 @@ gboolean e_cal_backend_get_free_busy_finish
gboolean e_cal_backend_create_objects_sync
(ECalBackend *backend,
const gchar * const *calobjs,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GQueue *out_uids,
GCancellable *cancellable,
GError **error);
void e_cal_backend_create_objects (ECalBackend *backend,
const gchar * const *calobjs,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -329,11 +337,13 @@ gboolean e_cal_backend_modify_objects_sync
(ECalBackend *backend,
const gchar * const *calobjs,
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GError **error);
void e_cal_backend_modify_objects (ECalBackend *backend,
const gchar * const *calobjs,
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -345,11 +355,13 @@ gboolean e_cal_backend_remove_objects_sync
(ECalBackend *backend,
GList *component_ids, /* ECalComponentId * */
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GError **error);
void e_cal_backend_remove_objects (ECalBackend *backend,
GList *component_ids, /* ECalComponentId * */
ECalObjModType mod,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -360,10 +372,12 @@ gboolean e_cal_backend_remove_objects_finish
gboolean e_cal_backend_receive_objects_sync
(ECalBackend *backend,
const gchar *calobj,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GError **error);
void e_cal_backend_receive_objects (ECalBackend *backend,
const gchar *calobj,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -373,11 +387,13 @@ gboolean e_cal_backend_receive_objects_finish
GError **error);
gchar * e_cal_backend_send_objects_sync (ECalBackend *backend,
const gchar *calobj,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GQueue *out_users,
GCancellable *cancellable,
GError **error);
void e_cal_backend_send_objects (ECalBackend *backend,
const gchar *calobj,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -410,12 +426,14 @@ gboolean e_cal_backend_discard_alarm_sync
const gchar *uid,
const gchar *rid,
const gchar *alarm_uid,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GError **error);
void e_cal_backend_discard_alarm (ECalBackend *backend,
const gchar *uid,
const gchar *rid,
const gchar *alarm_uid,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
diff --git a/src/calendar/libedata-cal/e-cal-cache.c b/src/calendar/libedata-cal/e-cal-cache.c
index 0caf051d4..670e20e3c 100644
--- a/src/calendar/libedata-cal/e-cal-cache.c
+++ b/src/calendar/libedata-cal/e-cal-cache.c
@@ -66,6 +66,7 @@
#define ECC_COLUMN_HAS_START "has_start"
#define ECC_COLUMN_HAS_RECURRENCES "has_recurrences"
#define ECC_COLUMN_EXTRA "bdata"
+#define ECC_COLUMN_CUSTOM_FLAGS "custom_flags"
struct _ECalCachePrivate {
gboolean initializing;
@@ -397,6 +398,26 @@ e_cal_cache_get_strings (ECache *cache,
return TRUE;
}
+static gboolean
+e_cal_cache_get_uint64_cb (ECache *cache,
+ gint ncols,
+ const gchar **column_names,
+ const gchar **column_values,
+ gpointer user_data)
+{
+ guint64 *pui64 = user_data;
+
+ g_return_val_if_fail (pui64 != NULL, FALSE);
+
+ if (ncols == 1) {
+ *pui64 = column_values[0] ? g_ascii_strtoull (column_values[0], NULL, 10) : 0;
+ } else {
+ *pui64 = 0;
+ }
+
+ return TRUE;
+}
+
static void
e_cal_cache_populate_other_columns (ECalCache *cal_cache,
GSList **out_other_columns)
@@ -429,6 +450,7 @@ e_cal_cache_populate_other_columns (ECalCache *cal_cache,
add_column (ECC_COLUMN_HAS_START, "INTEGER", NULL);
add_column (ECC_COLUMN_HAS_RECURRENCES, "INTEGER", NULL);
add_column (ECC_COLUMN_EXTRA, "TEXT", NULL);
+ add_column (ECC_COLUMN_CUSTOM_FLAGS, "INTEGER", NULL);
#undef add_column
@@ -1636,6 +1658,7 @@ ecc_convert_sexp_to_sql (ECalCache *cal_cache,
typedef struct {
gint extra_idx;
+ gint custom_flags_idx;
ECalCacheSearchFunc func;
gpointer func_user_data;
} SearchContext;
@@ -1653,29 +1676,36 @@ ecc_search_foreach_cb (ECache *cache,
{
SearchContext *ctx = user_data;
gchar *comp_uid = NULL, *comp_rid = NULL;
+ guint32 custom_flags = 0;
gboolean can_continue;
g_return_val_if_fail (ctx != NULL, FALSE);
g_return_val_if_fail (ctx->func != NULL, FALSE);
- if (ctx->extra_idx == -1) {
+ if (ctx->extra_idx == -1 || ctx->custom_flags_idx == -1) {
gint ii;
- for (ii = 0; ii < ncols; ii++) {
- if (column_names[ii] && g_ascii_strcasecmp (column_names[ii], ECC_COLUMN_EXTRA) == 0)
{
- ctx->extra_idx = ii;
- break;
+ for (ii = 0; ii < ncols && (ctx->extra_idx == -1 || ctx->custom_flags_idx == -1); ii++) {
+ if (column_names[ii]) {
+ if (g_ascii_strcasecmp (column_names[ii], ECC_COLUMN_EXTRA) == 0)
+ ctx->extra_idx = ii;
+ else if (g_ascii_strcasecmp (column_names[ii], ECC_COLUMN_CUSTOM_FLAGS) == 0)
+ ctx->custom_flags_idx = ii;
}
}
}
g_return_val_if_fail (ctx->extra_idx != -1, FALSE);
+ g_return_val_if_fail (ctx->custom_flags_idx != -1, FALSE);
g_warn_if_fail (ecc_decode_id_sql (uid, &comp_uid, &comp_rid));
+ if (ctx->custom_flags_idx >= 0 && column_values[ctx->custom_flags_idx])
+ custom_flags = g_ascii_strtoull (column_values[ctx->custom_flags_idx], NULL, 10);
+
/* This type-cast for performance reason */
can_continue = ctx->func ((ECalCache *) cache, comp_uid, comp_rid, revision, object,
- column_values[ctx->extra_idx], offline_state, ctx->func_user_data);
+ column_values[ctx->extra_idx], custom_flags, offline_state, ctx->func_user_data);
g_free (comp_uid);
g_free (comp_rid);
@@ -1701,6 +1731,7 @@ ecc_search_internal (ECalCache *cal_cache,
}
ctx.extra_idx = -1;
+ ctx.custom_flags_idx = -1;
ctx.func = func;
ctx.func_user_data = user_data;
@@ -1775,8 +1806,10 @@ ecc_init_sqlite_functions (ECalCache *cal_cache,
typedef struct _ComponentInfo {
GSList *online_comps; /* ECalComponent * */
GSList *online_extras; /* gchar * */
+ GSList *online_custom_flags; /* guint32 */
GSList *offline_comps; /* ECalComponent * */
GSList *offline_extras; /* gchar * */
+ GSList *offline_custom_flags; /* guint32 */
} ComponentInfo;
static void
@@ -1785,8 +1818,10 @@ component_info_clear (ComponentInfo *ci)
if (ci) {
g_slist_free_full (ci->online_comps, g_object_unref);
g_slist_free_full (ci->online_extras, g_free);
+ g_slist_free (ci->online_custom_flags);
g_slist_free_full (ci->offline_comps, g_object_unref);
g_slist_free_full (ci->offline_extras, g_free);
+ g_slist_free (ci->offline_custom_flags);
}
}
@@ -1797,6 +1832,7 @@ cal_cache_gather_v1_affected_cb (ECalCache *cal_cache,
const gchar *revision,
const gchar *object,
const gchar *extra,
+ guint32 custom_flags,
EOfflineState offline_state,
gpointer user_data)
{
@@ -1819,18 +1855,21 @@ cal_cache_gather_v1_affected_cb (ECalCache *cal_cache,
if (dt && e_cal_component_datetime_get_value (dt) &&
!i_cal_time_is_utc (e_cal_component_datetime_get_value (dt)) &&
!e_cal_component_datetime_get_tzid (dt)) {
- GSList **pcomps, **pextras;
+ GSList **pcomps, **pextras, **pcustom_flags;
if (offline_state == E_OFFLINE_STATE_SYNCED) {
pcomps = &ci->online_comps;
pextras = &ci->online_extras;
+ pcustom_flags = &ci->online_custom_flags;
} else {
pcomps = &ci->offline_comps;
pextras = &ci->offline_extras;
+ pcustom_flags = &ci->offline_custom_flags;
}
*pcomps = g_slist_prepend (*pcomps, g_object_ref (comp));
*pextras = g_slist_prepend (*pextras, g_strdup (extra));
+ *pcustom_flags = g_slist_prepend (*pcustom_flags, GUINT_TO_POINTER (custom_flags));
}
e_cal_component_datetime_free (dt);
@@ -2096,6 +2135,7 @@ cal_cache_count_tmd_refs (ECalCache *cal_cache,
const gchar *revision,
const gchar *object,
const gchar *extra,
+ guint32 custom_flags,
EOfflineState offline_state,
gpointer user_data)
{
@@ -2190,10 +2230,10 @@ e_cal_cache_migrate (ECache *cache,
gboolean success = TRUE;
if (ci.online_comps)
- success = e_cal_cache_put_components (cal_cache, ci.online_comps,
ci.online_extras, E_CACHE_IS_ONLINE, cancellable, NULL);
+ success = e_cal_cache_put_components (cal_cache, ci.online_comps,
ci.online_extras, ci.online_custom_flags, E_CACHE_IS_ONLINE, cancellable, NULL);
if (success && ci.offline_comps)
- e_cal_cache_put_components (cal_cache, ci.offline_comps, ci.offline_extras,
E_CACHE_IS_OFFLINE, cancellable, NULL);
+ e_cal_cache_put_components (cal_cache, ci.offline_comps, ci.offline_extras,
ci.offline_custom_flags, E_CACHE_IS_OFFLINE, cancellable, NULL);
}
component_info_clear (&ci);
@@ -2381,6 +2421,7 @@ e_cal_cache_contains (ECalCache *cal_cache,
* @cal_cache: an #ECalCache
* @component: an #ECalComponent to put into the @cal_cache
* @extra: (nullable): an extra data to store in association with the @component
+ * @custom_flags: custom flags for the @component, not interpreted by the @cal_cache
* @offline_flag: one of #ECacheOfflineFlag, whether putting this component in offline
* @cancellable: optional #GCancellable object, or %NULL
* @error: return location for a #GError, or %NULL
@@ -2396,12 +2437,14 @@ gboolean
e_cal_cache_put_component (ECalCache *cal_cache,
ECalComponent *component,
const gchar *extra,
+ guint32 custom_flags,
ECacheOfflineFlag offline_flag,
GCancellable *cancellable,
GError **error)
{
GSList *components = NULL;
GSList *extras = NULL;
+ GSList *custom_flags_lst = NULL;
gboolean success;
g_return_val_if_fail (E_IS_CAL_CACHE (cal_cache), FALSE);
@@ -2409,9 +2452,11 @@ e_cal_cache_put_component (ECalCache *cal_cache,
components = g_slist_prepend (components, component);
if (extra)
extras = g_slist_prepend (extras, (gpointer) extra);
+ custom_flags_lst = g_slist_prepend (custom_flags_lst, GUINT_TO_POINTER (custom_flags));
- success = e_cal_cache_put_components (cal_cache, components, extras, offline_flag, cancellable,
error);
+ success = e_cal_cache_put_components (cal_cache, components, extras, custom_flags_lst, offline_flag,
cancellable, error);
+ g_slist_free (custom_flags_lst);
g_slist_free (components);
g_slist_free (extras);
@@ -2422,7 +2467,8 @@ e_cal_cache_put_component (ECalCache *cal_cache,
* e_cal_cache_put_components:
* @cal_cache: an #ECalCache
* @components: (element-type ECalComponent): a #GSList of #ECalComponent to put into the @cal_cache
- * @extras: (nullable) (element-type utf8): an extra data to store in association with the @components
+ * @extras: (nullable) (element-type utf8): optional extra data to store in association with the @components
+ * @custom_flags: (nullable) (element-type guint32): optional custom flags to use for the @components
* @offline_flag: one of #ECacheOfflineFlag, whether putting these components in offline
* @cancellable: optional #GCancellable object, or %NULL
* @error: return location for a #GError, or %NULL
@@ -2430,8 +2476,9 @@ e_cal_cache_put_component (ECalCache *cal_cache,
* Adds a list of @components into the @cal_cache. Any existing with the same UID
* and RID are replaced.
*
- * If @extras is not %NULL, it's length should be the same as the length
- * of the @components.
+ * If @extras is not %NULL, its length should be the same as the length
+ * of the @components. Similarly the non-NULL @custom_flags length
+ * should be the same as the length of the @components.
*
* Returns: Whether succeeded.
*
@@ -2441,17 +2488,19 @@ gboolean
e_cal_cache_put_components (ECalCache *cal_cache,
const GSList *components,
const GSList *extras,
+ const GSList *custom_flags,
ECacheOfflineFlag offline_flag,
GCancellable *cancellable,
GError **error)
{
- const GSList *clink, *elink;
+ const GSList *clink, *elink, *flink;
ECache *cache;
ECacheColumnValues *other_columns;
gboolean success = TRUE;
g_return_val_if_fail (E_IS_CAL_CACHE (cal_cache), FALSE);
g_return_val_if_fail (extras == NULL || g_slist_length ((GSList *) components) == g_slist_length
((GSList *) extras), FALSE);
+ g_return_val_if_fail (custom_flags == NULL || g_slist_length ((GSList *) components) ==
g_slist_length ((GSList *) custom_flags), FALSE);
cache = E_CACHE (cal_cache);
other_columns = e_cache_column_values_new ();
@@ -2459,9 +2508,12 @@ e_cal_cache_put_components (ECalCache *cal_cache,
e_cache_lock (cache, E_CACHE_LOCK_WRITE);
e_cache_freeze_revision_change (cache);
- for (clink = components, elink = extras; clink; clink = g_slist_next (clink), elink = g_slist_next
(elink)) {
+ for (clink = components, elink = extras, flink = custom_flags;
+ clink;
+ (clink = g_slist_next (clink)), (elink = g_slist_next (elink)), (flink = g_slist_next (flink))) {
ECalComponent *component = clink->data;
const gchar *extra = elink ? elink->data : NULL;
+ guint32 custom_flags_val = flink ? GPOINTER_TO_UINT (flink->data) : 0;
ECalComponentId *id;
gchar *uid, *rev, *icalstring;
@@ -2474,6 +2526,7 @@ e_cal_cache_put_components (ECalCache *cal_cache,
if (extra)
e_cache_column_values_take_value (other_columns, ECC_COLUMN_EXTRA, g_strdup (extra));
+ e_cache_column_values_take_value (other_columns, ECC_COLUMN_CUSTOM_FLAGS, g_strdup_printf
("%u", custom_flags_val));
id = e_cal_component_get_id (component);
if (id) {
@@ -2509,6 +2562,7 @@ e_cal_cache_put_components (ECalCache *cal_cache,
* @cal_cache: an #ECalCache
* @uid: a UID of the component to remove
* @rid: (nullable): an optional Recurrence-ID to remove
+ * @custom_flags: custom flags for the @component, not interpreted by the @cal_cache
* @offline_flag: one of #ECacheOfflineFlag, whether removing this component in offline
* @cancellable: optional #GCancellable object, or %NULL
* @error: return location for a #GError, or %NULL
@@ -2525,12 +2579,14 @@ gboolean
e_cal_cache_remove_component (ECalCache *cal_cache,
const gchar *uid,
const gchar *rid,
+ guint32 custom_flags,
ECacheOfflineFlag offline_flag,
GCancellable *cancellable,
GError **error)
{
ECalComponentId *id;
GSList *ids = NULL;
+ GSList *custom_flags_lst = NULL;
gboolean success;
g_return_val_if_fail (E_IS_CAL_CACHE (cal_cache), FALSE);
@@ -2538,10 +2594,12 @@ e_cal_cache_remove_component (ECalCache *cal_cache,
id = e_cal_component_id_new (uid, rid);
ids = g_slist_prepend (ids, id);
+ custom_flags_lst = g_slist_prepend (custom_flags_lst, GUINT_TO_POINTER (custom_flags));
- success = e_cal_cache_remove_components (cal_cache, ids, offline_flag, cancellable, error);
+ success = e_cal_cache_remove_components (cal_cache, ids, custom_flags_lst, offline_flag, cancellable,
error);
g_slist_free_full (ids, e_cal_component_id_free);
+ g_slist_free (custom_flags_lst);
return success;
}
@@ -2550,6 +2608,7 @@ e_cal_cache_remove_component (ECalCache *cal_cache,
* e_cal_cache_remove_components:
* @cal_cache: an #ECalCache
* @ids: (element-type ECalComponentId): a #GSList of components to remove
+ * @custom_flags: (element-type guint32) (nullable): an optional #GSList of custom flags for the @ids
* @offline_flag: one of #ECacheOfflineFlag, whether removing these comonents in offline
* @cancellable: optional #GCancellable object, or %NULL
* @error: return location for a #GError, or %NULL
@@ -2557,6 +2616,9 @@ e_cal_cache_remove_component (ECalCache *cal_cache,
* Removes components identified by @uid and @rid from the @cal_cache
* in the @ids list. When the @rid is %NULL, or an empty string, then
* removes the master object only, without any detached instance.
+ * The @custom_flags is used, if not %NULL, only if the @offline_flag
+ * is %E_CACHE_IS_OFFLINE. Otherwise it's ignored. The length of
+ * the @custom_flags should match the length of @ids, when not %NULL.
*
* Returns: Whether succeeded.
*
@@ -2565,23 +2627,26 @@ e_cal_cache_remove_component (ECalCache *cal_cache,
gboolean
e_cal_cache_remove_components (ECalCache *cal_cache,
const GSList *ids,
+ const GSList *custom_flags,
ECacheOfflineFlag offline_flag,
GCancellable *cancellable,
GError **error)
{
ECache *cache;
- const GSList *link;
+ const GSList *link, *flink;
gboolean success = TRUE;
g_return_val_if_fail (E_IS_CAL_CACHE (cal_cache), FALSE);
+ g_return_val_if_fail (custom_flags == NULL || g_slist_length ((GSList *) ids) == g_slist_length
((GSList *) custom_flags), FALSE);
cache = E_CACHE (cal_cache);
e_cache_lock (cache, E_CACHE_LOCK_WRITE);
e_cache_freeze_revision_change (cache);
- for (link = ids; success && link; link = g_slist_next (link)) {
+ for (link = ids, flink = custom_flags; success && link; (link = g_slist_next (link)), (flink =
g_slist_next (flink))) {
const ECalComponentId *id = link->data;
+ guint32 custom_flags_val = flink ? GPOINTER_TO_UINT (flink->data) : 0;
gchar *uid;
g_warn_if_fail (id != NULL);
@@ -2589,6 +2654,16 @@ e_cal_cache_remove_components (ECalCache *cal_cache,
if (!id)
continue;
+ if (offline_flag == E_CACHE_IS_OFFLINE && flink) {
+ success = e_cal_cache_set_component_custom_flags (cal_cache,
+ e_cal_component_id_get_uid (id),
+ e_cal_component_id_get_rid (id),
+ custom_flags_val, cancellable, error);
+
+ if (!success)
+ break;
+ }
+
uid = ecc_encode_id_sql (e_cal_component_id_get_uid (id), e_cal_component_id_get_rid (id));
success = e_cache_remove (cache, uid, offline_flag, cancellable, error);
@@ -2683,6 +2758,123 @@ e_cal_cache_get_component_as_string (ECalCache *cal_cache,
return *out_icalstring != NULL;
}
+/**
+ * e_cal_cache_set_component_custom_flags:
+ * @cal_cache: an #ECalCache
+ * @uid: a UID of the component
+ * @rid: (nullable): an optional Recurrence-ID
+ * @custom_flags: the custom flags to set for the component
+ * @cancellable: optional #GCancellable object, or %NULL
+ * @error: return location for a #GError, or %NULL
+ *
+ * Sets or replaces the custom flags associated with a component
+ * identified by @uid and optionally @rid.
+ *
+ * Returns: Whether succeeded.
+ *
+ * Since: 3.36
+ **/
+gboolean
+e_cal_cache_set_component_custom_flags (ECalCache *cal_cache,
+ const gchar *uid,
+ const gchar *rid,
+ guint32 custom_flags,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gchar *id, *stmt;
+ gboolean success;
+
+ g_return_val_if_fail (E_IS_CAL_CACHE (cal_cache), FALSE);
+ g_return_val_if_fail (uid != NULL, FALSE);
+
+ id = ecc_encode_id_sql (uid, rid);
+
+ if (!e_cache_contains (E_CACHE (cal_cache), id, E_CACHE_INCLUDE_DELETED)) {
+ g_free (id);
+
+ if (rid && *rid)
+ g_set_error (error, E_CACHE_ERROR, E_CACHE_ERROR_NOT_FOUND, _("Object “%s”, “%s” not
found"), uid, rid);
+ else
+ g_set_error (error, E_CACHE_ERROR, E_CACHE_ERROR_NOT_FOUND, _("Object “%s” not
found"), uid);
+
+ return FALSE;
+ }
+
+ stmt = e_cache_sqlite_stmt_printf (
+ "UPDATE " E_CACHE_TABLE_OBJECTS " SET " ECC_COLUMN_CUSTOM_FLAGS "=%u"
+ " WHERE " E_CACHE_COLUMN_UID "=%Q",
+ custom_flags, id);
+
+ success = e_cache_sqlite_exec (E_CACHE (cal_cache), stmt, cancellable, error);
+
+ e_cache_sqlite_stmt_free (stmt);
+ g_free (id);
+
+ return success;
+}
+
+/**
+ * e_cal_cache_get_component_custom_flags:
+ * @cal_cache: an #ECalCache
+ * @uid: a UID of the component
+ * @rid: (nullable): an optional Recurrence-ID
+ * @out_custom_flags: (out): return location to store the custom flags
+ * @cancellable: optional #GCancellable object, or %NULL
+ * @error: return location for a #GError, or %NULL
+ *
+ * Gets the custom flags previously set for @uid and @rid, either with
+ * e_cal_cache_set_component_custom_flags(), when adding components or
+ * when removing components in offline.
+ *
+ * Returns: Whether succeeded.
+ *
+ * Since: 3.36
+ **/
+gboolean
+e_cal_cache_get_component_custom_flags (ECalCache *cal_cache,
+ const gchar *uid,
+ const gchar *rid,
+ guint32 *out_custom_flags,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gchar *id, *stmt;
+ guint64 value = 0;
+ gboolean success;
+
+ g_return_val_if_fail (E_IS_CAL_CACHE (cal_cache), FALSE);
+ g_return_val_if_fail (uid != NULL, FALSE);
+
+ id = ecc_encode_id_sql (uid, rid);
+
+ if (!e_cache_contains (E_CACHE (cal_cache), id, E_CACHE_INCLUDE_DELETED)) {
+ g_free (id);
+
+ if (rid && *rid)
+ g_set_error (error, E_CACHE_ERROR, E_CACHE_ERROR_NOT_FOUND, _("Object “%s”, “%s” not
found"), uid, rid);
+ else
+ g_set_error (error, E_CACHE_ERROR, E_CACHE_ERROR_NOT_FOUND, _("Object “%s” not
found"), uid);
+
+ return FALSE;
+ }
+
+ stmt = e_cache_sqlite_stmt_printf (
+ "SELECT " ECC_COLUMN_CUSTOM_FLAGS " FROM " E_CACHE_TABLE_OBJECTS
+ " WHERE " E_CACHE_COLUMN_UID "=%Q",
+ id);
+
+ success = e_cache_sqlite_select (E_CACHE (cal_cache), stmt, e_cal_cache_get_uint64_cb, &value,
cancellable, error);
+
+ e_cache_sqlite_stmt_free (stmt);
+ g_free (id);
+
+ if (out_custom_flags)
+ *out_custom_flags = (guint32) value;
+
+ return success;
+}
+
/**
* e_cal_cache_set_component_extra:
* @cal_cache: an #ECalCache
@@ -3007,6 +3199,7 @@ ecc_search_icalstrings_cb (ECalCache *cal_cache,
const gchar *revision,
const gchar *object,
const gchar *extra,
+ guint32 custom_flags,
EOfflineState offline_state,
gpointer user_data)
{
@@ -3094,6 +3287,7 @@ ecc_search_data_cb (ECalCache *cal_cache,
const gchar *revision,
const gchar *object,
const gchar *extra,
+ guint32 custom_flags,
EOfflineState offline_state,
gpointer user_data)
{
@@ -3115,6 +3309,7 @@ ecc_search_components_cb (ECalCache *cal_cache,
const gchar *revision,
const gchar *object,
const gchar *extra,
+ guint32 custom_flags,
EOfflineState offline_state,
gpointer user_data)
{
@@ -3136,6 +3331,7 @@ ecc_search_ids_cb (ECalCache *cal_cache,
const gchar *revision,
const gchar *object,
const gchar *extra,
+ guint32 custom_flags,
EOfflineState offline_state,
gpointer user_data)
{
@@ -3456,26 +3652,6 @@ e_cal_cache_delete_attachments (ECalCache *cal_cache,
return TRUE;
}
-static gboolean
-e_cal_cache_get_uint64_cb (ECache *cache,
- gint ncols,
- const gchar **column_names,
- const gchar **column_values,
- gpointer user_data)
-{
- guint64 *pui64 = user_data;
-
- g_return_val_if_fail (pui64 != NULL, FALSE);
-
- if (ncols == 1) {
- *pui64 = column_values[0] ? g_ascii_strtoull (column_values[0], NULL, 10) : 0;
- } else {
- *pui64 = 0;
- }
-
- return TRUE;
-}
-
static gint
e_cal_cache_get_current_timezone_refs (ECalCache *cal_cache,
const gchar *tzid,
@@ -3945,6 +4121,7 @@ ecc_search_delete_attachment_cb (ECalCache *cal_cache,
const gchar *revision,
const gchar *object,
const gchar *extra,
+ guint32 custom_flags,
EOfflineState offline_state,
gpointer user_data)
{
diff --git a/src/calendar/libedata-cal/e-cal-cache.h b/src/calendar/libedata-cal/e-cal-cache.h
index 995537eb5..bf15cab08 100644
--- a/src/calendar/libedata-cal/e-cal-cache.h
+++ b/src/calendar/libedata-cal/e-cal-cache.h
@@ -131,7 +131,8 @@ void e_cal_cache_search_data_free (/* ECalCacheSearchData * */ gpointer
ptr);
* @revision: the object revision
* @object: the object itself
* @extra: extra data stored with the object
- * @offline_state: objects offline state, one of #EOfflineState
+ * @custom_flags: object's custom flags
+ * @offline_state: object's offline state, one of #EOfflineState
* @user_data: user data, as used in e_cal_cache_search_with_callback()
*
* A callback called for each object row when using
@@ -147,6 +148,7 @@ typedef gboolean (* ECalCacheSearchFunc) (ECalCache *cal_cache,
const gchar *revision,
const gchar *object,
const gchar *extra,
+ guint32 custom_flags,
EOfflineState offline_state,
gpointer user_data);
@@ -201,23 +203,27 @@ gboolean e_cal_cache_contains (ECalCache *cal_cache,
gboolean e_cal_cache_put_component (ECalCache *cal_cache,
ECalComponent *component,
const gchar *extra,
+ guint32 custom_flags,
ECacheOfflineFlag offline_flag,
GCancellable *cancellable,
GError **error);
gboolean e_cal_cache_put_components (ECalCache *cal_cache,
const GSList *components, /* ECalComponent * */
const GSList *extras, /* gchar * */
+ const GSList *custom_flags, /* guint32, through
GUINT_TO_POINTER() */
ECacheOfflineFlag offline_flag,
GCancellable *cancellable,
GError **error);
gboolean e_cal_cache_remove_component (ECalCache *cal_cache,
const gchar *uid,
const gchar *rid,
+ guint32 custom_flag,
ECacheOfflineFlag offline_flag,
GCancellable *cancellable,
GError **error);
gboolean e_cal_cache_remove_components (ECalCache *cal_cache,
const GSList *ids, /* ECalComponentId * */
+ const GSList *custom_flags, /* guint32, through
GUINT_TO_POINTER() */
ECacheOfflineFlag offline_flag,
GCancellable *cancellable,
GError **error);
@@ -234,6 +240,20 @@ gboolean e_cal_cache_get_component_as_string
gchar **out_icalstring,
GCancellable *cancellable,
GError **error);
+gboolean e_cal_cache_set_component_custom_flags
+ (ECalCache *cal_cache,
+ const gchar *uid,
+ const gchar *rid,
+ guint32 custom_flags,
+ GCancellable *cancellable,
+ GError **error);
+gboolean e_cal_cache_get_component_custom_flags
+ (ECalCache *cal_cache,
+ const gchar *uid,
+ const gchar *rid,
+ guint32 *out_custom_flags,
+ GCancellable *cancellable,
+ GError **error);
gboolean e_cal_cache_set_component_extra (ECalCache *cal_cache,
const gchar *uid,
const gchar *rid,
diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c
index 3493d2b6a..2a5eab431 100644
--- a/src/calendar/libedata-cal/e-cal-meta-backend.c
+++ b/src/calendar/libedata-cal/e-cal-meta-backend.c
@@ -132,6 +132,7 @@ static gboolean ecmb_save_component_wrapper_sync (ECalMetaBackend *meta_backend,
EConflictResolution conflict_resolution,
const GSList *in_instances,
const gchar *extra,
+ guint32 opflags,
const gchar *orig_uid,
gboolean *out_requires_put,
gchar **out_new_uid,
@@ -309,6 +310,7 @@ ecmb_gather_locally_cached_objects_cb (ECalCache *cal_cache,
const gchar *revision,
const gchar *object,
const gchar *extra,
+ guint32 opflags,
EOfflineState offline_state,
gpointer user_data)
{
@@ -547,6 +549,7 @@ ecmb_upload_local_changes_sync (ECalMetaBackend *meta_backend,
for (link = offline_changes; link && success; link = g_slist_next (link)) {
ECalCacheOfflineChange *change = link->data;
gchar *extra = NULL;
+ guint32 opflags = 0;
success = !g_cancellable_set_error_if_cancelled (cancellable, error);
if (!success)
@@ -560,6 +563,9 @@ ecmb_upload_local_changes_sync (ECalMetaBackend *meta_backend,
if (!e_cal_cache_get_component_extra (cal_cache, change->uid, NULL, &extra, cancellable,
NULL))
extra = NULL;
+ if (!e_cal_cache_get_component_custom_flags (cal_cache, change->uid, NULL, &opflags,
cancellable, NULL))
+ opflags = 0;
+
if (change->state == E_OFFLINE_STATE_LOCALLY_CREATED ||
change->state == E_OFFLINE_STATE_LOCALLY_MODIFIED) {
GSList *instances = NULL;
@@ -568,7 +574,7 @@ ecmb_upload_local_changes_sync (ECalMetaBackend *meta_backend,
if (success) {
success = ecmb_save_component_wrapper_sync (meta_backend, cal_cache,
change->state == E_OFFLINE_STATE_LOCALLY_MODIFIED,
- conflict_resolution, instances, extra, change->uid, NULL, NULL, NULL,
cancellable, error);
+ conflict_resolution, instances, extra, opflags, change->uid, NULL,
NULL, NULL, cancellable, error);
}
g_slist_free_full (instances, g_object_unref);
@@ -576,7 +582,7 @@ ecmb_upload_local_changes_sync (ECalMetaBackend *meta_backend,
GError *local_error = NULL;
success = e_cal_meta_backend_remove_component_sync (meta_backend, conflict_resolution,
- change->uid, extra, change->object, cancellable, &local_error);
+ change->uid, extra, change->object, opflags, cancellable, &local_error);
if (!success) {
if (g_error_matches (local_error, E_DATA_CAL_ERROR, ObjectNotFound)) {
@@ -607,6 +613,7 @@ ecmb_maybe_remove_from_cache (ECalMetaBackend *meta_backend,
ECalCache *cal_cache,
ECacheOfflineFlag offline_flag,
const gchar *uid,
+ guint32 custom_flags,
GCancellable *cancellable,
GError **error)
{
@@ -640,7 +647,7 @@ ecmb_maybe_remove_from_cache (ECalMetaBackend *meta_backend,
id = e_cal_component_get_id (comp);
if (id) {
if (!e_cal_cache_delete_attachments (cal_cache, e_cal_component_get_icalcomponent
(comp), cancellable, error) ||
- !e_cal_cache_remove_component (cal_cache, e_cal_component_id_get_uid (id),
e_cal_component_id_get_rid (id), offline_flag, cancellable, error)) {
+ !e_cal_cache_remove_component (cal_cache, e_cal_component_id_get_uid (id),
e_cal_component_id_get_rid (id), custom_flags, offline_flag, cancellable, error)) {
e_cal_component_id_free (id);
g_slist_free_full (comps, g_object_unref);
@@ -906,6 +913,7 @@ ecmb_put_one_component (ECalMetaBackend *meta_backend,
ECacheOfflineFlag offline_flag,
ECalComponent *comp,
const gchar *extra,
+ guint32 opflags,
GSList **inout_cache_instances,
GCancellable *cancellable,
GError **error)
@@ -920,7 +928,7 @@ ecmb_put_one_component (ECalMetaBackend *meta_backend,
e_cal_component_get_icalcomponent (comp), cancellable, error);
}
- success = success && e_cal_cache_put_component (cal_cache, comp, extra, offline_flag, cancellable,
error);
+ success = success && e_cal_cache_put_component (cal_cache, comp, extra, opflags, offline_flag,
cancellable, error);
if (success) {
ECalComponent *existing = NULL;
@@ -953,6 +961,7 @@ ecmb_put_instances (ECalMetaBackend *meta_backend,
ECacheOfflineFlag offline_flag,
const GSList *new_instances, /* ECalComponent * */
const gchar *extra,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
@@ -973,7 +982,7 @@ ecmb_put_instances (ECalMetaBackend *meta_backend,
for (link = (GSList *) new_instances; link && success; link = g_slist_next (link)) {
ECalComponent *comp = link->data;
- success = ecmb_put_one_component (meta_backend, cal_cache, offline_flag, comp, extra,
&cache_instances, cancellable, error);
+ success = ecmb_put_one_component (meta_backend, cal_cache, offline_flag, comp, extra,
opflags, &cache_instances, cancellable, error);
}
/* What left got removed from the remote side, notify about it */
@@ -993,7 +1002,7 @@ ecmb_put_instances (ECalMetaBackend *meta_backend,
if (!success)
break;
- success = e_cal_cache_remove_component (cal_cache, e_cal_component_id_get_uid (id),
e_cal_component_id_get_rid (id), offline_flag, cancellable, error);
+ success = e_cal_cache_remove_component (cal_cache, e_cal_component_id_get_uid (id),
e_cal_component_id_get_rid (id), opflags, offline_flag, cancellable, error);
e_cal_backend_notify_component_removed (cal_backend, id, comp, NULL);
@@ -1109,7 +1118,7 @@ ecmb_load_component_wrapper_sync (ECalMetaBackend *meta_backend,
new_instances = g_slist_reverse (new_instances);
success = ecmb_put_instances (meta_backend, cal_cache, loaded_uid ? loaded_uid : uid,
offline_flag,
- new_instances, extra ? extra : preloaded_extra, cancellable, &local_error);
+ new_instances, extra ? extra : preloaded_extra, 0, cancellable, &local_error);
if (success && out_new_uid)
*out_new_uid = g_strdup (loaded_uid ? loaded_uid : uid);
@@ -1140,6 +1149,7 @@ ecmb_save_component_wrapper_sync (ECalMetaBackend *meta_backend,
EConflictResolution conflict_resolution,
const GSList *in_instances,
const gchar *extra,
+ guint32 opflags,
const gchar *orig_uid,
gboolean *out_requires_put,
gchar **out_new_uid,
@@ -1181,7 +1191,7 @@ ecmb_save_component_wrapper_sync (ECalMetaBackend *meta_backend,
}
success = success && e_cal_meta_backend_save_component_sync (meta_backend, overwrite_existing,
conflict_resolution,
- instances ? instances : in_instances, extra, &new_uid, &new_extra, cancellable, &local_error);
+ instances ? instances : in_instances, extra, opflags, &new_uid, &new_extra, cancellable,
&local_error);
if (success && new_uid && *new_uid) {
gchar *loaded_uid = NULL;
@@ -1190,7 +1200,7 @@ ecmb_save_component_wrapper_sync (ECalMetaBackend *meta_backend,
new_extra ? new_extra : extra, &loaded_uid, cancellable, error);
if (success && g_strcmp0 (loaded_uid, orig_uid) != 0)
- success = ecmb_maybe_remove_from_cache (meta_backend, cal_cache, E_CACHE_IS_ONLINE,
orig_uid, cancellable, error);
+ success = ecmb_maybe_remove_from_cache (meta_backend, cal_cache, E_CACHE_IS_ONLINE,
orig_uid, opflags, cancellable, error);
if (success && out_new_uid)
*out_new_uid = loaded_uid;
@@ -1568,6 +1578,7 @@ ecmb_create_object_sync (ECalMetaBackend *meta_backend,
ECalCache *cal_cache,
ECacheOfflineFlag *offline_flag,
EConflictResolution conflict_resolution,
+ guint32 opflags,
ECalComponent *comp,
gchar **out_new_uid,
ECalComponent **out_new_comp,
@@ -1637,7 +1648,7 @@ ecmb_create_object_sync (ECalMetaBackend *meta_backend,
instances = g_slist_prepend (NULL, comp);
- if (!ecmb_save_component_wrapper_sync (meta_backend, cal_cache, FALSE, conflict_resolution,
instances, NULL, uid,
+ if (!ecmb_save_component_wrapper_sync (meta_backend, cal_cache, FALSE, conflict_resolution,
instances, NULL, opflags, uid,
&requires_put, &new_uid, &new_extra, cancellable, error)) {
g_slist_free (instances);
return FALSE;
@@ -1647,7 +1658,7 @@ ecmb_create_object_sync (ECalMetaBackend *meta_backend,
}
if (requires_put) {
- success = e_cal_cache_put_component (cal_cache, comp, new_extra, *offline_flag, cancellable,
error);
+ success = e_cal_cache_put_component (cal_cache, comp, new_extra, opflags, *offline_flag,
cancellable, error);
if (success && !out_new_comp) {
e_cal_backend_notify_component_created (E_CAL_BACKEND (meta_backend), comp);
}
@@ -1679,6 +1690,7 @@ ecmb_create_objects_sync (ECalBackendSync *sync_backend,
EDataCal *cal,
GCancellable *cancellable,
const GSList *calobjs,
+ guint32 opflags,
GSList **out_uids,
GSList **out_new_components,
GError **error)
@@ -1686,7 +1698,7 @@ ecmb_create_objects_sync (ECalBackendSync *sync_backend,
ECalMetaBackend *meta_backend;
ECalCache *cal_cache;
ECacheOfflineFlag offline_flag = E_CACHE_OFFLINE_UNKNOWN;
- EConflictResolution conflict_resolution = E_CONFLICT_RESOLUTION_FAIL;
+ EConflictResolution conflict_resolution = e_cal_util_operation_flags_to_conflict_resolution (opflags);
ICalComponentKind backend_kind;
GSList *link;
gboolean success = TRUE;
@@ -1725,7 +1737,7 @@ ecmb_create_objects_sync (ECalBackendSync *sync_backend,
}
success = ecmb_create_object_sync (meta_backend, cal_cache, &offline_flag,
conflict_resolution,
- comp, &new_uid, &new_comp, cancellable, error);
+ opflags, comp, &new_uid, &new_comp, cancellable, error);
if (success) {
*out_uids = g_slist_prepend (*out_uids, new_uid);
@@ -1747,6 +1759,7 @@ ecmb_modify_object_sync (ECalMetaBackend *meta_backend,
ECacheOfflineFlag *offline_flag,
EConflictResolution conflict_resolution,
ECalObjModType mod,
+ guint32 opflags,
ECalComponent *comp,
ECalComponent **out_old_comp,
ECalComponent **out_new_comp,
@@ -1915,8 +1928,8 @@ ecmb_modify_object_sync (ECalMetaBackend *meta_backend,
e_cal_recur_ensure_end_dates (comp, TRUE, e_cal_cache_resolve_timezone_cb,
cal_cache, cancellable, NULL);
- success = ecmb_create_object_sync (meta_backend, cal_cache, offline_flag,
E_CONFLICT_RESOLUTION_FAIL,
- comp, NULL, NULL, cancellable, error);
+ success = ecmb_create_object_sync (meta_backend, cal_cache, offline_flag,
conflict_resolution,
+ opflags, comp, NULL, NULL, cancellable, error);
}
g_clear_object (&master_dtstart);
@@ -1943,11 +1956,12 @@ ecmb_modify_object_sync (ECalMetaBackend *meta_backend,
if (success && *offline_flag == E_CACHE_IS_ONLINE) {
success = ecmb_save_component_wrapper_sync (meta_backend, cal_cache, TRUE,
conflict_resolution,
- instances, extra, e_cal_component_id_get_uid (id), &requires_put, &new_uid,
&new_extra, cancellable, error);
+ instances, extra, opflags, e_cal_component_id_get_uid (id), &requires_put, &new_uid,
&new_extra, cancellable, error);
}
if (success && requires_put)
- success = ecmb_put_instances (meta_backend, cal_cache, e_cal_component_id_get_uid (id),
*offline_flag, instances, new_extra ? new_extra : extra, cancellable, error);
+ success = ecmb_put_instances (meta_backend, cal_cache, e_cal_component_id_get_uid (id),
*offline_flag, instances,
+ new_extra ? new_extra : extra, opflags, cancellable, error);
if (!success) {
g_clear_object (&old_comp);
@@ -1981,6 +1995,7 @@ ecmb_modify_objects_sync (ECalBackendSync *sync_backend,
GCancellable *cancellable,
const GSList *calobjs,
ECalObjModType mod,
+ guint32 opflags,
GSList **out_old_components,
GSList **out_new_components,
GError **error)
@@ -1988,7 +2003,7 @@ ecmb_modify_objects_sync (ECalBackendSync *sync_backend,
ECalMetaBackend *meta_backend;
ECalCache *cal_cache;
ECacheOfflineFlag offline_flag = E_CACHE_OFFLINE_UNKNOWN;
- EConflictResolution conflict_resolution = E_CONFLICT_RESOLUTION_FAIL;
+ EConflictResolution conflict_resolution = e_cal_util_operation_flags_to_conflict_resolution (opflags);
ICalComponentKind backend_kind;
GSList *link;
gboolean success = TRUE;
@@ -2024,7 +2039,7 @@ ecmb_modify_objects_sync (ECalBackendSync *sync_backend,
}
success = ecmb_modify_object_sync (meta_backend, cal_cache, &offline_flag,
conflict_resolution,
- mod, comp, &old_comp, &new_comp, cancellable, error);
+ mod, opflags, comp, &old_comp, &new_comp, cancellable, error);
if (success) {
*out_old_components = g_slist_prepend (*out_old_components, old_comp);
@@ -2046,6 +2061,7 @@ ecmb_remove_object_sync (ECalMetaBackend *meta_backend,
ECacheOfflineFlag *offline_flag,
EConflictResolution conflict_resolution,
ECalObjModType mod,
+ guint32 opflags,
const gchar *uid,
const gchar *rid,
ECalComponent **out_old_comp,
@@ -2254,7 +2270,7 @@ ecmb_remove_object_sync (ECalMetaBackend *meta_backend,
/* Use the master object, if exists */
if (e_cal_cache_get_component_as_string (cal_cache, uid, NULL, &ical_string,
cancellable, NULL)) {
- success = e_cal_meta_backend_remove_component_sync (meta_backend,
conflict_resolution, uid, extra, ical_string, cancellable, &local_error);
+ success = e_cal_meta_backend_remove_component_sync (meta_backend,
conflict_resolution, uid, extra, ical_string, opflags, cancellable, &local_error);
g_free (ical_string);
} else {
@@ -2288,7 +2304,7 @@ ecmb_remove_object_sync (ECalMetaBackend *meta_backend,
/* This pretends the first instance is the master object and
the implementations should count with it */
success = e_cal_meta_backend_remove_component_sync
(meta_backend, conflict_resolution,
- e_cal_component_id_get_uid (id), comp_extra,
ical_string, cancellable, &local_error);
+ e_cal_component_id_get_uid (id), comp_extra,
ical_string, opflags, cancellable, &local_error);
e_cal_component_id_free (id);
g_clear_pointer (&ical_string, g_free);
@@ -2308,7 +2324,7 @@ ecmb_remove_object_sync (ECalMetaBackend *meta_backend,
}
}
- success = success && ecmb_maybe_remove_from_cache (meta_backend, cal_cache,
*offline_flag, uid, cancellable, error);
+ success = success && ecmb_maybe_remove_from_cache (meta_backend, cal_cache,
*offline_flag, uid, opflags, cancellable, error);
} else {
gboolean requires_put = TRUE;
gchar *new_uid = NULL, *new_extra = NULL;
@@ -2329,11 +2345,13 @@ ecmb_remove_object_sync (ECalMetaBackend *meta_backend,
if (*offline_flag == E_CACHE_IS_ONLINE) {
success = ecmb_save_component_wrapper_sync (meta_backend, cal_cache, TRUE,
conflict_resolution,
- instances, extra, uid, &requires_put, &new_uid, &new_extra,
cancellable, error);
+ instances, extra, opflags, uid, &requires_put, &new_uid, &new_extra,
cancellable, error);
}
- if (success && requires_put)
- success = ecmb_put_instances (meta_backend, cal_cache, uid, *offline_flag,
instances, new_extra ? new_extra : extra, cancellable, error);
+ if (success && requires_put) {
+ success = ecmb_put_instances (meta_backend, cal_cache, uid, *offline_flag,
instances,
+ new_extra ? new_extra : extra, opflags, cancellable, error);
+ }
if (success && new_uid && !requires_put) {
g_clear_object (&new_comp);
@@ -2370,6 +2388,7 @@ ecmb_remove_objects_sync (ECalBackendSync *sync_backend,
GCancellable *cancellable,
const GSList *ids,
ECalObjModType mod,
+ guint32 opflags,
GSList **out_old_components,
GSList **out_new_components,
GError **error)
@@ -2377,7 +2396,7 @@ ecmb_remove_objects_sync (ECalBackendSync *sync_backend,
ECalMetaBackend *meta_backend;
ECalCache *cal_cache;
ECacheOfflineFlag offline_flag = E_CACHE_OFFLINE_UNKNOWN;
- EConflictResolution conflict_resolution = E_CONFLICT_RESOLUTION_FAIL;
+ EConflictResolution conflict_resolution = e_cal_util_operation_flags_to_conflict_resolution (opflags);
GSList *link;
gboolean success = TRUE;
@@ -2407,8 +2426,8 @@ ecmb_remove_objects_sync (ECalBackendSync *sync_backend,
break;
}
- success = ecmb_remove_object_sync (meta_backend, cal_cache, &offline_flag,
conflict_resolution,
- mod, e_cal_component_id_get_uid (id), e_cal_component_id_get_rid (id), &old_comp,
&new_comp, cancellable, error);
+ success = ecmb_remove_object_sync (meta_backend, cal_cache, &offline_flag,
conflict_resolution, mod, opflags,
+ e_cal_component_id_get_uid (id), e_cal_component_id_get_rid (id), &old_comp,
&new_comp, cancellable, error);
if (success) {
*out_old_components = g_slist_prepend (*out_old_components, old_comp);
@@ -2429,6 +2448,7 @@ ecmb_receive_object_sync (ECalMetaBackend *meta_backend,
EConflictResolution conflict_resolution,
ECalComponent *comp,
ICalPropertyMethod method,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
@@ -2485,20 +2505,20 @@ ecmb_receive_object_sync (ECalMetaBackend *meta_backend,
if (is_in_cache) {
if (!is_declined) {
success = ecmb_modify_object_sync (meta_backend, cal_cache, offline_flag,
conflict_resolution,
- mod, comp, NULL, NULL, cancellable, error);
+ mod, opflags, comp, NULL, NULL, cancellable, error);
} else {
- success = ecmb_remove_object_sync (meta_backend, cal_cache, offline_flag,
conflict_resolution,
- mod, e_cal_component_id_get_uid (id), e_cal_component_id_get_rid
(id), NULL, NULL, cancellable, error);
+ success = ecmb_remove_object_sync (meta_backend, cal_cache, offline_flag,
conflict_resolution, mod, opflags,
+ e_cal_component_id_get_uid (id), e_cal_component_id_get_rid (id),
NULL, NULL, cancellable, error);
}
} else if (!is_declined) {
success = ecmb_create_object_sync (meta_backend, cal_cache, offline_flag,
conflict_resolution,
- comp, NULL, NULL, cancellable, error);
+ opflags, comp, NULL, NULL, cancellable, error);
}
break;
case I_CAL_METHOD_CANCEL:
if (is_in_cache) {
- success = ecmb_remove_object_sync (meta_backend, cal_cache, offline_flag,
conflict_resolution,
- E_CAL_OBJ_MOD_THIS, e_cal_component_id_get_uid (id),
e_cal_component_id_get_rid (id), NULL, NULL, cancellable, error);
+ success = ecmb_remove_object_sync (meta_backend, cal_cache, offline_flag,
conflict_resolution, E_CAL_OBJ_MOD_THIS, opflags,
+ e_cal_component_id_get_uid (id), e_cal_component_id_get_rid (id), NULL, NULL,
cancellable, error);
} else {
g_propagate_error (error, e_data_cal_create_error (ObjectNotFound, NULL));
}
@@ -2519,11 +2539,12 @@ ecmb_receive_objects_sync (ECalBackendSync *sync_backend,
EDataCal *cal,
GCancellable *cancellable,
const gchar *calobj,
+ guint32 opflags,
GError **error)
{
ECalMetaBackend *meta_backend;
ECacheOfflineFlag offline_flag = E_CACHE_OFFLINE_UNKNOWN;
- EConflictResolution conflict_resolution = E_CONFLICT_RESOLUTION_FAIL;
+ EConflictResolution conflict_resolution = e_cal_util_operation_flags_to_conflict_resolution (opflags);
ECalCache *cal_cache;
ECalComponent *comp;
ICalComponent *icomp, *subcomp;
@@ -2599,7 +2620,7 @@ ecmb_receive_objects_sync (ECalBackendSync *sync_backend,
}
success = ecmb_receive_object_sync (meta_backend, cal_cache, &offline_flag,
conflict_resolution,
- comp, method, cancellable, error);
+ comp, method, opflags, cancellable, error);
}
g_slist_free_full (comps, g_object_unref);
@@ -2612,6 +2633,7 @@ ecmb_send_objects_sync (ECalBackendSync *sync_backend,
EDataCal *cal,
GCancellable *cancellable,
const gchar *calobj,
+ guint32 opflags,
GSList **out_users,
gchar **out_modified_calobj,
GError **error)
@@ -2726,6 +2748,7 @@ ecmb_discard_alarm_sync (ECalBackendSync *sync_backend,
const gchar *uid,
const gchar *rid,
const gchar *auid,
+ guint32 opflags,
GError **error)
{
g_return_if_fail (E_IS_CAL_META_BACKEND (sync_backend));
@@ -4640,7 +4663,7 @@ e_cal_meta_backend_process_changes_sync (ECalMetaBackend *meta_backend,
continue;
}
- success = ecmb_maybe_remove_from_cache (meta_backend, cal_cache, E_CACHE_IS_ONLINE, nfo->uid,
cancellable, error);
+ success = ecmb_maybe_remove_from_cache (meta_backend, cal_cache, E_CACHE_IS_ONLINE, nfo->uid,
0, cancellable, error);
}
/* Then modified objects */
@@ -5075,6 +5098,7 @@ e_cal_meta_backend_load_component_sync (ECalMetaBackend *meta_backend,
* @conflict_resolution: one of #EConflictResolution, what to do on conflicts
* @instances: (element-type ECalComponent): instances of the component to save
* @extra: (nullable): extra data saved with the components in an #ECalCache
+ * @opflags: bit-or of #ECalOperationFlags
* @out_new_uid: (out) (transfer full): return location for the UID of the saved component
* @out_new_extra: (out) (transfer full): return location for the extra data to store with the component
* @cancellable: optional #GCancellable object, or %NULL
@@ -5120,6 +5144,7 @@ e_cal_meta_backend_save_component_sync (ECalMetaBackend *meta_backend,
EConflictResolution conflict_resolution,
const GSList *instances,
const gchar *extra,
+ guint32 opflags,
gchar **out_new_uid,
gchar **out_new_extra,
GCancellable *cancellable,
@@ -5159,6 +5184,7 @@ e_cal_meta_backend_save_component_sync (ECalMetaBackend *meta_backend,
conflict_resolution,
instances,
extra,
+ opflags,
out_new_uid,
out_new_extra,
cancellable,
@@ -5181,6 +5207,7 @@ e_cal_meta_backend_save_component_sync (ECalMetaBackend *meta_backend,
* @uid: a component UID
* @extra: (nullable): extra data being saved with the component in the local cache, or %NULL
* @object: (nullable): corresponding iCalendar object, as stored in the local cache, or %NULL
+ * @opflags: bit-or of #ECalOperationFlags
* @cancellable: optional #GCancellable object, or %NULL
* @error: return location for a #GError, or %NULL
*
@@ -5201,6 +5228,7 @@ e_cal_meta_backend_remove_component_sync (ECalMetaBackend *meta_backend,
const gchar *uid,
const gchar *extra,
const gchar *object,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
@@ -5230,7 +5258,7 @@ e_cal_meta_backend_remove_component_sync (ECalMetaBackend *meta_backend,
g_clear_error (&local_error);
repeat_count++;
- success = klass->remove_component_sync (meta_backend, conflict_resolution, uid, extra,
object, cancellable, &local_error);
+ success = klass->remove_component_sync (meta_backend, conflict_resolution, uid, extra,
object, opflags, cancellable, &local_error);
if (!success && repeat_count <= MAX_REPEAT_COUNT && !ecmb_maybe_wait_for_credentials
(meta_backend, wait_credentials_stamp, local_error, cancellable))
break;
diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.h b/src/calendar/libedata-cal/e-cal-meta-backend.h
index 8480a1609..3057bf27b 100644
--- a/src/calendar/libedata-cal/e-cal-meta-backend.h
+++ b/src/calendar/libedata-cal/e-cal-meta-backend.h
@@ -136,6 +136,7 @@ struct _ECalMetaBackendClass {
EConflictResolution conflict_resolution,
const GSList *instances, /* ECalComponent * */
const gchar *extra,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
gchar **out_new_uid,
gchar **out_new_extra,
GCancellable *cancellable,
@@ -146,6 +147,7 @@ struct _ECalMetaBackendClass {
const gchar *uid,
const gchar *extra,
const gchar *object,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GError **error);
gboolean (* search_sync) (ECalMetaBackend *meta_backend,
@@ -280,6 +282,7 @@ gboolean e_cal_meta_backend_save_component_sync
EConflictResolution conflict_resolution,
const GSList *instances, /* ECalComponent * */
const gchar *extra,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
gchar **out_new_uid,
gchar **out_new_extra,
GCancellable *cancellable,
@@ -290,6 +293,7 @@ gboolean e_cal_meta_backend_remove_component_sync
const gchar *uid,
const gchar *extra,
const gchar *object,
+ guint32 opflags, /* bit-or of ECalOperationFlags */
GCancellable *cancellable,
GError **error);
gboolean e_cal_meta_backend_search_sync (ECalMetaBackend *meta_backend,
diff --git a/src/calendar/libedata-cal/e-data-cal.c b/src/calendar/libedata-cal/e-data-cal.c
index f913dd6f7..8963e02cf 100644
--- a/src/calendar/libedata-cal/e-data-cal.c
+++ b/src/calendar/libedata-cal/e-data-cal.c
@@ -951,6 +951,7 @@ static gboolean
data_cal_handle_create_objects_cb (EDBusCalendar *dbus_interface,
GDBusMethodInvocation *invocation,
const gchar * const *in_calobjs,
+ guint32 in_opflags,
EDataCal *data_cal)
{
ECalBackend *backend;
@@ -964,6 +965,7 @@ data_cal_handle_create_objects_cb (EDBusCalendar *dbus_interface,
e_cal_backend_create_objects (
backend,
in_calobjs,
+ in_opflags,
async_context->cancellable,
data_cal_complete_create_objects_cb,
async_context);
@@ -1002,6 +1004,7 @@ data_cal_handle_modify_objects_cb (EDBusCalendar *dbus_interface,
GDBusMethodInvocation *invocation,
const gchar * const *in_ics_objects,
const gchar *in_mod_type,
+ guint32 in_opflags,
EDataCal *data_cal)
{
ECalBackend *backend;
@@ -1036,7 +1039,7 @@ data_cal_handle_modify_objects_cb (EDBusCalendar *dbus_interface,
e_cal_backend_modify_objects (
backend,
- in_ics_objects, mod,
+ in_ics_objects, mod, in_opflags,
async_context->cancellable,
data_cal_complete_modify_objects_cb,
async_context);
@@ -1075,6 +1078,7 @@ data_cal_handle_remove_objects_cb (EDBusCalendar *dbus_interface,
GDBusMethodInvocation *invocation,
GVariant *in_uid_rid_array,
const gchar *in_mod_type,
+ guint32 in_opflags,
EDataCal *data_cal)
{
ECalBackend *backend;
@@ -1125,7 +1129,7 @@ data_cal_handle_remove_objects_cb (EDBusCalendar *dbus_interface,
e_cal_backend_remove_objects (
backend,
- component_ids.head, mod,
+ component_ids.head, mod, in_opflags,
async_context->cancellable,
data_cal_complete_remove_objects_cb,
async_context);
@@ -1166,6 +1170,7 @@ static gboolean
data_cal_handle_receive_objects_cb (EDBusCalendar *dbus_interface,
GDBusMethodInvocation *invocation,
const gchar *in_calobj,
+ guint32 in_opflags,
EDataCal *data_cal)
{
ECalBackend *backend;
@@ -1179,6 +1184,7 @@ data_cal_handle_receive_objects_cb (EDBusCalendar *dbus_interface,
e_cal_backend_receive_objects (
backend,
in_calobj,
+ in_opflags,
async_context->cancellable,
data_cal_complete_receive_objects_cb,
async_context);
@@ -1246,6 +1252,7 @@ static gboolean
data_cal_handle_send_objects_cb (EDBusCalendar *dbus_interface,
GDBusMethodInvocation *invocation,
const gchar *in_calobj,
+ guint32 in_opflags,
EDataCal *data_cal)
{
ECalBackend *backend;
@@ -1259,6 +1266,7 @@ data_cal_handle_send_objects_cb (EDBusCalendar *dbus_interface,
e_cal_backend_send_objects (
backend,
in_calobj,
+ in_opflags,
async_context->cancellable,
data_cal_complete_send_objects_cb,
async_context);
@@ -1371,6 +1379,7 @@ data_cal_handle_discard_alarm_cb (EDBusCalendar *dbus_interface,
const gchar *in_uid,
const gchar *in_rid,
const gchar *in_alarm_uid,
+ guint32 in_opflags,
EDataCal *data_cal)
{
ECalBackend *backend;
@@ -1388,7 +1397,7 @@ data_cal_handle_discard_alarm_cb (EDBusCalendar *dbus_interface,
e_cal_backend_discard_alarm (
backend,
- in_uid, in_rid, in_alarm_uid,
+ in_uid, in_rid, in_alarm_uid, in_opflags,
async_context->cancellable,
data_cal_complete_discard_alarm_cb,
async_context);
diff --git a/src/libebackend/e-backend-enums.h b/src/libebackend/e-backend-enums.h
index 5c3656960..6fefc40a1 100644
--- a/src/libebackend/e-backend-enums.h
+++ b/src/libebackend/e-backend-enums.h
@@ -103,26 +103,4 @@ typedef enum {
E_OFFLINE_STATE_LOCALLY_DELETED
} EOfflineState;
-/**
- * EConflictResolution:
- * @E_CONFLICT_RESOLUTION_FAIL: Fail when a write-conflict occurs.
- * @E_CONFLICT_RESOLUTION_USE_NEWER: Use newer version of the object,
- * which can be either the server version or the local version of it.
- * @E_CONFLICT_RESOLUTION_KEEP_SERVER: Keep server object on conflict.
- * @E_CONFLICT_RESOLUTION_KEEP_LOCAL: Write local version of the object on conflict.
- * @E_CONFLICT_RESOLUTION_WRITE_COPY: Create a new copy of the object on conflict.
- *
- * Defines what to do when a conflict between the locally stored and
- * remotely stored object versions happen during object modify or remove.
- *
- * Since: 3.26
- **/
-typedef enum {
- E_CONFLICT_RESOLUTION_FAIL = 0,
- E_CONFLICT_RESOLUTION_USE_NEWER,
- E_CONFLICT_RESOLUTION_KEEP_SERVER,
- E_CONFLICT_RESOLUTION_KEEP_LOCAL,
- E_CONFLICT_RESOLUTION_WRITE_COPY
-} EConflictResolution;
-
#endif /* E_BACKEND_ENUMS_H */
diff --git a/src/libedataserver/e-source-enums.h b/src/libedataserver/e-source-enums.h
index ec56c2b9e..19adc28b7 100644
--- a/src/libedataserver/e-source-enums.h
+++ b/src/libedataserver/e-source-enums.h
@@ -289,4 +289,26 @@ typedef enum {
E_THREE_STATE_INCONSISTENT
} EThreeState;
+/**
+ * EConflictResolution:
+ * @E_CONFLICT_RESOLUTION_FAIL: Fail when a write-conflict occurs.
+ * @E_CONFLICT_RESOLUTION_USE_NEWER: Use newer version of the object,
+ * which can be either the server version or the local version of it.
+ * @E_CONFLICT_RESOLUTION_KEEP_SERVER: Keep server object on conflict.
+ * @E_CONFLICT_RESOLUTION_KEEP_LOCAL: Write local version of the object on conflict.
+ * @E_CONFLICT_RESOLUTION_WRITE_COPY: Create a new copy of the object on conflict.
+ *
+ * Defines what to do when a conflict between the locally stored and
+ * remotely stored object versions happen during object modify or remove.
+ *
+ * Since: 3.26
+ **/
+typedef enum {
+ E_CONFLICT_RESOLUTION_FAIL = 0,
+ E_CONFLICT_RESOLUTION_USE_NEWER,
+ E_CONFLICT_RESOLUTION_KEEP_SERVER,
+ E_CONFLICT_RESOLUTION_KEEP_LOCAL,
+ E_CONFLICT_RESOLUTION_WRITE_COPY
+} EConflictResolution;
+
#endif /* E_SOURCE_ENUMS_H */
diff --git a/src/private/org.gnome.evolution.dataserver.Calendar.xml
b/src/private/org.gnome.evolution.dataserver.Calendar.xml
index 2d8949e18..4caa6f9dc 100644
--- a/src/private/org.gnome.evolution.dataserver.Calendar.xml
+++ b/src/private/org.gnome.evolution.dataserver.Calendar.xml
@@ -46,25 +46,30 @@
<method name="CreateObjects">
<arg name="ics_objects" direction="in" type="as"/>
+ <arg name="opflags" direction="in" type="u"/>
<arg name="uids" direction="out" type="as"/>
</method>
<method name="ModifyObjects">
<arg name="ics_objects" direction="in" type="as"/>
<arg name="mod_type" direction="in" type="s"/>
+ <arg name="opflags" direction="in" type="u"/>
</method>
<method name="RemoveObjects">
<arg name="uid_rid_array" direction="in" type="a(ss)"/>
<arg name="mod_type" direction="in" type="s"/>
+ <arg name="opflags" direction="in" type="u"/>
</method>
<method name="ReceiveObjects">
<arg name="ics_object" direction="in" type="s"/>
+ <arg name="opflags" direction="in" type="u"/>
</method>
<method name="SendObjects">
<arg name="ics_object" direction="in" type="s"/>
+ <arg name="opflags" direction="in" type="u"/>
<arg name="users" direction="out" type="as"/>
<arg name="out_ics_object" direction="out" type="s"/>
</method>
@@ -97,6 +102,7 @@
<arg name="uid" direction="in" type="s"/>
<arg name="rid" direction="in" type="s"/>
<arg name="alarm_uid" direction="in" type="s"/>
+ <arg name="opflags" direction="in" type="u"/>
</method>
<method name="GetTimezone">
diff --git a/tests/libecal/test-cal-client-bulk-methods.c b/tests/libecal/test-cal-client-bulk-methods.c
index e80719b08..77d9f64bb 100644
--- a/tests/libecal/test-cal-client-bulk-methods.c
+++ b/tests/libecal/test-cal-client-bulk-methods.c
@@ -148,7 +148,7 @@ test_bulk_methods_sync (ECalClient *cal_client,
g_assert_nonnull (icomps);
/* Create all the objects in bulk */
- if (!e_cal_client_create_objects_sync (cal_client, icomps, &uids, NULL, &error))
+ if (!e_cal_client_create_objects_sync (cal_client, icomps, E_CAL_OPERATION_FLAG_NONE, &uids, NULL,
&error))
g_error ("create objects sync: %s", error->message);
g_assert (uids != NULL);
@@ -179,7 +179,7 @@ test_bulk_methods_sync (ECalClient *cal_client,
}
/* Save the modified objects in bulk */
- if (!e_cal_client_modify_objects_sync (cal_client, icomps, E_CAL_OBJ_MOD_ALL, NULL, &error))
+ if (!e_cal_client_modify_objects_sync (cal_client, icomps, E_CAL_OBJ_MOD_ALL,
E_CAL_OPERATION_FLAG_NONE, NULL, &error))
g_error ("modify objects sync: %s", error->message);
/* Retrieve all the objects and check that they have been modified */
@@ -188,7 +188,7 @@ test_bulk_methods_sync (ECalClient *cal_client,
/* Remove all the objects in bulk */
ids = uid_slist_to_ecalcomponentid_slist (uids);
- if (!e_cal_client_remove_objects_sync (cal_client, ids, E_CAL_OBJ_MOD_ALL, NULL, &error))
+ if (!e_cal_client_remove_objects_sync (cal_client, ids, E_CAL_OBJ_MOD_ALL, E_CAL_OPERATION_FLAG_NONE,
NULL, &error))
g_error ("remove objects sync: %s", error->message);
g_slist_free_full (ids, e_cal_component_id_free);
@@ -253,8 +253,8 @@ bulk_async_modify_objects_cb (GObject *source_object,
/* Remove all the objects in bulk */
async_context->ids = uid_slist_to_ecalcomponentid_slist (async_context->uids);
- e_cal_client_remove_objects (async_context->cal_client, async_context->ids, E_CAL_OBJ_MOD_ALL, NULL,
- bulk_async_remove_objects_cb, async_context);
+ e_cal_client_remove_objects (async_context->cal_client, async_context->ids, E_CAL_OBJ_MOD_ALL,
E_CAL_OPERATION_FLAG_NONE,
+ NULL, bulk_async_remove_objects_cb, async_context);
}
static void
@@ -299,8 +299,8 @@ bulk_async_create_objects_cb (GObject *source_object,
g_free (summary);
}
- e_cal_client_modify_objects (async_context->cal_client, async_context->icomps, E_CAL_OBJ_MOD_ALL,
NULL,
- bulk_async_modify_objects_cb, async_context);
+ e_cal_client_modify_objects (async_context->cal_client, async_context->icomps, E_CAL_OBJ_MOD_ALL,
E_CAL_OPERATION_FLAG_NONE,
+ NULL, bulk_async_modify_objects_cb, async_context);
}
static void
@@ -317,7 +317,7 @@ test_bulk_methods_async (ECalClient *cal_client,
async_context.uids = NULL;
async_context.main_loop = g_main_loop_new (NULL, FALSE);
- e_cal_client_create_objects (async_context.cal_client, async_context.icomps, NULL,
+ e_cal_client_create_objects (async_context.cal_client, async_context.icomps,
E_CAL_OPERATION_FLAG_NONE, NULL,
bulk_async_create_objects_cb, &async_context);
g_main_loop_run (async_context.main_loop);
diff --git a/tests/libecal/test-cal-client-create-object.c b/tests/libecal/test-cal-client-create-object.c
index 4d297fb47..b69150a14 100644
--- a/tests/libecal/test-cal-client-create-object.c
+++ b/tests/libecal/test-cal-client-create-object.c
@@ -100,7 +100,7 @@ test_create_object_sync (ETestServerFixture *fixture,
g_clear_object (&dtstart);
g_clear_object (&dtend);
- if (!e_cal_client_create_object_sync (cal_client, icomp, &uid, NULL, &error))
+ if (!e_cal_client_create_object_sync (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, &uid, NULL,
&error))
g_error ("create object sync: %s", error->message);
if (!e_cal_client_get_object_sync (cal_client, uid, NULL, &icomp2, NULL, &error))
@@ -243,7 +243,7 @@ test_create_object_async (ETestServerFixture *fixture,
data.icomp = icomp;
data.loop = fixture->loop;
- e_cal_client_create_object (cal_client, icomp, NULL, async_write_result_ready, &data);
+ e_cal_client_create_object (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, NULL,
async_write_result_ready, &data);
g_main_loop_run (fixture->loop);
g_object_unref (icomp);
diff --git a/tests/libecal/test-cal-client-get-attachment-uris.c
b/tests/libecal/test-cal-client-get-attachment-uris.c
index 815f2bfa7..fecba60f1 100644
--- a/tests/libecal/test-cal-client-get-attachment-uris.c
+++ b/tests/libecal/test-cal-client-get-attachment-uris.c
@@ -72,7 +72,7 @@ setup_cal (ECalClient *cal_client)
add_attach (icomp, ATTACH2);
add_attach (icomp, ATTACH3);
- if (!e_cal_client_create_object_sync (cal_client, icomp, &uid, NULL, &error))
+ if (!e_cal_client_create_object_sync (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, &uid, NULL,
&error))
g_error ("create object sync: %s", error->message);
g_object_unref (icomp);
diff --git a/tests/libecal/test-cal-client-get-free-busy.c b/tests/libecal/test-cal-client-get-free-busy.c
index 41abd46b3..0fbfce37f 100644
--- a/tests/libecal/test-cal-client-get-free-busy.c
+++ b/tests/libecal/test-cal-client-get-free-busy.c
@@ -113,7 +113,7 @@ add_component_sync (ECalClient *cal_client)
icomp = i_cal_component_new_from_string (comp_str);
g_assert_nonnull (icomp);
- if (!e_cal_client_create_object_sync (cal_client, icomp, NULL, NULL, &error))
+ if (!e_cal_client_create_object_sync (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, NULL, NULL,
&error))
g_error ("Failed to add component: %s", error ? error->message : "Unknown error");
g_object_unref (icomp);
diff --git a/tests/libecal/test-cal-client-get-object-list.c b/tests/libecal/test-cal-client-get-object-list.c
index 0e19c7925..9bf623195 100644
--- a/tests/libecal/test-cal-client-get-object-list.c
+++ b/tests/libecal/test-cal-client-get-object-list.c
@@ -47,7 +47,7 @@ setup_cal (ECalClient *cal_client)
g_clear_object (&dtstart);
g_clear_object (&dtend);
- if (!e_cal_client_create_object_sync (cal_client, icomp, &uid, NULL, &error))
+ if (!e_cal_client_create_object_sync (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, &uid, NULL,
&error))
g_error ("create object sync: %s", error->message);
g_object_unref (icomp);
diff --git a/tests/libecal/test-cal-client-get-revision.c b/tests/libecal/test-cal-client-get-revision.c
index 5b99ccf3b..a8b7ec137 100644
--- a/tests/libecal/test-cal-client-get-revision.c
+++ b/tests/libecal/test-cal-client-get-revision.c
@@ -50,10 +50,10 @@ get_revision_compare_cycle (ECalClient *client)
&revision_before, NULL, &error))
g_error ("Error getting calendar revision: %s", error->message);
- if (!e_cal_client_create_object_sync (client, icomp, &uid, NULL, &error))
+ if (!e_cal_client_create_object_sync (client, icomp, E_CAL_OPERATION_FLAG_NONE, &uid, NULL, &error))
g_error ("Error creating object: %s", error->message);
- if (!e_cal_client_remove_object_sync (client, uid, NULL, E_CAL_OBJ_MOD_ALL, NULL, &error))
+ if (!e_cal_client_remove_object_sync (client, uid, NULL, E_CAL_OBJ_MOD_ALL,
E_CAL_OPERATION_FLAG_NONE, NULL, &error))
g_error ("Error removing created object: %s", error->message);
if (!e_client_get_backend_property_sync (E_CLIENT (client), CLIENT_BACKEND_PROPERTY_REVISION,
diff --git a/tests/libecal/test-cal-client-get-view.c b/tests/libecal/test-cal-client-get-view.c
index 4af213c59..99d198538 100644
--- a/tests/libecal/test-cal-client-get-view.c
+++ b/tests/libecal/test-cal-client-get-view.c
@@ -130,16 +130,16 @@ alter_cal_client (gpointer user_data)
g_clear_object (&dtstart);
g_clear_object (&dtend);
- if (!e_cal_client_create_object_sync (cal_client, icomp, &uid, NULL, &error))
+ if (!e_cal_client_create_object_sync (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, &uid, NULL,
&error))
g_error ("create object sync: %s", error->message);
i_cal_component_set_uid (icomp, uid);
i_cal_component_set_summary (icomp, "Modified event summary");
- if (!e_cal_client_modify_object_sync (cal_client, icomp, E_CAL_OBJ_MOD_ALL, NULL, &error))
+ if (!e_cal_client_modify_object_sync (cal_client, icomp, E_CAL_OBJ_MOD_ALL,
E_CAL_OPERATION_FLAG_NONE, NULL, &error))
g_error ("modify object sync: %s", error->message);
- if (!e_cal_client_remove_object_sync (cal_client, uid, NULL, E_CAL_OBJ_MOD_ALL, NULL, &error))
+ if (!e_cal_client_remove_object_sync (cal_client, uid, NULL, E_CAL_OBJ_MOD_ALL,
E_CAL_OPERATION_FLAG_NONE, NULL, &error))
g_error ("remove object sync: %s", error->message);
g_object_unref (icomp);
diff --git a/tests/libecal/test-cal-client-modify-object.c b/tests/libecal/test-cal-client-modify-object.c
index 09218a248..281e12b11 100644
--- a/tests/libecal/test-cal-client-modify-object.c
+++ b/tests/libecal/test-cal-client-modify-object.c
@@ -46,7 +46,7 @@ setup_cal (ECalClient *cal_client)
g_clear_object (&dtstart);
g_clear_object (&dtend);
- if (!e_cal_client_create_object_sync (cal_client, icomp, &uid, NULL, &error))
+ if (!e_cal_client_create_object_sync (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, &uid, NULL,
&error))
g_error ("create object sync: %s", error->message);
g_object_unref (icomp);
@@ -80,7 +80,7 @@ test_modify_object_sync (ETestServerFixture *fixture,
i_cal_component_set_summary (icomp, EVENT_SUMMARY);
- if (!e_cal_client_modify_object_sync (cal_client, icomp, E_CAL_OBJ_MOD_ALL, NULL, &error))
+ if (!e_cal_client_modify_object_sync (cal_client, icomp, E_CAL_OBJ_MOD_ALL,
E_CAL_OPERATION_FLAG_NONE, NULL, &error))
g_error ("modify object sync: %s", error->message);
g_object_unref (icomp);
@@ -138,7 +138,7 @@ test_modify_object_async (ETestServerFixture *fixture,
i_cal_component_set_summary (icomp, EVENT_SUMMARY);
- e_cal_client_modify_object (cal_client, icomp, E_CAL_OBJ_MOD_ALL, NULL, async_modify_result_ready,
fixture->loop);
+ e_cal_client_modify_object (cal_client, icomp, E_CAL_OBJ_MOD_ALL, E_CAL_OPERATION_FLAG_NONE, NULL,
async_modify_result_ready, fixture->loop);
g_object_unref (icomp);
g_main_loop_run (fixture->loop);
diff --git a/tests/libecal/test-cal-client-receive-objects.c b/tests/libecal/test-cal-client-receive-objects.c
index 074e4be99..d41b74104 100644
--- a/tests/libecal/test-cal-client-receive-objects.c
+++ b/tests/libecal/test-cal-client-receive-objects.c
@@ -58,7 +58,7 @@ test_receive_objects_sync (ETestServerFixture *fixture,
icomp = create_object ();
g_assert_nonnull (icomp);
- if (!e_cal_client_receive_objects_sync (cal_client, icomp, NULL, &error))
+ if (!e_cal_client_receive_objects_sync (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, NULL, &error))
g_error ("receive objects sync: %s", error->message);
g_object_unref (icomp);
@@ -93,7 +93,7 @@ test_receive_objects_async (ETestServerFixture *fixture,
icomp = create_object ();
g_assert_nonnull (icomp);
- e_cal_client_receive_objects (cal_client, icomp, NULL, async_receive_result_ready, fixture->loop);
+ e_cal_client_receive_objects (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, NULL,
async_receive_result_ready, fixture->loop);
g_object_unref (icomp);
g_main_loop_run (fixture->loop);
diff --git a/tests/libecal/test-cal-client-refresh.c b/tests/libecal/test-cal-client-refresh.c
index 3da09fe7b..c506ac080 100644
--- a/tests/libecal/test-cal-client-refresh.c
+++ b/tests/libecal/test-cal-client-refresh.c
@@ -45,7 +45,7 @@ setup_cal (ECalClient *cal_client)
g_clear_object (&dtstart);
g_clear_object (&dtend);
- if (!e_cal_client_create_object_sync (cal_client, icomp, &uid, NULL, &error))
+ if (!e_cal_client_create_object_sync (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, &uid, NULL,
&error))
g_error ("create object sync: %s", error->message);
g_object_unref (icomp);
diff --git a/tests/libecal/test-cal-client-remove-object.c b/tests/libecal/test-cal-client-remove-object.c
index 9ce54e1f2..ee29eec9d 100644
--- a/tests/libecal/test-cal-client-remove-object.c
+++ b/tests/libecal/test-cal-client-remove-object.c
@@ -46,7 +46,7 @@ create_object (ECalClient *cal_client)
g_clear_object (&dtstart);
g_clear_object (&dtend);
- if (!e_cal_client_create_object_sync (cal_client, icomp, &uid, NULL, &error))
+ if (!e_cal_client_create_object_sync (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, &uid, NULL,
&error))
g_error ("create object sync: %s", error->message);
g_object_unref (icomp);
@@ -67,7 +67,7 @@ test_remove_object_sync (ETestServerFixture *fixture,
uid = create_object (cal_client);
g_assert (uid != NULL);
- if (!e_cal_client_remove_object_sync (cal_client, uid, NULL, E_CAL_OBJ_MOD_ALL, NULL, &error))
+ if (!e_cal_client_remove_object_sync (cal_client, uid, NULL, E_CAL_OBJ_MOD_ALL,
E_CAL_OPERATION_FLAG_NONE, NULL, &error))
g_error ("remove object sync: %s", error->message);
g_free (uid);
@@ -102,7 +102,7 @@ test_remove_object_async (ETestServerFixture *fixture,
uid = create_object (cal_client);
g_assert (uid != NULL);
- e_cal_client_remove_object (cal_client, uid, NULL, E_CAL_OBJ_MOD_ALL, NULL,
async_remove_result_ready, fixture->loop);
+ e_cal_client_remove_object (cal_client, uid, NULL, E_CAL_OBJ_MOD_ALL, E_CAL_OPERATION_FLAG_NONE,
NULL, async_remove_result_ready, fixture->loop);
g_free (uid);
g_main_loop_run (fixture->loop);
}
@@ -119,7 +119,7 @@ test_remove_object_empty_uid (ETestServerFixture *fixture,
cal_client = E_TEST_SERVER_UTILS_SERVICE (fixture, ECalClient);
e_cal_client_remove_object_sync (
- cal_client, "", NULL, E_CAL_OBJ_MOD_ALL, NULL, &error);
+ cal_client, "", NULL, E_CAL_OBJ_MOD_ALL, E_CAL_OPERATION_FLAG_NONE, NULL, &error);
g_assert_error (
error, E_CAL_CLIENT_ERROR,
E_CAL_CLIENT_ERROR_OBJECT_NOT_FOUND);
diff --git a/tests/libecal/test-cal-client-revision-view.c b/tests/libecal/test-cal-client-revision-view.c
index 804fe3528..d82f91cc9 100644
--- a/tests/libecal/test-cal-client-revision-view.c
+++ b/tests/libecal/test-cal-client-revision-view.c
@@ -190,16 +190,16 @@ alter_cal_client (gpointer user_data)
i_cal_component_set_dtstart (icomp, now);
i_cal_component_set_dtend (icomp, itt);
- if (!e_cal_client_create_object_sync (cal_client, icomp, &uid, NULL, &error))
+ if (!e_cal_client_create_object_sync (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, &uid, NULL,
&error))
g_error ("create object sync: %s", error->message);
i_cal_component_set_uid (icomp, uid);
i_cal_component_set_summary (icomp, "Modified event summary");
- if (!e_cal_client_modify_object_sync (cal_client, icomp, E_CAL_OBJ_MOD_ALL, NULL, &error))
+ if (!e_cal_client_modify_object_sync (cal_client, icomp, E_CAL_OBJ_MOD_ALL,
E_CAL_OPERATION_FLAG_NONE, NULL, &error))
g_error ("modify object sync: %s", error->message);
- if (!e_cal_client_remove_object_sync (cal_client, uid, NULL, E_CAL_OBJ_MOD_ALL, NULL, &error))
+ if (!e_cal_client_remove_object_sync (cal_client, uid, NULL, E_CAL_OBJ_MOD_ALL,
E_CAL_OPERATION_FLAG_NONE, NULL, &error))
g_error ("remove object sync: %s", error->message);
g_object_unref (icomp);
diff --git a/tests/libecal/test-cal-client-send-objects.c b/tests/libecal/test-cal-client-send-objects.c
index 0ece68ad6..9f560c3ff 100644
--- a/tests/libecal/test-cal-client-send-objects.c
+++ b/tests/libecal/test-cal-client-send-objects.c
@@ -114,7 +114,7 @@ test_send_objects_sync (ETestServerFixture *fixture,
cal_client = E_TEST_SERVER_UTILS_SERVICE (fixture, ECalClient);
icomp = create_object ();
- if (!e_cal_client_send_objects_sync (cal_client, icomp, &users, &modified_icomp, NULL, &error))
+ if (!e_cal_client_send_objects_sync (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, &users,
&modified_icomp, NULL, &error))
g_error ("send objects sync: %s", error->message);
g_object_unref (icomp);
@@ -153,7 +153,7 @@ test_send_objects_async (ETestServerFixture *fixture,
icomp = create_object ();
g_assert_nonnull (icomp);
- e_cal_client_send_objects (cal_client, icomp, NULL, async_send_result_ready, fixture->loop);
+ e_cal_client_send_objects (cal_client, icomp, E_CAL_OPERATION_FLAG_NONE, NULL,
async_send_result_ready, fixture->loop);
g_object_unref (icomp);
g_main_loop_run (fixture->loop);
diff --git a/tests/libedata-cal/test-cal-cache-intervals.c b/tests/libedata-cal/test-cal-cache-intervals.c
index a72a6cf29..9e560a588 100644
--- a/tests/libedata-cal/test-cal-cache-intervals.c
+++ b/tests/libedata-cal/test-cal-cache-intervals.c
@@ -222,7 +222,7 @@ test_intervals (TCUFixture *fixture,
intervals = g_slist_prepend (intervals, interval);
- success = e_cal_cache_put_component (fixture->cal_cache, comp, NULL, E_CACHE_IS_ONLINE, NULL,
&error);
+ success = e_cal_cache_put_component (fixture->cal_cache, comp, NULL, 0, E_CACHE_IS_ONLINE,
NULL, &error);
g_assert_no_error (error);
g_assert (success);
}
@@ -242,7 +242,7 @@ test_intervals (TCUFixture *fixture,
intervals = g_slist_prepend (intervals, interval);
- success = e_cal_cache_put_component (fixture->cal_cache, comp, NULL, E_CACHE_IS_ONLINE, NULL,
&error);
+ success = e_cal_cache_put_component (fixture->cal_cache, comp, NULL, 0, E_CACHE_IS_ONLINE,
NULL, &error);
g_assert_no_error (error);
g_assert (success);
}
@@ -301,7 +301,7 @@ test_intervals (TCUFixture *fixture,
g_assert (id != NULL);
success = e_cal_cache_remove_component (fixture->cal_cache,
e_cal_component_id_get_uid (id),
- e_cal_component_id_get_rid (id), E_CACHE_IS_ONLINE, NULL, &error);
+ e_cal_component_id_get_rid (id), 0, E_CACHE_IS_ONLINE, NULL, &error);
g_assert_no_error (error);
g_assert (success);
diff --git a/tests/libedata-cal/test-cal-cache-offline.c b/tests/libedata-cal/test-cal-cache-offline.c
index 8e247157a..85489b916 100644
--- a/tests/libedata-cal/test-cal-cache-offline.c
+++ b/tests/libedata-cal/test-cal-cache-offline.c
@@ -340,6 +340,7 @@ test_offline_basics (TCUFixture *fixture,
gint ii;
const gchar *uid;
gchar *saved_extra = NULL, *tmp;
+ guint32 custom_flags;
GSList *ids = NULL;
GError *error = NULL;
@@ -429,6 +430,14 @@ test_offline_basics (TCUFixture *fixture,
g_free (saved_extra);
saved_extra = NULL;
+ g_assert (e_cal_cache_set_component_custom_flags (fixture->cal_cache, uid, NULL, 123,
NULL, &error));
+ g_assert_no_error (error);
+
+ custom_flags = 0;
+ g_assert (e_cal_cache_get_component_custom_flags (fixture->cal_cache, uid, NULL,
&custom_flags, NULL, &error));
+ g_assert_no_error (error);
+ g_assert_cmpint (custom_flags, ==, 123);
+
/* Search when locally deleted */
test_basic_search (fixture, EXPECT_DEFAULT);
} else {
@@ -452,7 +461,7 @@ test_offline_basics (TCUFixture *fixture,
/* Edit in online */
i_cal_component_set_summary (e_cal_component_get_icalcomponent (component), "summ-1");
- g_assert (e_cal_cache_put_component (fixture->cal_cache, component, NULL, E_CACHE_IS_ONLINE, NULL,
&error));
+ g_assert (e_cal_cache_put_component (fixture->cal_cache, component, NULL, 0, E_CACHE_IS_ONLINE, NULL,
&error));
g_assert_no_error (error);
test_verify_storage (fixture, uid, "summ-1", NULL, E_OFFLINE_STATE_SYNCED);
@@ -460,7 +469,7 @@ test_offline_basics (TCUFixture *fixture,
i_cal_component_set_summary (e_cal_component_get_icalcomponent (component), "summ-2");
- g_assert (e_cal_cache_put_component (fixture->cal_cache, component, "extra-2", E_CACHE_IS_ONLINE,
NULL, &error));
+ g_assert (e_cal_cache_put_component (fixture->cal_cache, component, "extra-2", 0, E_CACHE_IS_ONLINE,
NULL, &error));
g_assert_no_error (error);
test_verify_storage (fixture, uid, "summ-2", "extra-2", E_OFFLINE_STATE_SYNCED);
@@ -478,11 +487,19 @@ test_offline_basics (TCUFixture *fixture,
g_assert_cmpint (e_cache_get_count (E_CACHE (fixture->cal_cache), E_CACHE_EXCLUDE_DELETED, NULL,
&error), ==, 3);
g_assert_no_error (error);
+ g_assert (e_cal_cache_set_component_custom_flags (fixture->cal_cache, uid, NULL, 234, NULL, &error));
+ g_assert_no_error (error);
+
+ custom_flags = 0;
+ g_assert (e_cal_cache_get_component_custom_flags (fixture->cal_cache, uid, NULL, &custom_flags, NULL,
&error));
+ g_assert_no_error (error);
+ g_assert_cmpint (custom_flags, ==, 234);
+
/* Search before delete */
test_basic_search (fixture, EXPECT_EVENT_1);
/* Delete in online */
- g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, E_CACHE_IS_ONLINE, NULL,
&error));
+ g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, 0, E_CACHE_IS_ONLINE, NULL,
&error));
g_assert_no_error (error);
g_assert (!e_cache_set_offline_state (E_CACHE (fixture->cal_cache), uid,
E_OFFLINE_STATE_LOCALLY_MODIFIED, NULL, &error));
@@ -510,6 +527,14 @@ test_offline_basics (TCUFixture *fixture,
g_assert_null (ids);
g_clear_error (&error);
+ g_assert (!e_cal_cache_set_component_custom_flags (fixture->cal_cache, uid, NULL, 456, NULL, &error));
+ g_assert_error (error, E_CACHE_ERROR, E_CACHE_ERROR_NOT_FOUND);
+ g_clear_error (&error);
+
+ g_assert (!e_cal_cache_get_component_custom_flags (fixture->cal_cache, uid, NULL, &custom_flags,
NULL, &error));
+ g_assert_error (error, E_CACHE_ERROR, E_CACHE_ERROR_NOT_FOUND);
+ g_clear_error (&error);
+
g_clear_object (&component);
/* Search after delete */
@@ -537,7 +562,7 @@ test_offline_add_one (TCUFixture *fixture,
test_check_offline_state (fixture, uid, E_OFFLINE_STATE_UNKNOWN);
/* Add a component in offline */
- g_assert (e_cal_cache_put_component (fixture->cal_cache, component, NULL, E_CACHE_IS_OFFLINE,
NULL, &error));
+ g_assert (e_cal_cache_put_component (fixture->cal_cache, component, NULL, 0,
E_CACHE_IS_OFFLINE, NULL, &error));
g_assert_no_error (error);
} else {
uid = case_name;
@@ -616,7 +641,7 @@ test_offline_add_edit (TCUFixture *fixture,
/* Modify added in offline */
i_cal_component_set_summary (e_cal_component_get_icalcomponent (component), "summ-2");
- g_assert (e_cal_cache_put_component (fixture->cal_cache, component, NULL, E_CACHE_IS_OFFLINE, NULL,
&error));
+ g_assert (e_cal_cache_put_component (fixture->cal_cache, component, NULL, 0, E_CACHE_IS_OFFLINE,
NULL, &error));
g_assert_no_error (error);
test_offline_add_one (fixture, "event-3", 4, EXPECT_EVENT_3 | EXPECT_EVENT_1 | SKIP_COMPONENT_PUT,
NULL);
@@ -635,6 +660,7 @@ test_offline_add_delete (TCUFixture *fixture,
gconstpointer user_data)
{
ECalComponent *component = NULL;
+ guint32 custom_flags = 0;
const gchar *uid;
GError *error = NULL;
@@ -659,13 +685,37 @@ test_offline_add_delete (TCUFixture *fixture,
/* Delete added in offline */
- g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, E_CACHE_IS_OFFLINE, NULL,
&error));
+ g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, 1, E_CACHE_IS_OFFLINE, NULL,
&error));
g_assert_no_error (error);
+ g_assert (!e_cal_cache_get_component_custom_flags (fixture->cal_cache, uid, NULL, &custom_flags,
NULL, &error));
+ g_assert_error (error, E_CACHE_ERROR, E_CACHE_ERROR_NOT_FOUND);
+ g_clear_error (&error);
+
test_offline_add_one (fixture, "event-3", 3, EXPECT_EVENT_1 | SKIP_COMPONENT_PUT, NULL);
test_check_offline_changes (fixture, NULL);
+ /* Add in online */
+
+ g_assert (e_cal_cache_put_component (fixture->cal_cache, component, NULL, 333, E_CACHE_IS_ONLINE,
NULL, &error));
+ g_assert_no_error (error);
+
+ custom_flags = 0;
+ g_assert (e_cal_cache_get_component_custom_flags (fixture->cal_cache, uid, NULL, &custom_flags, NULL,
&error));
+ g_assert_no_error (error);
+ g_assert_cmpint (custom_flags, ==, 333);
+
+ /* Delete in offline */
+
+ g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, 246, E_CACHE_IS_OFFLINE, NULL,
&error));
+ g_assert_no_error (error);
+
+ custom_flags = 0;
+ g_assert (e_cal_cache_get_component_custom_flags (fixture->cal_cache, uid, NULL, &custom_flags, NULL,
&error));
+ g_assert_no_error (error);
+ g_assert_cmpint (custom_flags, ==, 246);
+
g_clear_object (&component);
}
@@ -697,7 +747,7 @@ test_offline_add_delete_add (TCUFixture *fixture,
g_assert_nonnull (uid);
/* Delete added in offline */
- g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, E_CACHE_IS_OFFLINE, NULL,
&error));
+ g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, 0, E_CACHE_IS_OFFLINE, NULL,
&error));
g_assert_no_error (error);
test_offline_add_one (fixture, "event-3", 3, EXPECT_EVENT_1 | SKIP_COMPONENT_PUT, NULL);
@@ -752,6 +802,7 @@ test_offline_edit_common (TCUFixture *fixture,
gchar **out_uid)
{
ECalComponent *component = NULL;
+ guint32 custom_flags = 0;
const gchar *uid;
GError *error = NULL;
@@ -768,11 +819,21 @@ test_offline_edit_common (TCUFixture *fixture,
test_check_offline_changes (fixture, NULL);
test_check_offline_state (fixture, uid, E_OFFLINE_STATE_SYNCED);
+ custom_flags = 0;
+ g_assert (e_cal_cache_get_component_custom_flags (fixture->cal_cache, uid, NULL, &custom_flags, NULL,
&error));
+ g_assert_no_error (error);
+ g_assert_cmpint (custom_flags, ==, 0);
+
/* Modify in offline */
i_cal_component_set_summary (e_cal_component_get_icalcomponent (component), "summ-2");
- g_assert (e_cal_cache_put_component (fixture->cal_cache, component, NULL, E_CACHE_IS_OFFLINE, NULL,
&error));
+ g_assert (e_cal_cache_put_component (fixture->cal_cache, component, NULL, 369, E_CACHE_IS_OFFLINE,
NULL, &error));
+ g_assert_no_error (error);
+
+ custom_flags = 0;
+ g_assert (e_cal_cache_get_component_custom_flags (fixture->cal_cache, uid, NULL, &custom_flags, NULL,
&error));
g_assert_no_error (error);
+ g_assert_cmpint (custom_flags, ==, 369);
g_assert_cmpint (e_cache_get_count (E_CACHE (fixture->cal_cache), E_CACHE_EXCLUDE_DELETED, NULL,
&error), ==, 3);
g_assert_no_error (error);
@@ -809,7 +870,7 @@ test_offline_edit_delete (TCUFixture *fixture,
test_offline_edit_common (fixture, &uid);
/* Delete the modified component in offline */
- g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, E_CACHE_IS_OFFLINE, NULL,
&error));
+ g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, 0, E_CACHE_IS_OFFLINE, NULL,
&error));
g_assert_no_error (error);
g_assert_cmpint (e_cache_get_count (E_CACHE (fixture->cal_cache), E_CACHE_EXCLUDE_DELETED, NULL,
&error), ==, 2);
@@ -875,7 +936,7 @@ test_offline_delete (TCUFixture *fixture,
test_check_offline_state (fixture, uid, E_OFFLINE_STATE_SYNCED);
/* Delete in offline */
- g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, E_CACHE_IS_OFFLINE, NULL,
&error));
+ g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, 0, E_CACHE_IS_OFFLINE, NULL,
&error));
g_assert_no_error (error);
g_assert_cmpint (e_cache_get_count (E_CACHE (fixture->cal_cache), E_CACHE_EXCLUDE_DELETED, NULL,
&error), ==, 2);
@@ -914,7 +975,7 @@ test_offline_delete_add (TCUFixture *fixture,
/* Delete locally created in offline */
test_offline_add_one (fixture, "event-3", 4, EXPECT_EVENT_3 | EXPECT_EVENT_1, NULL);
- g_assert (e_cal_cache_remove_component (fixture->cal_cache, "event-3", NULL, E_CACHE_IS_OFFLINE,
NULL, &error));
+ g_assert (e_cal_cache_remove_component (fixture->cal_cache, "event-3", NULL, 0, E_CACHE_IS_OFFLINE,
NULL, &error));
g_assert_no_error (error);
g_assert_cmpint (e_cache_get_count (E_CACHE (fixture->cal_cache), E_CACHE_EXCLUDE_DELETED, NULL,
&error), ==, 3);
@@ -927,7 +988,7 @@ test_offline_delete_add (TCUFixture *fixture,
test_check_offline_state (fixture, "event-3", E_OFFLINE_STATE_UNKNOWN);
/* Delete synced in offline */
- g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, E_CACHE_IS_OFFLINE, NULL,
&error));
+ g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, 0, E_CACHE_IS_OFFLINE, NULL,
&error));
g_assert_no_error (error);
g_assert_cmpint (e_cache_get_count (E_CACHE (fixture->cal_cache), E_CACHE_EXCLUDE_DELETED, NULL,
&error), ==, 2);
@@ -954,7 +1015,7 @@ test_offline_delete_add (TCUFixture *fixture,
/* Modify the previous component and add it again */
i_cal_component_set_summary (e_cal_component_get_icalcomponent (component), "summ-3");
- g_assert (e_cal_cache_put_component (fixture->cal_cache, component, NULL, E_CACHE_IS_OFFLINE, NULL,
&error));
+ g_assert (e_cal_cache_put_component (fixture->cal_cache, component, NULL, 0, E_CACHE_IS_OFFLINE,
NULL, &error));
g_assert_no_error (error);
g_assert_cmpint (e_cache_get_count (E_CACHE (fixture->cal_cache), E_CACHE_EXCLUDE_DELETED, NULL,
&error), ==, 4);
@@ -996,7 +1057,7 @@ test_offline_delete_resync (TCUFixture *fixture,
test_check_offline_state (fixture, uid, E_OFFLINE_STATE_SYNCED);
/* Delete in offline */
- g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, E_CACHE_IS_OFFLINE, NULL,
&error));
+ g_assert (e_cal_cache_remove_component (fixture->cal_cache, uid, NULL, 0, E_CACHE_IS_OFFLINE, NULL,
&error));
g_assert_no_error (error);
g_assert_cmpint (e_cache_get_count (E_CACHE (fixture->cal_cache), E_CACHE_EXCLUDE_DELETED, NULL,
&error), ==, 2);
diff --git a/tests/libedata-cal/test-cal-cache-utils.c b/tests/libedata-cal/test-cal-cache-utils.c
index 037c1fb16..e497ee413 100644
--- a/tests/libedata-cal/test-cal-cache-utils.c
+++ b/tests/libedata-cal/test-cal-cache-utils.c
@@ -208,7 +208,7 @@ tcu_add_component_from_test_case (TCUFixture *fixture,
component = tcu_new_component_from_test_case (case_name);
- if (!e_cal_cache_put_component (fixture->cal_cache, component, case_name, E_CACHE_IS_ONLINE, NULL,
&error))
+ if (!e_cal_cache_put_component (fixture->cal_cache, component, case_name, 0, E_CACHE_IS_ONLINE, NULL,
&error))
g_error ("Failed to add component: %s", error->message);
if (out_component)
diff --git a/tests/libedata-cal/test-cal-meta-backend.c b/tests/libedata-cal/test-cal-meta-backend.c
index 6a528a45b..cdda78729 100644
--- a/tests/libedata-cal/test-cal-meta-backend.c
+++ b/tests/libedata-cal/test-cal-meta-backend.c
@@ -439,6 +439,7 @@ e_cal_meta_backend_test_save_component_sync (ECalMetaBackend *meta_backend,
EConflictResolution conflict_resolution,
const GSList *instances,
const gchar *extra,
+ guint32 opflags,
gchar **out_new_uid,
gchar **out_new_extra,
GCancellable *cancellable,
@@ -558,6 +559,7 @@ e_cal_meta_backend_test_remove_component_sync (ECalMetaBackend *meta_backend,
const gchar *uid,
const gchar *extra,
const gchar *object,
+ guint32 opflags,
GCancellable *cancellable,
GError **error)
{
@@ -1293,7 +1295,7 @@ test_empty_cache (TCUFixture *fixture,
g_return_if_fail (backend_class->receive_objects_sync != NULL);
/* This adds the object and the used timezone to the cache */
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, in_vcalobj,
&error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, in_vcalobj, 0,
&error);
g_assert_no_error (error);
zones = NULL;
@@ -1344,7 +1346,7 @@ test_send_objects (ECalMetaBackend *meta_backend)
g_return_if_fail (backend_class->send_objects_sync != NULL);
backend_class->send_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, calobj, &users, &modified_calobj, &error);
+ NULL, NULL, calobj, 0, &users, &modified_calobj, &error);
g_assert_no_error (error);
g_assert_null (users);
@@ -1415,7 +1417,7 @@ test_discard_alarm (ECalMetaBackend *meta_backend)
/* Not implemented */
backend_class->discard_alarm_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, "unknown-event", NULL, NULL, &error);
+ NULL, NULL, "unknown-event", NULL, NULL, 0, &error);
g_assert_error (error, E_CLIENT_ERROR, E_CLIENT_ERROR_NOT_SUPPORTED);
@@ -1696,7 +1698,7 @@ test_timezones (ECalMetaBackend *meta_backend)
g_assert_nonnull (comp);
/* Add a component which uses TZID1, thus it's in the cache */
- success = e_cal_cache_put_component (cal_cache, comp, NULL, E_CACHE_IS_ONLINE, NULL, &error);
+ success = e_cal_cache_put_component (cal_cache, comp, NULL, 0, E_CACHE_IS_ONLINE, NULL, &error);
g_assert_no_error (error);
g_assert (success);
@@ -1731,7 +1733,7 @@ test_timezones (ECalMetaBackend *meta_backend)
g_assert_no_error (error);
/* Add a component which uses TZID1 and TZID2, thus it's in the cache */
- success = e_cal_cache_put_component (cal_cache, comp, NULL, E_CACHE_IS_ONLINE, NULL, &error);
+ success = e_cal_cache_put_component (cal_cache, comp, NULL, 0, E_CACHE_IS_ONLINE, NULL, &error);
g_assert_no_error (error);
g_assert (success);
@@ -1749,7 +1751,7 @@ test_timezones (ECalMetaBackend *meta_backend)
g_assert_cmpint (tcmb_get_tzid_ref_count (cal_cache, TZID2), ==, 1);
/* Remove in offline doesn't modify timezone cache, because the component is still there */
- success = e_cal_cache_remove_component (cal_cache, "tz1", NULL, E_CACHE_IS_OFFLINE, NULL, &error);
+ success = e_cal_cache_remove_component (cal_cache, "tz1", NULL, 0, E_CACHE_IS_OFFLINE, NULL, &error);
g_assert_no_error (error);
g_assert (success);
@@ -1757,7 +1759,7 @@ test_timezones (ECalMetaBackend *meta_backend)
g_assert_cmpint (tcmb_get_tzid_ref_count (cal_cache, TZID2), ==, 1);
/* Remove in online modifies timezone cache */
- success = e_cal_cache_remove_component (cal_cache, "tz1", NULL, E_CACHE_IS_ONLINE, NULL, &error);
+ success = e_cal_cache_remove_component (cal_cache, "tz1", NULL, 0, E_CACHE_IS_ONLINE, NULL, &error);
g_assert_no_error (error);
g_assert (success);
@@ -1787,7 +1789,7 @@ test_timezones (ECalMetaBackend *meta_backend)
"END:VEVENT\r\n");
g_assert_nonnull (comp);
- success = e_cal_cache_put_component (cal_cache, comp, NULL, E_CACHE_IS_ONLINE, NULL, &error);
+ success = e_cal_cache_put_component (cal_cache, comp, NULL, 0, E_CACHE_IS_ONLINE, NULL, &error);
g_assert_no_error (error);
g_assert (success);
@@ -1805,7 +1807,7 @@ test_timezones (ECalMetaBackend *meta_backend)
g_assert_cmpint (tcmb_get_tzid_ref_count (cal_cache, TZID2), ==, 1);
/* Finally remove component straight in online, which removed the only one timezone too */
- success = e_cal_cache_remove_component (cal_cache, "tz2", NULL, E_CACHE_IS_ONLINE, NULL, &error);
+ success = e_cal_cache_remove_component (cal_cache, "tz2", NULL, 0, E_CACHE_IS_ONLINE, NULL, &error);
g_assert_no_error (error);
g_assert (success);
@@ -1895,11 +1897,11 @@ test_create_objects (ECalMetaBackend *meta_backend)
g_assert_nonnull (cal_cache);
/* Prepare cache and server content */
- e_cal_cache_remove_component (cal_cache, "event-7", NULL, E_CACHE_IS_ONLINE, NULL, &error);
+ e_cal_cache_remove_component (cal_cache, "event-7", NULL, 0, E_CACHE_IS_ONLINE, NULL, &error);
g_assert_no_error (error);
- e_cal_cache_remove_component (cal_cache, "event-8", NULL, E_CACHE_IS_ONLINE, NULL, &error);
+ e_cal_cache_remove_component (cal_cache, "event-8", NULL, 0, E_CACHE_IS_ONLINE, NULL, &error);
g_assert_no_error (error);
- e_cal_cache_remove_component (cal_cache, "event-9", NULL, E_CACHE_IS_ONLINE, NULL, &error);
+ e_cal_cache_remove_component (cal_cache, "event-9", NULL, 0, E_CACHE_IS_ONLINE, NULL, &error);
g_assert_no_error (error);
ecmb_test_remove_component (test_backend, "event-7", NULL);
@@ -1912,7 +1914,7 @@ test_create_objects (ECalMetaBackend *meta_backend)
objects = g_slist_prepend (NULL, tcu_new_icalstring_from_test_case ("event-1"));
backend_class->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, objects, &uids, &new_components, &error);
+ NULL, NULL, objects, 0, &uids, &new_components, &error);
g_assert_error (error, E_DATA_CAL_ERROR, ObjectIdAlreadyExists);
g_assert_null (uids);
g_assert_null (new_components);
@@ -1925,7 +1927,7 @@ test_create_objects (ECalMetaBackend *meta_backend)
objects = g_slist_prepend (NULL, tcu_new_icalstring_from_test_case ("event-7"));
backend_class->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, objects, &uids, &new_components, &error);
+ NULL, NULL, objects, 0, &uids, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (uids), ==, 1);
g_assert_cmpstr (uids->data, ==, "event-7");
@@ -1952,7 +1954,7 @@ test_create_objects (ECalMetaBackend *meta_backend)
objects = g_slist_prepend (NULL, tcu_new_icalstring_from_test_case ("event-7"));
backend_class->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, objects, &uids, &new_components, &error);
+ NULL, NULL, objects, 0, &uids, &new_components, &error);
g_assert_error (error, E_DATA_CAL_ERROR, ObjectIdAlreadyExists);
g_assert_null (uids);
g_assert_null (new_components);
@@ -1965,7 +1967,7 @@ test_create_objects (ECalMetaBackend *meta_backend)
objects = g_slist_prepend (NULL, tcu_new_icalstring_from_test_case ("event-8"));
backend_class->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, objects, &uids, &new_components, &error);
+ NULL, NULL, objects, 0, &uids, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (uids), ==, 1);
g_assert_cmpstr (uids->data, ==, "event-8");
@@ -2008,7 +2010,7 @@ test_create_objects (ECalMetaBackend *meta_backend)
objects = g_slist_prepend (NULL, calobj);
backend_class->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, objects, &uids, &new_components, &error);
+ NULL, NULL, objects, 0, &uids, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (uids), ==, 1);
g_assert_cmpstr (uids->data, !=, "event-9");
@@ -2099,7 +2101,7 @@ test_modify_objects (ECalMetaBackend *meta_backend)
objects = g_slist_prepend (NULL, calobj);
backend_class->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, objects, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error);
+ NULL, NULL, objects, E_CAL_OBJ_MOD_ALL, 0, &old_components, &new_components, &error);
g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound);
g_assert_null (old_components);
g_assert_null (new_components);
@@ -2110,7 +2112,7 @@ test_modify_objects (ECalMetaBackend *meta_backend)
objects = g_slist_prepend (NULL, ecmb_test_modify_case ("event-1", NULL));
backend_class->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, objects, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error);
+ NULL, NULL, objects, E_CAL_OBJ_MOD_ALL, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2142,7 +2144,7 @@ test_modify_objects (ECalMetaBackend *meta_backend)
objects = g_slist_prepend (NULL, ecmb_test_modify_case ("event-2", NULL));
backend_class->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, objects, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error);
+ NULL, NULL, objects, E_CAL_OBJ_MOD_ALL, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2181,7 +2183,7 @@ test_modify_objects (ECalMetaBackend *meta_backend)
objects = g_slist_prepend (NULL, ecmb_test_modify_case ("event-4", NULL));
backend_class->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, objects, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error);
+ NULL, NULL, objects, E_CAL_OBJ_MOD_THIS, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2208,7 +2210,7 @@ test_modify_objects (ECalMetaBackend *meta_backend)
objects = g_slist_prepend (NULL, ecmb_test_modify_case ("event-6", "20170227T134900"));
backend_class->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, objects, E_CAL_OBJ_MOD_ONLY_THIS, &old_components, &new_components, &error);
+ NULL, NULL, objects, E_CAL_OBJ_MOD_ONLY_THIS, 0, &old_components, &new_components, &error);
g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound);
g_assert_null (old_components);
g_assert_null (new_components);
@@ -2221,7 +2223,7 @@ test_modify_objects (ECalMetaBackend *meta_backend)
objects = g_slist_prepend (NULL, ecmb_test_modify_case ("event-6-a", NULL));
backend_class->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, objects, E_CAL_OBJ_MOD_ONLY_THIS, &old_components, &new_components, &error);
+ NULL, NULL, objects, E_CAL_OBJ_MOD_ONLY_THIS, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2272,7 +2274,7 @@ test_remove_objects (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("unknown-event", NULL));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, 0, &old_components, &new_components, &error);
g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound);
g_assert_null (old_components);
g_assert_null (new_components);
@@ -2283,7 +2285,7 @@ test_remove_objects (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("event-1", NULL));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2310,7 +2312,7 @@ test_remove_objects (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("event-6", "20170225T134900"));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2341,7 +2343,7 @@ test_remove_objects (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("event-6", "20170227T134900"));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_ONLY_THIS, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_ONLY_THIS, 0, &old_components, &new_components, &error);
g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound);
g_assert_null (old_components);
g_assert_null (new_components);
@@ -2352,7 +2354,7 @@ test_remove_objects (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("event-6", "20170227T134900"));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2384,7 +2386,7 @@ test_remove_objects (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("event-3", NULL));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_ONLY_THIS, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_ONLY_THIS, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2491,7 +2493,7 @@ test_receive_objects (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-2");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -2514,7 +2516,7 @@ test_receive_objects (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite", NULL));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2542,7 +2544,7 @@ test_receive_objects (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-1");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -2572,7 +2574,7 @@ test_receive_objects (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-3");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -2602,7 +2604,7 @@ test_receive_objects (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-4");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -2648,7 +2650,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-5");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -2678,7 +2680,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", NULL));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2707,7 +2709,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
g_assert_nonnull (calobj);
backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, calobj, &error);
+ NULL, NULL, calobj, 0, &error);
g_assert_no_error (error);
g_free (calobj);
@@ -2728,7 +2730,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-6");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -2760,7 +2762,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180502T000000Z"));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2803,7 +2805,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-6");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -2833,7 +2835,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", NULL));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2874,7 +2876,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-6");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -2893,7 +2895,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", NULL));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2920,7 +2922,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-6");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -2928,7 +2930,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", NULL));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -2958,7 +2960,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-6");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -2977,7 +2979,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180502T000000Z"));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -3005,7 +3007,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-6");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -3024,7 +3026,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180502T000000Z"));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -3052,7 +3054,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-7");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -3073,7 +3075,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180502T000000Z"));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -3107,7 +3109,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-6");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -3116,7 +3118,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (ids, e_cal_component_id_new ("invite-detached", "20180509T000000Z"));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 2);
g_assert_cmpint (g_slist_length (new_components), ==, 2);
@@ -3147,7 +3149,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-7");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -3168,7 +3170,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180509T000000Z"));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -3198,7 +3200,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-7");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -3227,7 +3229,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
calobj = tcu_new_icalstring_from_test_case ("invite-5");
g_assert_nonnull (calobj);
- backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error);
+ backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, 0,
&error);
g_assert_no_error (error);
g_free (calobj);
@@ -3252,7 +3254,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180509T000000Z"));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -3288,7 +3290,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend)
ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180502T000000Z"));
backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend),
- NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error);
+ NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, 0, &old_components, &new_components, &error);
g_assert_no_error (error);
g_assert_cmpint (g_slist_length (old_components), ==, 1);
g_assert_cmpint (g_slist_length (new_components), ==, 1);
@@ -3339,11 +3341,11 @@ test_get_object (ECalMetaBackend *meta_backend)
cal_cache = e_cal_meta_backend_ref_cache (meta_backend);
g_assert_nonnull (cal_cache);
- e_cal_cache_remove_component (cal_cache, "event-7", NULL, E_CACHE_IS_ONLINE, NULL, &error);
+ e_cal_cache_remove_component (cal_cache, "event-7", NULL, 0, E_CACHE_IS_ONLINE, NULL, &error);
g_assert_no_error (error);
- e_cal_cache_remove_component (cal_cache, "event-8", NULL, E_CACHE_IS_ONLINE, NULL, &error);
+ e_cal_cache_remove_component (cal_cache, "event-8", NULL, 0, E_CACHE_IS_ONLINE, NULL, &error);
g_assert_no_error (error);
- e_cal_cache_remove_component (cal_cache, "event-9", NULL, E_CACHE_IS_ONLINE, NULL, &error);
+ e_cal_cache_remove_component (cal_cache, "event-9", NULL, 0, E_CACHE_IS_ONLINE, NULL, &error);
g_assert_no_error (error);
/* Master object with its detached instances */
@@ -3403,7 +3405,7 @@ test_get_object (ECalMetaBackend *meta_backend)
g_assert (e_cal_cache_contains (cal_cache, "event-7", NULL, E_CACHE_EXCLUDE_DELETED));
/* Remove it from the cache, thus it's loaded from the "server" on demand */
- e_cal_cache_remove_component (cal_cache, "event-7", NULL, E_CACHE_IS_ONLINE, NULL, &error);
+ e_cal_cache_remove_component (cal_cache, "event-7", NULL, 0, E_CACHE_IS_ONLINE, NULL, &error);
g_assert_no_error (error);
g_assert_cmpint (test_backend->connect_count, ==, 1);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]