X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=sope-ical%2FNGiCal%2FiCalRepeatableEntityObject.m;h=6d9a0ea8743e72cb11efcee70f60102c52eaaefd;hb=361462563ec750de2031393dc7ae8f28614185e2;hp=48ab00cc2f102f49d1f05d4555608fb19ab5469a;hpb=29f42fd8c27ac76c6d99177d0a8720bf17ae0d56;p=sope diff --git a/sope-ical/NGiCal/iCalRepeatableEntityObject.m b/sope-ical/NGiCal/iCalRepeatableEntityObject.m index 48ab00cc..6d9a0ea8 100644 --- a/sope-ical/NGiCal/iCalRepeatableEntityObject.m +++ b/sope-ical/NGiCal/iCalRepeatableEntityObject.m @@ -123,58 +123,11 @@ - (NSArray *)recurrenceRangesWithinCalendarDateRange:(NGCalendarDateRange *)_r firstInstanceCalendarDateRange:(NGCalendarDateRange *)_fir { - iCalRecurrenceRule *rule; - iCalRecurrenceCalculator *calc; - NSMutableArray *ranges; - unsigned i, count, rCount; - - ranges = [NSMutableArray array]; - count = [self->rRules count]; - for (i = 0; i < count; i++) { - NSArray *rs; - - rule = [self->rRules objectAtIndex:i]; - calc = [iCalRecurrenceCalculator recurrenceCalculatorForRecurrenceRule:rule - withFirstInstanceCalendarDateRange:_fir]; - rs = [calc recurrenceRangesWithinCalendarDateRange:_r]; - [ranges addObjectsFromArray:rs]; - } - - if (![ranges count]) - return nil; - - /* test if any exceptions do match */ - count = [self->exRules count]; - for (i = 0; i < count; i++) { - NSArray *rs; - - rule = [self->exRules objectAtIndex:i]; - calc = [iCalRecurrenceCalculator recurrenceCalculatorForRecurrenceRule:rule - withFirstInstanceCalendarDateRange:_fir]; - rs = [calc recurrenceRangesWithinCalendarDateRange:_r]; - [ranges removeObjectsInArray:rs]; - } - - if (![ranges count]) - return nil; - - /* exception dates are also possible */ - rCount = [ranges count]; - count = [self->exDates count]; - for (i = 0; i < count; i++) { - NSCalendarDate *exDate; - NGCalendarDateRange *r; - unsigned k; - - exDate = [self->exDates objectAtIndex:i]; - for (k = 0; k < rCount; k++) { - r = [ranges objectAtIndex:(rCount - k) - 1]; - if ([r containsDate:exDate]) { - [ranges removeObjectAtIndex:k]; - } - } - } - return ranges; + return [iCalRecurrenceCalculator recurrenceRangesWithinCalendarDateRange:_r + firstInstanceCalendarDateRange:_fir + recurrenceRules:self->rRules + exceptionRules:self->exRules + exceptionDates:self->exDates]; }