Fix all-day events covering a timezone change

This commit is contained in:
Francis Lachapelle
2015-11-03 15:47:30 -05:00
parent e5c71a4179
commit cbf9b6da3e
5 changed files with 53 additions and 39 deletions
+19 -4
View File
@@ -652,7 +652,8 @@
iCalEvent *event;
BOOL resetAlarm;
unsigned int snoozeAlarm;
NSInteger offset;
NSUInteger snoozeAlarm;
event = [self event];
co = [self clientObject];
@@ -662,12 +663,23 @@
timeZone = [ud timeZone];
eventStartDate = [event startDate];
eventEndDate = [event endDate];
if (!isAllDay)
if (isAllDay)
{
[eventStartDate setTimeZone: timeZone];
[eventEndDate setTimeZone: timeZone];
eventEndDate = [eventEndDate dateByAddingYears: 0 months: 0 days: -1];
// Convert the dates to the user's timezone
offset = [timeZone secondsFromGMTForDate: eventStartDate];
eventStartDate = [eventStartDate dateByAddingYears:0 months:0 days:0 hours:0 minutes:0
seconds:-offset];
offset = [timeZone secondsFromGMTForDate: eventEndDate];
eventEndDate = [eventEndDate dateByAddingYears:0 months:0 days:0 hours:0 minutes:0
seconds:-offset];
}
[eventStartDate setTimeZone: timeZone];
[eventEndDate setTimeZone: timeZone];
// resetAlarm=yes is set only when we are about to show the alarm popup in the Web
// interface of SOGo. See generic.js for details. snoozeAlarm=X is called when the
// user clicks on "Snooze for" X minutes, when the popup is being displayed.
@@ -704,8 +716,11 @@
data = [NSMutableDictionary dictionaryWithObjectsAndKeys:
[componentCalendar nameInContainer], @"pid",
[componentCalendar displayName], @"calendar",
[NSNumber numberWithBool: isAllDay], @"isAllDay",
[NSNumber numberWithBool: [self isReadOnly]], @"isReadOnly",
[NSNumber numberWithBool: [self userHasRSVP]], @"userHasRSVP",
[eventStartDate iso8601DateString], @"startDate",
[eventEndDate iso8601DateString], @"endDate",
[dateFormatter formattedDate: eventStartDate], @"localizedStartDate",
[dateFormatter formattedDate: eventEndDate], @"localizedEndDate",
[self alarm], @"alarm",