Until date support in timezone periods

Fixes #1487
maint-2.0.2
Francis Lachapelle 2012-09-24 20:43:12 -04:00
parent 903f6f2d72
commit 90fe3edce2
2 changed files with 12 additions and 5 deletions

View File

@ -194,17 +194,22 @@ static NSArray *knownTimeZones;
forDate: (NSCalendarDate *) aDate forDate: (NSCalendarDate *) aDate
{ {
NSArray *periods; NSArray *periods;
NSEnumerator *periodsList;
iCalTimeZonePeriod *period; iCalTimeZonePeriod *period;
NSCalendarDate *occurence; NSCalendarDate *occurence;
occurence = nil;
periods = [self childrenWithTag: pName]; periods = [self childrenWithTag: pName];
if ([periods count]) if ([periods count])
{ {
period = (iCalTimeZonePeriod *) [periods objectAtIndex: 0]; periodsList = [periods objectEnumerator];
occurence = [period occurenceForDate: aDate]; period = (iCalTimeZonePeriod *) [periodsList nextObject];
while (occurence == nil && period)
{
occurence = [period occurenceForDate: aDate];
period = (iCalTimeZonePeriod *) [periodsList nextObject];
}
} }
else
occurence = nil;
return occurence; return occurence;
} }

View File

@ -174,11 +174,13 @@
NSCalendarDate *tmpDate; NSCalendarDate *tmpDate;
iCalRecurrenceRule *rrule; iCalRecurrenceRule *rrule;
tmpDate = nil;
rrule = (iCalRecurrenceRule *) [self uniqueChildWithTag: @"rrule"]; rrule = (iCalRecurrenceRule *) [self uniqueChildWithTag: @"rrule"];
if ([rrule isVoid]) if ([rrule isVoid])
tmpDate tmpDate
= [(iCalDateTime *) [self uniqueChildWithTag: @"dtstart"] dateTime]; = [(iCalDateTime *) [self uniqueChildWithTag: @"dtstart"] dateTime];
else else if ([rrule untilDate] == nil || [refDate compare: [rrule untilDate]] == NSOrderedAscending)
tmpDate = [self _occurenceForDate: refDate byRRule: rrule]; tmpDate = [self _occurenceForDate: refDate byRRule: rrule];
return tmpDate; return tmpDate;