From 4c2762e7b21dce863c5e2f6508270eea46219a56 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 12 Jan 2012 13:39:18 +0000 Subject: [PATCH] Monotone-Parent: c19f9b62fb1cd88301e4921d8d23bb5b5169fb45 Monotone-Revision: 59576b63b875c6db3416e7be726b196610b856a3 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-01-12T13:39:18 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ OpenChange/MAPIStoreTasksMessage.m | 33 +++++++++++++++++------------- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index ab0dc09c9..032295ad3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-01-12 Wolfgang Sourdeau + + * OpenChange/MAPIStoreTasksMessage.m (-save): the dates provided + by Outlook for start, due and completed are all-day dates, we thus + need to remove the timezone offset from those dates. + 2012-01-11 Wolfgang Sourdeau * OpenChange/MAPIStoreGCSMessageTable.m diff --git a/OpenChange/MAPIStoreTasksMessage.m b/OpenChange/MAPIStoreTasksMessage.m index 1418d76fc..81c2a9ba9 100644 --- a/OpenChange/MAPIStoreTasksMessage.m +++ b/OpenChange/MAPIStoreTasksMessage.m @@ -22,8 +22,10 @@ */ #import +#import #import #import +#import #import #import #import @@ -325,13 +327,11 @@ iCalCalendar *vCalendar; iCalToDo *vToDo; id value; - SOGoUserDefaults *ud; - iCalTimeZone *tz; iCalDateTime *date; - NSString *owner, *status, *priority; + NSString *status, *priority; NSCalendarDate *now; + NSInteger tzOffset; - owner = [sogoObject ownerInContext: nil]; vToDo = [sogoObject component: YES secure: NO]; vCalendar = [vToDo parent]; [vCalendar setProdID: @"-//Inverse inc.//OpenChange+SOGo//EN"]; @@ -366,17 +366,16 @@ [vToDo setTimeStampAsDate: value]; } - ud = [[SOGoUser userWithLogin: owner] userDefaults]; - tz = [iCalTimeZone timeZoneForName: [ud timeZoneName]]; - [vCalendar addTimeZone: tz]; - // start value = [properties objectForKey: MAPIPropertyKey (PidLidTaskStartDate)]; if (value) { date = (iCalDateTime *) [vToDo uniqueChildWithTag: @"dtstart"]; - [date setTimeZone: tz]; - [date setDateTime: value]; + tzOffset = [[value timeZone] secondsFromGMTForDate: value]; + value = [value dateByAddingYears: 0 months: 0 days: 0 + hours: 0 minutes: 0 + seconds: -tzOffset]; + [date setDate: value]; } else { @@ -388,8 +387,11 @@ if (value) { date = (iCalDateTime *) [vToDo uniqueChildWithTag: @"due"]; - [date setTimeZone: tz]; - [date setDateTime: value]; + tzOffset = [[value timeZone] secondsFromGMTForDate: value]; + value = [value dateByAddingYears: 0 months: 0 days: 0 + hours: 0 minutes: 0 + seconds: -tzOffset]; + [date setDate: value]; } else { @@ -401,8 +403,11 @@ if (value) { date = (iCalDateTime *) [vToDo uniqueChildWithTag: @"completed"]; - [date setTimeZone: tz]; - [date setDateTime: value]; + tzOffset = [[value timeZone] secondsFromGMTForDate: value]; + value = [value dateByAddingYears: 0 months: 0 days: 0 + hours: 0 minutes: 0 + seconds: -tzOffset]; + [date setDate: value]; } else {