From ee3c7fe50f28ade401265dd66397689756702078 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 12 Dec 2008 18:43:14 +0000 Subject: [PATCH] Fix for bug #3166 Monotone-Parent: d85d7d8fee328504d17e9458ec53c9819d09b3bc Monotone-Revision: bc0e93dcef9a5cd587d3be1a69b22cdf040ed789 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2008-12-12T18:43:14 Monotone-Branch: ca.inverse.sogo --- SOPE/NGCards/iCalDailyRecurrenceCalculator.m | 2 +- SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m | 2 +- SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m | 2 +- SOPE/NGCards/iCalYearlyRecurrenceCalculator.m | 2 +- SoObjects/Appointments/iCalEvent+SOGo.m | 9 ++++++--- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/SOPE/NGCards/iCalDailyRecurrenceCalculator.m b/SOPE/NGCards/iCalDailyRecurrenceCalculator.m index 8ffa4e10a..b90af51a7 100644 --- a/SOPE/NGCards/iCalDailyRecurrenceCalculator.m +++ b/SOPE/NGCards/iCalDailyRecurrenceCalculator.m @@ -138,7 +138,7 @@ lastInstanceStartDate = [firStart dateByAddingYears: 0 months: 0 days: ([rrule repeatInterval] - * [rrule repeatCount])]; + * ([rrule repeatCount] - 1))]; } else lastInstanceStartDate = [super lastInstanceStartDate]; diff --git a/SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m b/SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m index 4949e712f..e704ea50d 100644 --- a/SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m +++ b/SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m @@ -494,7 +494,7 @@ static void NGMonthDaySet_fillWithByDayX (NGMonthDaySet *daySet, lastInstanceStartDate = [firStart dateByAddingYears: 0 months: ([rrule repeatInterval] - * [rrule repeatCount]) + * ([rrule repeatCount] - 1)) days: 0]; } else diff --git a/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m b/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m index 5de713d8d..a3e6005fa 100644 --- a/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m +++ b/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m @@ -195,7 +195,7 @@ lastInstanceStartDate = [firStart dateByAddingYears: 0 months: 0 days: (7 * [rrule repeatInterval] - * [rrule repeatCount])]; + * ([rrule repeatCount] - 1))]; } else lastInstanceStartDate = [super lastInstanceStartDate]; diff --git a/SOPE/NGCards/iCalYearlyRecurrenceCalculator.m b/SOPE/NGCards/iCalYearlyRecurrenceCalculator.m index d7c34d2ad..9f27a9b95 100644 --- a/SOPE/NGCards/iCalYearlyRecurrenceCalculator.m +++ b/SOPE/NGCards/iCalYearlyRecurrenceCalculator.m @@ -98,7 +98,7 @@ lastInstanceStartDate = [firStart dateByAddingYears: ([rrule repeatInterval] - * [rrule repeatCount]) + * ([rrule repeatCount] - 1)) months: 0 days: 0]; } diff --git a/SoObjects/Appointments/iCalEvent+SOGo.m b/SoObjects/Appointments/iCalEvent+SOGo.m index 68bcf1fce..7e2e938a3 100644 --- a/SoObjects/Appointments/iCalEvent+SOGo.m +++ b/SoObjects/Appointments/iCalEvent+SOGo.m @@ -40,15 +40,18 @@ - (BOOL) isStillRelevant { - NSCalendarDate *now; + NSCalendarDate *now, *lastRecurrence; BOOL isStillRelevent; now = [NSCalendarDate calendarDate]; if ([self isRecurrent]) - isStillRelevent = ([[self lastPossibleRecurrenceStartDate] earlierDate: now] == now); + { + lastRecurrence = [self lastPossibleRecurrenceStartDate]; + isStillRelevent = (lastRecurrence == nil || [lastRecurrence earlierDate: now] == now); + } else - isStillRelevent = ([[self endDate] earlierDate: now] == now); + isStillRelevent = ([[self endDate] earlierDate: now] == now); return isStillRelevent; }