+2006-07-10 Chenthill Palanisamy <pchenthill@novell.com>
+
+ Fixes #332911
+ * backends/caldav/e-cal-backend-caldav.c:
+ (caldav_set_default_zone), (e_cal_backend_caldav_class_init):
+ * backends/contacts/e-cal-backend-contacts.c:
+ (e_cal_backend_contacts_open),
+ (e_cal_backend_contacts_set_default_zone),
+ (e_cal_backend_contacts_finalize),
+ (e_cal_backend_contacts_class_init):
+ * backends/file/e-cal-backend-file.c:
+ (e_cal_backend_file_finalize), (e_cal_backend_file_open),
+ (e_cal_backend_file_set_default_zone),
+ (e_cal_backend_file_class_init):
+ * backends/groupwise/e-cal-backend-groupwise.c:
+ (connect_to_server), (e_cal_backend_groupwise_finalize),
+ (e_cal_backend_groupwise_open),
+ (e_cal_backend_groupwise_set_default_zone),
+ (e_cal_backend_groupwise_class_init):
+ * backends/http/e-cal-backend-http.c:
+ (e_cal_backend_http_finalize), (e_cal_backend_http_open),
+ (e_cal_backend_http_set_default_zone),
+ (e_cal_backend_http_class_init):
+ * backends/weather/e-cal-backend-weather.c:
+ (e_cal_backend_weather_open),
+ (e_cal_backend_weather_set_default_zone),
+ (e_cal_backend_weather_finalize),
+ (e_cal_backend_weather_class_init):
+ * idl/Evolution-DataServer-Calendar.idl:
+ * libedata-cal/e-cal-backend-sync.c:
+ (e_cal_backend_sync_set_default_zone),
+ (_e_cal_backend_set_default_zone), (e_cal_backend_sync_class_init):
+ * libedata-cal/e-cal-backend-sync.h:
+ * libedata-cal/e-cal-backend.c: (e_cal_backend_set_default_zone):
+ * libedata-cal/e-cal-backend.h:
+ * libedata-cal/e-data-cal.c: (impl_Cal_setDefaultTimezone): Added
+ e_cal_backend_set_zone as a replacement for e_cal_backend_set_timezone.
+ Replaced the same for all backends.
+ * backends/e-cal-backend-groupwise-utils.c (set_properties_from_cal_component):
+ check if the dtstart is date using the is_date parameter.
+ * libecal/e-cal.c: (e_cal_set_default_timezone): Pass the timezone object
+ as a string instead of the tzid.
+
2006-07-10 Harish Krishnaswamy <kharish@novell.com>
* libedata-cal/e-cal-backend-cache.c:
}
static ECalBackendSyncStatus
-caldav_set_default_timezone (ECalBackendSync *backend,
+caldav_set_default_zone (ECalBackendSync *backend,
EDataCal *cal,
- const char *tzid)
+ const char *tzobj)
{
/* FIXME: implement me! */
g_warning ("function not implemented %s", G_STRFUNC);
sync_class->get_object_list_sync = caldav_get_object_list;
sync_class->get_timezone_sync = caldav_get_timezone;
sync_class->add_timezone_sync = caldav_add_timezone;
- sync_class->set_default_timezone_sync = caldav_set_default_timezone;
+ sync_class->set_default_zone_sync = caldav_set_default_zone;
sync_class->get_freebusy_sync = caldav_get_free_busy;
sync_class->get_changes_sync = caldav_get_changes;
if (priv->addressbook_loaded)
return GNOME_Evolution_Calendar_Success;
+
+ if (priv->default_zone && priv->default_zone != icaltimezone_get_utc_timezone ()) {
+ icalcomponent *icalcomp = icaltimezone_get_component (priv->default_zone);
+ icaltimezone *zone = icaltimezone_new ();
+
+ icaltimezone_set_component (zone, icalcomponent_new_clone (icalcomp));
- e_cal_backend_contacts_add_timezone (backend, cal, (const char *) icaltimezone_get_tzid (priv->default_zone));
+ g_hash_table_insert (priv->zones, g_strdup (icaltimezone_get_tzid (zone)), zone);
+ }
/* Create address books for existing sources */
for (i = e_source_list_peek_groups (priv->addressbook_sources); i; i = i->next) {
}
static ECalBackendSyncStatus
-e_cal_backend_contacts_set_default_timezone (ECalBackendSync *backend, EDataCal *cal, const char *tzid)
+e_cal_backend_contacts_set_default_zone (ECalBackendSync *backend, EDataCal *cal, const char *tzobj)
{
+ icalcomponent *tz_comp;
ECalBackendContacts *cbcontacts;
ECalBackendContactsPrivate *priv;
+ icaltimezone *zone;
+
+ cbcontacts = (ECalBackendContacts *) backend;
+
+ g_return_val_if_fail (E_IS_CAL_BACKEND_CONTACTS (cbcontacts), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (tzobj != NULL, GNOME_Evolution_Calendar_OtherError);
- cbcontacts = E_CAL_BACKEND_CONTACTS (backend);
priv = cbcontacts->priv;
- priv->default_zone = e_cal_backend_internal_get_timezone (E_CAL_BACKEND (backend), tzid);
- if (!priv->default_zone) {
- priv->default_zone = icaltimezone_get_utc_timezone ();
+ tz_comp = icalparser_parse_string (tzobj);
+ if (!tz_comp)
+ return GNOME_Evolution_Calendar_InvalidObject;
+
+ zone = icaltimezone_new ();
+ icaltimezone_set_component (zone, tz_comp);
+
+ if (priv->default_zone && priv->default_zone != icaltimezone_get_utc_timezone ())
+ icaltimezone_free (priv->default_zone, 1);
+
+ /* Set the default timezone to it. */
+ priv->default_zone = zone;
- return GNOME_Evolution_Calendar_ObjectNotFound;
- }
-
return GNOME_Evolution_Calendar_Success;
}
cbc = E_CAL_BACKEND_CONTACTS (object);
priv = cbc->priv;
+ if (priv->default_zone) {
+ icaltimezone_free (priv->default_zone, 1);
+ priv->default_zone = NULL;
+ }
+
g_hash_table_destroy (priv->addressbooks);
g_hash_table_destroy (priv->tracked_contacts);
g_hash_table_destroy (priv->zones);
sync_class->get_object_list_sync = e_cal_backend_contacts_get_object_list;
sync_class->get_timezone_sync = e_cal_backend_contacts_get_timezone;
sync_class->add_timezone_sync = e_cal_backend_contacts_add_timezone;
- sync_class->set_default_timezone_sync = e_cal_backend_contacts_set_default_timezone;
+ sync_class->set_default_zone_sync = e_cal_backend_contacts_set_default_zone;
sync_class->get_freebusy_sync = e_cal_backend_contacts_get_free_busy;
sync_class->get_changes_sync = e_cal_backend_contacts_get_changes;
backend_class->is_loaded = e_cal_backend_contacts_is_loaded;
priv->uri = NULL;
}
+ if (priv->default_zone) {
+ icaltimezone_free (priv->default_zone, 1);
+ priv->default_zone = NULL;
+ }
+
g_free (priv);
cbfile->priv = NULL;
status = create_cal (cbfile, str_uri);
}
- if (status == GNOME_Evolution_Calendar_Success)
- e_cal_backend_file_add_timezone (backend, cal, (const char *) icaltimezone_get_tzid (priv->default_zone));
+ if (status == GNOME_Evolution_Calendar_Success) {
+ if (priv->default_zone) {
+ icalcomponent *icalcomp = icaltimezone_get_component (priv->default_zone);
+
+ icalcomponent_add_component (priv->icalcomp, icalcomponent_new_clone (icalcomp));
+ save (cbfile);
+ }
+ }
g_free (str_uri);
return GNOME_Evolution_Calendar_Success;
}
-
static ECalBackendSyncStatus
-e_cal_backend_file_set_default_timezone (ECalBackendSync *backend, EDataCal *cal, const char *tzid)
+e_cal_backend_file_set_default_zone (ECalBackendSync *backend, EDataCal *cal, const char *tzobj)
{
+ icalcomponent *tz_comp;
ECalBackendFile *cbfile;
ECalBackendFilePrivate *priv;
+ icaltimezone *zone;
+
+ cbfile = (ECalBackendFile *) backend;
+
+ g_return_val_if_fail (E_IS_CAL_BACKEND_FILE (cbfile), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (tzobj != NULL, GNOME_Evolution_Calendar_OtherError);
- cbfile = E_CAL_BACKEND_FILE (backend);
priv = cbfile->priv;
+ tz_comp = icalparser_parse_string (tzobj);
+ if (!tz_comp)
+ return GNOME_Evolution_Calendar_InvalidObject;
+
+ zone = icaltimezone_new ();
+ icaltimezone_set_component (zone, tz_comp);
+
+ if (priv->default_zone != icaltimezone_get_utc_timezone ())
+ icaltimezone_free (priv->default_zone, 1);
+
/* Set the default timezone to it. */
- priv->default_zone = icaltimezone_get_builtin_timezone_from_tzid (tzid);
+ priv->default_zone = zone;
return GNOME_Evolution_Calendar_Success;
}
sync_class->get_attachment_list_sync = e_cal_backend_file_get_attachment_list;
sync_class->get_timezone_sync = e_cal_backend_file_get_timezone;
sync_class->add_timezone_sync = e_cal_backend_file_add_timezone;
- sync_class->set_default_timezone_sync = e_cal_backend_file_set_default_timezone;
+ sync_class->set_default_zone_sync = e_cal_backend_file_set_default_zone;
sync_class->get_freebusy_sync = e_cal_backend_file_get_free_busy;
sync_class->get_changes_sync = e_cal_backend_file_get_changes;
}
/* all day event */
- if (!dt.tzid && e_gw_item_get_item_type (item) == E_GW_ITEM_TYPE_APPOINTMENT)
+ if (dt.value->is_date && e_gw_item_get_item_type (item) == E_GW_ITEM_TYPE_APPOINTMENT)
e_gw_item_set_is_allday_event (item, TRUE);
/* creation date */
}
e_cal_backend_cache_put_default_timezone (priv->cache, priv->default_zone);
- e_cal_backend_groupwise_add_timezone (E_CAL_BACKEND_SYNC (cbgw), NULL, (const char *) icaltimezone_get_tzid (priv->default_zone));
-
+
/* spawn a new thread for opening the calendar */
thread = g_thread_create ((GThreadFunc) cache_init, cbgw, FALSE, &error);
if (!thread) {
priv->timeout_id = 0;
}
+ if (priv->default_zone) {
+ icaltimezone_free (priv->default_zone, 1);
+ priv->default_zone = NULL;
+ }
+
g_free (priv);
cbgw->priv = NULL;
}
e_cal_backend_cache_put_default_timezone (priv->cache, priv->default_zone);
- e_cal_backend_groupwise_add_timezone (backend, cal, (const char *) icaltimezone_get_tzid (priv->default_zone));
g_mutex_unlock (priv->mutex);
return GNOME_Evolution_Calendar_Success;
}
static ECalBackendSyncStatus
-e_cal_backend_groupwise_set_default_timezone (ECalBackendSync *backend, EDataCal *cal, const char *tzid)
+e_cal_backend_groupwise_set_default_zone (ECalBackendSync *backend, EDataCal *cal, const char *tzobj)
{
+ icalcomponent *tz_comp;
ECalBackendGroupwise *cbgw;
- ECalBackendGroupwisePrivate *priv;
+ ECalBackendGroupwisePrivate *priv;
+ icaltimezone *zone;
+
+ cbgw = (ECalBackendGroupwise *) backend;
+
+ g_return_val_if_fail (E_IS_CAL_BACKEND_GROUPWISE (cbgw), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (tzobj != NULL, GNOME_Evolution_Calendar_OtherError);
+
+ priv = cbgw->priv;
+
+ tz_comp = icalparser_parse_string (tzobj);
+ if (!tz_comp)
+ return GNOME_Evolution_Calendar_InvalidObject;
+
+ zone = icaltimezone_new ();
+ icaltimezone_set_component (zone, tz_comp);
+
+ if (priv->default_zone)
+ icaltimezone_free (priv->default_zone, 1);
- cbgw = E_CAL_BACKEND_GROUPWISE (backend);
- priv = cbgw->priv;
-
/* Set the default timezone to it. */
- priv->default_zone = icaltimezone_get_builtin_timezone_from_tzid (tzid);
+ priv->default_zone = zone;
return GNOME_Evolution_Calendar_Success;
}
sync_class->get_attachment_list_sync = e_cal_backend_groupwise_get_attachment_list;
sync_class->get_timezone_sync = e_cal_backend_groupwise_get_timezone;
sync_class->add_timezone_sync = e_cal_backend_groupwise_add_timezone;
- sync_class->set_default_timezone_sync = e_cal_backend_groupwise_set_default_timezone;
+ sync_class->set_default_zone_sync = e_cal_backend_groupwise_set_default_zone;
sync_class->get_freebusy_sync = e_cal_backend_groupwise_get_free_busy;
sync_class->get_changes_sync = e_cal_backend_groupwise_get_changes;
priv->uri = NULL;
}
+ if (priv->default_zone) {
+ icaltimezone_free (priv->default_zone, 1);
+ priv->default_zone = NULL;
+ }
+
+
if (priv->soup_session) {
soup_session_abort (priv->soup_session);
g_object_unref (priv->soup_session);
if (priv->default_zone) {
e_cal_backend_cache_put_default_timezone (priv->cache, priv->default_zone);
- e_cal_backend_http_add_timezone (backend, cal, (const char *) icaltimezone_get_tzid (priv->default_zone));
}
if (priv->mode == CAL_MODE_LOCAL)
}
static ECalBackendSyncStatus
-e_cal_backend_http_set_default_timezone (ECalBackendSync *backend, EDataCal *cal, const char *tzid)
+e_cal_backend_http_set_default_zone (ECalBackendSync *backend, EDataCal *cal, const char *tzobj)
{
+ icalcomponent *tz_comp;
ECalBackendHttp *cbhttp;
ECalBackendHttpPrivate *priv;
+ icaltimezone *zone;
+
+ cbhttp = (ECalBackendHttp *) backend;
+
+ g_return_val_if_fail (E_IS_CAL_BACKEND_HTTP (cbhttp), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (tzobj != NULL, GNOME_Evolution_Calendar_OtherError);
- cbhttp = E_CAL_BACKEND_HTTP (backend);
priv = cbhttp->priv;
-
+
+ tz_comp = icalparser_parse_string (tzobj);
+ if (!tz_comp)
+ return GNOME_Evolution_Calendar_InvalidObject;
+
+
+ zone = icaltimezone_new ();
+ icaltimezone_set_component (zone, tz_comp);
+
+ if (priv->default_zone)
+ icaltimezone_free (priv->default_zone, 1);
+
/* Set the default timezone to it. */
- priv->default_zone = icaltimezone_get_builtin_timezone_from_tzid (tzid);
-
+ priv->default_zone = zone;
+
return GNOME_Evolution_Calendar_Success;
}
sync_class->get_object_list_sync = e_cal_backend_http_get_object_list;
sync_class->get_timezone_sync = e_cal_backend_http_get_timezone;
sync_class->add_timezone_sync = e_cal_backend_http_add_timezone;
- sync_class->set_default_timezone_sync = e_cal_backend_http_set_default_timezone;
+ sync_class->set_default_zone_sync = e_cal_backend_http_set_default_zone;
sync_class->get_freebusy_sync = e_cal_backend_http_get_free_busy;
sync_class->get_changes_sync = e_cal_backend_http_get_changes;
if (!priv->cache) {
priv->cache = e_cal_backend_cache_new (uri);
- e_cal_backend_weather_add_timezone (backend, cal, (const char *) icaltimezone_get_tzid (priv->default_zone));
-
if (!priv->cache) {
e_cal_backend_notify_error (E_CAL_BACKEND (cbw), _("Could not create cache file"));
return GNOME_Evolution_Calendar_OtherError;
}
+ if (priv->default_zone) {
+ icalcomponent *icalcomp = icaltimezone_get_component (priv->default_zone);
+ icaltimezone *zone = icaltimezone_new ();
+
+ icaltimezone_set_component (zone, icalcomponent_new_clone (icalcomp));
+
+ g_hash_table_insert (priv->zones, g_strdup (icaltimezone_get_tzid (zone)), zone);
+ }
+
if (priv->mode == CAL_MODE_LOCAL)
return GNOME_Evolution_Calendar_Success;
}
static ECalBackendSyncStatus
-e_cal_backend_weather_set_default_timezone (ECalBackendSync *backend, EDataCal *cal, const char *tzid)
+e_cal_backend_weather_set_default_zone (ECalBackendSync *backend, EDataCal *cal, const char *tzobj)
{
+ icalcomponent *tz_comp;
ECalBackendWeather *cbw;
ECalBackendWeatherPrivate *priv;
+ icaltimezone *zone;
+
+ cbw = (ECalBackendWeather *) backend;
+
+ g_return_val_if_fail (E_IS_CAL_BACKEND_WEATHER (cbw), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (tzobj != NULL, GNOME_Evolution_Calendar_OtherError);
- cbw = E_CAL_BACKEND_WEATHER (backend);
priv = cbw->priv;
- priv->default_zone = e_cal_backend_internal_get_timezone (E_CAL_BACKEND (backend), tzid);
- if (!priv->default_zone) {
- priv->default_zone = icaltimezone_get_utc_timezone ();
+ tz_comp = icalparser_parse_string (tzobj);
+ if (!tz_comp)
+ return GNOME_Evolution_Calendar_InvalidObject;
- return GNOME_Evolution_Calendar_ObjectNotFound;
- }
+ zone = icaltimezone_new ();
+ icaltimezone_set_component (zone, tz_comp);
+
+ if (priv->default_zone)
+ icaltimezone_free (priv->default_zone, 1);
+
+ /* Set the default timezone to it. */
+ priv->default_zone = zone;
return GNOME_Evolution_Calendar_Success;
}
priv->city = NULL;
}
+ if (priv->default_zone) {
+ icaltimezone_free (priv->default_zone, 1);
+ priv->default_zone = NULL;
+ }
+
g_free (priv);
cbw->priv = NULL;
sync_class->get_object_list_sync = e_cal_backend_weather_get_object_list;
sync_class->get_timezone_sync = e_cal_backend_weather_get_timezone;
sync_class->add_timezone_sync = e_cal_backend_weather_add_timezone;
- sync_class->set_default_timezone_sync = e_cal_backend_weather_set_default_timezone;
+ sync_class->set_default_zone_sync = e_cal_backend_weather_set_default_zone;
sync_class->get_freebusy_sync = e_cal_backend_weather_get_free_busy;
sync_class->get_changes_sync = e_cal_backend_weather_get_changes;
backend_class->is_loaded = e_cal_backend_weather_is_loaded;
oneway void getTimezone (in CalTimezoneObjUID tzid);
oneway void addTimezone (in CalTimezoneObj tz);
/* The timezone used to resolve DATE and floating DATE-TIME values. */
- oneway void setDefaultTimezone (in CalTimezoneObjUID tzid);
+ oneway void setDefaultTimezone (in CalTimezoneObj tz);
/* Gets a list of components that changed */
oneway void getChanges (in string change_id);
CORBA_Environment ev;
ECalendarStatus status;
ECalendarOp *our_op;
- const char *tzid;
+ icalcomponent *icalcomp = NULL;
+ char *tzobj;
e_return_error_if_fail (ecal && E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (zone, E_CALENDAR_STATUS_INVALID_ARG);
g_mutex_unlock (priv->mutex);
/* FIXME Adding it to the server to change the tzid */
- tzid = icaltimezone_get_tzid (zone);
+ icalcomp = icaltimezone_get_component (zone);
+ if (!icalcomp) {
+ e_calendar_remove_op (ecal, our_op);
+ g_mutex_unlock (our_op->mutex);
+ e_calendar_free_op (our_op);
+
+ E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_INVALID_ARG, error);
+ }
+
+ /* convert icaltimezone into a string */
+ tzobj = icalcomponent_as_ical_string (icalcomp);
/* call the backend */
CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_Cal_setDefaultTimezone (priv->cal, tzid, &ev);
+ GNOME_Evolution_Calendar_Cal_setDefaultTimezone (priv->cal, tzobj, &ev);
if (BONOBO_EX (&ev)) {
e_calendar_remove_op (ecal, our_op);
g_mutex_unlock (our_op->mutex);
}
/**
+ * e_cal_backend_sync_set_default_zone:
+ * @backend: An ECalBackendSync object.
+ * @cal: An EDataCal object.
+ * @tz: Timezone object as string.
+ *
+ * Calls the set_default_timezone method on the given backend.
+ *
+ * Return value: Status code.
+ */
+ECalBackendSyncStatus
+e_cal_backend_sync_set_default_zone (ECalBackendSync *backend, EDataCal *cal, const char *tz)
+{
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+
+ /* Old backends might be using the set_default_timezone */
+ if (!E_CAL_BACKEND_SYNC_GET_CLASS (backend)->set_default_zone_sync) {
+ icalcomponent *icalcomp = icalparser_parse_string (tz);
+ char *tzid = NULL;
+ icaltimezone *zone = icaltimezone_new ();
+
+ if (icalcomp) {
+ icaltimezone_set_component (zone, icalcomp);
+ tzid = icaltimezone_get_tzid (zone);
+ }
+
+ icaltimezone_free (zone, 1);
+
+ LOCK_WRAPPER (set_default_timezone_sync, (backend, cal, tzid));
+
+ return status;
+ }
+
+ LOCK_WRAPPER (set_default_zone_sync, (backend, cal, tz));
+
+ return status;
+}
+
+/**
+ * @deprecated This virual function should not be used in the backends, use
+ * e_cal_backend_sync_set_zone instead. This function restricts the default timezone
+ * to be libical builtin timezone.
+ *
* e_cal_backend_sync_set_default_timezone:
* @backend: An ECalBackendSync object.
* @cal: An EDataCal object.
}
static void
+_e_cal_backend_set_default_zone (ECalBackend *backend, EDataCal *cal, const char *tz)
+{
+ ECalBackendSyncStatus status;
+
+ status = e_cal_backend_sync_set_default_zone (E_CAL_BACKEND_SYNC (backend), cal, tz);
+
+ e_data_cal_notify_default_timezone_set (cal, status);
+}
+
+static void
_e_cal_backend_set_default_timezone (ECalBackend *backend, EDataCal *cal, const char *tzid)
{
ECalBackendSyncStatus status;
backend_class->get_timezone = _e_cal_backend_get_timezone;
backend_class->add_timezone = _e_cal_backend_add_timezone;
backend_class->set_default_timezone = _e_cal_backend_set_default_timezone;
+ backend_class->set_default_zone = _e_cal_backend_set_default_zone;
backend_class->get_changes = _e_cal_backend_get_changes;
backend_class->get_free_busy = _e_cal_backend_get_free_busy;
ECalBackendSyncStatus (*get_timezone_sync) (ECalBackendSync *backend, EDataCal *cal, const char *tzid, char **object);
ECalBackendSyncStatus (*add_timezone_sync) (ECalBackendSync *backend, EDataCal *cal, const char *tzobj);
ECalBackendSyncStatus (*set_default_timezone_sync) (ECalBackendSync *backend, EDataCal *cal, const char *tzid);
+ ECalBackendSyncStatus (*set_default_zone_sync) (ECalBackendSync *backend, EDataCal *cal, const char *tz);
ECalBackendSyncStatus (*get_changes_sync) (ECalBackendSync *backend, EDataCal *cal, const char *change_id, GList **adds, GList **modifies, GList **deletes);
ECalBackendSyncStatus (*get_freebusy_sync) (ECalBackendSync *backend, EDataCal *cal, GList *users, time_t start, time_t end, GList **freebusy);
ECalBackendSyncStatus e_cal_backend_sync_get_timezone (ECalBackendSync *backend, EDataCal *cal, const char *tzid, char **object);
ECalBackendSyncStatus e_cal_backend_sync_add_timezone (ECalBackendSync *backend, EDataCal *cal, const char *tzobj);
ECalBackendSyncStatus e_cal_backend_sync_set_default_timezone (ECalBackendSync *backend, EDataCal *cal, const char *tzid);
+ECalBackendSyncStatus e_cal_backend_sync_set_default_zone (ECalBackendSync *backend, EDataCal *cal, const char *tzobj);
ECalBackendSyncStatus e_cal_backend_sync_get_changes (ECalBackendSync *backend, EDataCal *cal, const char *change_id, GList **adds, GList **modifies, GList **deletes);
ECalBackendSyncStatus e_cal_backend_sync_get_free_busy (ECalBackendSync *backend, EDataCal *cal, GList *users, time_t start, time_t end, GList **freebusy);
}
/**
+ * e_cal_backend_set_default_zone:
+ * @backend: A calendar backend.
+ * @cal: An #EDataCal object.
+ * @tzobj: The timezone object, in a string.
+ *
+ * Sets the default timezone for the calendar, which is used to resolve
+ * DATE and floating DATE-TIME values.
+ */
+void
+e_cal_backend_set_default_zone (ECalBackend *backend, EDataCal *cal, const char *tzobj)
+{
+ g_return_if_fail (backend != NULL);
+ g_return_if_fail (E_IS_CAL_BACKEND (backend));
+ g_return_if_fail (tzobj != NULL);
+
+ (* CLASS (backend)->set_default_zone) (backend, cal, tzobj);
+}
+
+/**
+ * @deprecated This virual function should not be used in the backends, use
+ * e_cal_backend_set_zone instead. This function restricts the default timezone
+ * to be libical builtin timezone.
+ *
* e_cal_backend_set_default_timezone:
* @backend: A calendar backend.
* @cal: An #EDataCal object.
*
* Sets the default timezone for the calendar, which is used to resolve
* DATE and floating DATE-TIME values.
+ *
*/
void
e_cal_backend_set_default_timezone (ECalBackend *backend, EDataCal *cal, const char *tzid)
g_return_if_fail (E_IS_CAL_BACKEND (backend));
g_return_if_fail (tzid != NULL);
- g_assert (CLASS (backend)->set_default_timezone != NULL);
(* CLASS (backend)->set_default_timezone) (backend, cal, tzid);
}
/* Timezone related virtual methods */
void (* get_timezone) (ECalBackend *backend, EDataCal *cal, const char *tzid);
void (* add_timezone) (ECalBackend *backend, EDataCal *cal, const char *object);
+ void (* set_default_zone) (ECalBackend *backend, EDataCal *cal, const char *tzobj);
void (* set_default_timezone) (ECalBackend *backend, EDataCal *cal, const char *tzid);
void (* start_query) (ECalBackend *backend, EDataCalView *query);
void e_cal_backend_get_timezone (ECalBackend *backend, EDataCal *cal, const char *tzid);
void e_cal_backend_add_timezone (ECalBackend *backend, EDataCal *cal, const char *object);
void e_cal_backend_set_default_timezone (ECalBackend *backend, EDataCal *cal, const char *tzid);
+void e_cal_backend_set_default_zone (ECalBackend *backend, EDataCal *cal, const char *tzobj);
void e_cal_backend_get_changes (ECalBackend *backend, EDataCal *cal, const char *change_id);
void e_cal_backend_get_free_busy (ECalBackend *backend, EDataCal *cal, GList *users, time_t start, time_t end);
/* Cal::setDefaultTimezone method */
static void
impl_Cal_setDefaultTimezone (PortableServer_Servant servant,
- const CORBA_char *tzid,
+ const CORBA_char *tz,
CORBA_Environment *ev)
{
EDataCal *cal;
cal = E_DATA_CAL (bonobo_object_from_servant (servant));
priv = cal->priv;
- e_cal_backend_set_default_timezone (priv->backend, cal, tzid);
+ e_cal_backend_set_default_zone (priv->backend, cal, tz);
}
/**