From 732ddf419aa5f584664dd362a08cbc2abe90740e Mon Sep 17 00:00:00 2001 From: Rodrigo Moya Date: Thu, 25 Mar 2004 13:30:31 +0000 Subject: [PATCH] made the 'calobj' argument to be inout, so that the caller gets the 2004-03-25 Rodrigo Moya * libedata-cal/e-cal-backend-sync.[ch] (e_cal_backend_sync_create_object): made the 'calobj' argument to be inout, so that the caller gets the modified component, not the original one sent to the backend. (_e_cal_backend_sync_create_object): ditto, and notify listeners with the modified calobj. * backends/groupwise/e-cal-backend-groupwise.c (e_cal_backend_groupwise_create_object): * backends/file/e-cal-backend-file.c (e_cal_backend_file_create_object): adapted to changes in ECalBackendSync, and return the modified object to the caller. --- calendar/ChangeLog | 15 +++++++++++++++ calendar/backends/file/e-cal-backend-file.c | 9 +++++---- calendar/backends/groupwise/e-cal-backend-groupwise.c | 8 +++++--- calendar/backends/http/e-cal-backend-http.c | 4 +--- calendar/libedata-cal/e-cal-backend-sync.c | 12 ++++++++---- calendar/libedata-cal/e-cal-backend-sync.h | 8 ++++---- 6 files changed, 38 insertions(+), 18 deletions(-) diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 2cc6795..a718631 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,18 @@ +2004-03-25 Rodrigo Moya + + * libedata-cal/e-cal-backend-sync.[ch] + (e_cal_backend_sync_create_object): made the 'calobj' argument to + be inout, so that the caller gets the modified component, not the + original one sent to the backend. + (_e_cal_backend_sync_create_object): ditto, and notify listeners with + the modified calobj. + + * backends/groupwise/e-cal-backend-groupwise.c + (e_cal_backend_groupwise_create_object): + * backends/file/e-cal-backend-file.c (e_cal_backend_file_create_object): + adapted to changes in ECalBackendSync, and return the modified object + to the caller. + 2004-03-22 Rodrigo Moya * backends/groupwise/e-cal-backend-groupwise-utils.[ch] diff --git a/calendar/backends/file/e-cal-backend-file.c b/calendar/backends/file/e-cal-backend-file.c index 5fb3ade..65105c9 100644 --- a/calendar/backends/file/e-cal-backend-file.c +++ b/calendar/backends/file/e-cal-backend-file.c @@ -1607,7 +1607,7 @@ sanitize_component (ECalBackendFile *cbfile, ECalComponent *comp) static ECalBackendSyncStatus -e_cal_backend_file_create_object (ECalBackendSync *backend, EDataCal *cal, const char *calobj, char **uid) +e_cal_backend_file_create_object (ECalBackendSync *backend, EDataCal *cal, char **calobj, char **uid) { ECalBackendFile *cbfile; ECalBackendFilePrivate *priv; @@ -1620,10 +1620,10 @@ e_cal_backend_file_create_object (ECalBackendSync *backend, EDataCal *cal, const priv = cbfile->priv; g_return_val_if_fail (priv->icalcomp != NULL, GNOME_Evolution_Calendar_NoSuchCal); - g_return_val_if_fail (calobj != NULL, GNOME_Evolution_Calendar_ObjectNotFound); + g_return_val_if_fail (*calobj != NULL, GNOME_Evolution_Calendar_ObjectNotFound); /* Parse the icalendar text */ - icalcomp = icalparser_parse_string ((char *) calobj); + icalcomp = icalparser_parse_string (*calobj); if (!icalcomp) return GNOME_Evolution_Calendar_InvalidObject; @@ -1660,9 +1660,10 @@ e_cal_backend_file_create_object (ECalBackendSync *backend, EDataCal *cal, const /* Save the file */ save (cbfile); - /* Return the UID */ + /* Return the UID and the modified component */ if (uid) *uid = g_strdup (comp_uid); + *calobj = e_cal_component_get_as_string (comp); return GNOME_Evolution_Calendar_Success; } diff --git a/calendar/backends/groupwise/e-cal-backend-groupwise.c b/calendar/backends/groupwise/e-cal-backend-groupwise.c index 9c45c2b..3624a6d 100644 --- a/calendar/backends/groupwise/e-cal-backend-groupwise.c +++ b/calendar/backends/groupwise/e-cal-backend-groupwise.c @@ -864,7 +864,7 @@ e_cal_backend_groupwise_internal_get_timezone (ECalBackend *backend, const char } static ECalBackendSyncStatus -e_cal_backend_groupwise_create_object (ECalBackendSync *backend, EDataCal *cal, const char *calobj, char **uid) +e_cal_backend_groupwise_create_object (ECalBackendSync *backend, EDataCal *cal, char **calobj, char **uid) { ECalBackendGroupwise *cbgw; ECalBackendGroupwisePrivate *priv; @@ -876,10 +876,10 @@ e_cal_backend_groupwise_create_object (ECalBackendSync *backend, EDataCal *cal, priv = cbgw->priv; g_return_val_if_fail (E_IS_CAL_BACKEND_GROUPWISE (cbgw), GNOME_Evolution_Calendar_InvalidObject); - g_return_val_if_fail (calobj != NULL, GNOME_Evolution_Calendar_InvalidObject); + g_return_val_if_fail (calobj != NULL && *calobj != NULL, GNOME_Evolution_Calendar_InvalidObject); /* check the component for validity */ - icalcomp = icalparser_parse_string (calobj); + icalcomp = icalparser_parse_string (*calobj); if (!icalcomp) return GNOME_Evolution_Calendar_InvalidObject; @@ -910,6 +910,8 @@ e_cal_backend_groupwise_create_object (ECalBackendSync *backend, EDataCal *cal, break; } + *calobj = e_cal_component_get_as_string (comp); + g_object_unref (comp); return GNOME_Evolution_Calendar_Success; diff --git a/calendar/backends/http/e-cal-backend-http.c b/calendar/backends/http/e-cal-backend-http.c index 7f9e047..ef8e141 100644 --- a/calendar/backends/http/e-cal-backend-http.c +++ b/calendar/backends/http/e-cal-backend-http.c @@ -684,7 +684,7 @@ e_cal_backend_http_discard_alarm (ECalBackendSync *backend, EDataCal *cal, const } static ECalBackendSyncStatus -e_cal_backend_http_create_object (ECalBackendSync *backend, EDataCal *cal, const char *calobj, char **uid) +e_cal_backend_http_create_object (ECalBackendSync *backend, EDataCal *cal, char **calobj, char **uid) { ECalBackendHttp *cbhttp; ECalBackendHttpPrivate *priv; @@ -692,8 +692,6 @@ e_cal_backend_http_create_object (ECalBackendSync *backend, EDataCal *cal, const cbhttp = E_CAL_BACKEND_HTTP (backend); priv = cbhttp->priv; - g_return_val_if_fail (calobj != NULL, GNOME_Evolution_Calendar_ObjectNotFound); - return GNOME_Evolution_Calendar_PermissionDenied; } diff --git a/calendar/libedata-cal/e-cal-backend-sync.c b/calendar/libedata-cal/e-cal-backend-sync.c index 214049a..ff1dd13 100644 --- a/calendar/libedata-cal/e-cal-backend-sync.c +++ b/calendar/libedata-cal/e-cal-backend-sync.c @@ -105,7 +105,7 @@ e_cal_backend_sync_remove (ECalBackendSync *backend, EDataCal *cal) } ECalBackendSyncStatus -e_cal_backend_sync_create_object (ECalBackendSync *backend, EDataCal *cal, const char *calobj, char **uid) +e_cal_backend_sync_create_object (ECalBackendSync *backend, EDataCal *cal, char **calobj, char **uid) { g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError); @@ -345,14 +345,18 @@ static void _e_cal_backend_create_object (ECalBackend *backend, EDataCal *cal, const char *calobj) { ECalBackendSyncStatus status; - char *uid = NULL; + char *uid = NULL, *modified_calobj = (char *) calobj; - status = e_cal_backend_sync_create_object (E_CAL_BACKEND_SYNC (backend), cal, calobj, &uid); + status = e_cal_backend_sync_create_object (E_CAL_BACKEND_SYNC (backend), cal, &modified_calobj, &uid); - e_data_cal_notify_object_created (cal, status, uid, calobj); + e_data_cal_notify_object_created (cal, status, uid, modified_calobj); + /* free memory */ if (uid) g_free (uid); + + if (modified_calobj != calobj) + g_free (modified_calobj); } static void diff --git a/calendar/libedata-cal/e-cal-backend-sync.h b/calendar/libedata-cal/e-cal-backend-sync.h index ad495cc..47082d8 100644 --- a/calendar/libedata-cal/e-cal-backend-sync.h +++ b/calendar/libedata-cal/e-cal-backend-sync.h @@ -42,7 +42,7 @@ struct _ECalBackendSyncClass { ECalBackendSyncStatus (*open_sync) (ECalBackendSync *backend, EDataCal *cal, gboolean only_if_exists, const char *username, const char *password); ECalBackendSyncStatus (*remove_sync) (ECalBackendSync *backend, EDataCal *cal); - ECalBackendSyncStatus (*create_object_sync) (ECalBackendSync *backend, EDataCal *cal, const char *calobj, char **uid); + ECalBackendSyncStatus (*create_object_sync) (ECalBackendSync *backend, EDataCal *cal, char **calobj, char **uid); ECalBackendSyncStatus (*modify_object_sync) (ECalBackendSync *backend, EDataCal *cal, const char *calobj, CalObjModType mod, char **old_object); ECalBackendSyncStatus (*remove_object_sync) (ECalBackendSync *backend, EDataCal *cal, const char *uid, const char *rid, CalObjModType mod, char **object); @@ -97,9 +97,9 @@ ECalBackendSyncStatus e_cal_backend_sync_open (ECalBackendSyn ECalBackendSyncStatus e_cal_backend_sync_remove (ECalBackendSync *backend, EDataCal *cal); ECalBackendSyncStatus e_cal_backend_sync_create_object (ECalBackendSync *backend, - EDataCal *cal, - const char *calobj, - char **uid); + EDataCal *cal, + char **calobj, + char **uid); ECalBackendSyncStatus e_cal_backend_sync_modify_object (ECalBackendSync *backend, EDataCal *cal, const char *calobj, -- 2.7.4