diff --git a/ChangeLog b/ChangeLog index 09e770858..baee5b509 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2011-11-02 Wolfgang Sourdeau + + * OpenChange/MAPIStoreCalendarMessage.m (-save): handle all day + events based on the value of PidLidAppointmentSubType. + 2011-11-01 Wolfgang Sourdeau * OpenChange/MAPIStoreCalendarMessage.m (-save): added work-around diff --git a/OpenChange/MAPIStoreCalendarMessage.m b/OpenChange/MAPIStoreCalendarMessage.m index 0b5f39ad0..07a34ee52 100644 --- a/OpenChange/MAPIStoreCalendarMessage.m +++ b/OpenChange/MAPIStoreCalendarMessage.m @@ -610,6 +610,7 @@ - (void) save { iCalCalendar *vCalendar; + BOOL isAllDay; iCalDateTime *start, *end; iCalTimeZone *tz; NSCalendarDate *now; @@ -715,6 +716,10 @@ tz = [iCalTimeZone timeZoneForName: tzName]; [vCalendar addTimeZone: tz]; + isAllDay = [[properties + objectForKey: MAPIPropertyKey (PidLidAppointmentSubType)] + boolValue]; + // start value = [properties objectForKey: MAPIPropertyKey (PR_START_DATE)]; if (!value) @@ -723,8 +728,13 @@ if (value) { start = (iCalDateTime *) [newEvent uniqueChildWithTag: @"dtstart"]; - [start setTimeZone: tz]; - [start setDateTime: value]; + if (isAllDay) + [start setDate: value]; + else + { + [start setTimeZone: tz]; + [start setDateTime: value]; + } } /* end */ @@ -734,8 +744,13 @@ if (value) { end = (iCalDateTime *) [newEvent uniqueChildWithTag: @"dtend"]; - [end setTimeZone: tz]; - [end setDateTime: value]; + if (isAllDay) + [end setDate: value]; + else + { + [end setTimeZone: tz]; + [end setDateTime: value]; + } } /* priority */