diff --git a/SOPE/NGCards/ChangeLog b/SOPE/NGCards/ChangeLog index c3d36d07a..2dca4e482 100644 --- a/SOPE/NGCards/ChangeLog +++ b/SOPE/NGCards/ChangeLog @@ -1,3 +1,14 @@ +2012-08-22 Francis Lachapelle + + * iCalWeeklyRecurrenceCalculator.m + (-recurrenceRangesWithinCalendarDateRange:): fixed validation of + the interval when a day mask is used on multiple days. + +2012-08-21 Francis Lachapelle + + * iCalRepeatableEntityObject.m (-exceptionDatesWithTimeZone:): we + now consider the timezone of the EXDATE, if defined. + 2012-07-26 Wolfgang Sourdeau * iCalTimeZonePeriod.m (-recurrenceRule): new accessor for the @@ -5,7 +16,7 @@ (-startDate): made method public. (-compare:): new method that compare two periods based on their startDate, for timezone definitions which have a "standard" or - "daylight" period for more that one years. + "daylight" period for more that one year. 2012-05-30 Francis Lachapelle diff --git a/SOPE/NGCards/iCalRepeatableEntityObject.m b/SOPE/NGCards/iCalRepeatableEntityObject.m index 66173119e..4cc9437a3 100644 --- a/SOPE/NGCards/iCalRepeatableEntityObject.m +++ b/SOPE/NGCards/iCalRepeatableEntityObject.m @@ -33,6 +33,7 @@ #import "iCalDateTime.h" #import "iCalEvent.h" #import "iCalTimeZone.h" +#import "iCalTimeZonePeriod.h" #import "iCalRecurrenceRule.h" #import "iCalRecurrenceCalculator.h" #import "iCalRepeatableEntityObject.h" @@ -258,19 +259,19 @@ while ((dateString = [dateList nextObject])) { - exDates = [(iCalDateTime*) dateString valuesAtIndex: 0 forKey: @""]; - for (i = 0; i < [exDates count]; i++) + exDates = [(iCalDateTime*) dateString dateTimes]; + for (i = 0; i < [exDates count]; i++) { - dateString = [exDates objectAtIndex: i]; + exDate = [exDates objectAtIndex: i]; + + // Example: timezone is -0400, date is 2012-05-24 (00:00:00 +0000), + // and changes to 2012-05-24 04:00:00 +0000 if ([theTimeZone isKindOfClass: [iCalTimeZone class]]) { - exDate = [(iCalTimeZone *) theTimeZone computedDateForString: dateString]; + exDate = [(iCalTimeZone *) theTimeZone computedDateForDate: exDate]; } else { - // Example: timezone is -0400, date is 2012-05-24 (00:00:00 +0000), - // and changes to 2012-05-24 04:00:00 +0000 - exDate = [dateString asCalendarDate]; offset = [(NSTimeZone *) theTimeZone secondsFromGMTForDate: exDate]; exDate = (NSCalendarDate *) [exDate dateByAddingYears:0 months:0 days:0 hours:0 minutes:0 seconds:-offset]; diff --git a/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m b/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m index f49536646..140d05531 100644 --- a/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m +++ b/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m @@ -118,8 +118,8 @@ currentStartDate = [firStart copy]; [currentStartDate autorelease]; ranges = [NSMutableArray array]; - i = 0; count = 0; + i = [currentStartDate dayOfWeek]; // Set the first day of the week as Sunday and ignore WKST if (dayMask == nil) { @@ -158,7 +158,7 @@ [startDate compare: currentStartDate] == NSOrderedSame) { // If the rule count is defined, stop once the count is reached. - if (i == 0) + if ([currentStartDate compare: firStart] == NSOrderedSame) { // Always add the start date of the recurring event if within // the lookup range. @@ -166,8 +166,6 @@ } else { - // The following always set the first day of the week as the day - // of the master event start date, ie WKST is ignored. week = i / 7; if ((week % interval) == 0 &&