Monotone-Parent: 25c172f93ef4ab6ada0aeb6ff4267e98aef8b719

Monotone-Revision: 95af248444f21e7a45c7f512247840f4bf84e4bb

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2008-12-10T19:02:50
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2008-12-10 19:02:50 +00:00
parent ff33d95a42
commit 8d1507cc3a
4 changed files with 57 additions and 40 deletions

View File

@ -1,3 +1,22 @@
2008-12-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* iCalYearlyRecurrenceCalculator.m
([iCalYearlyRecurrenceCalculator -lastInstanceStartDate]): same as
below.
* iCalMonthlyRecurrenceCalculator.m
([iCalMonthlyRecurrenceCalculator -lastInstanceStartDate]): same
as below.
* iCalWeeklyRecurrenceCalculator.m
([iCalWeeklyRecurrenceCalculator -lastInstanceStartDate]): same as
below.
* iCalDailyRecurrenceCalculator.m ([iCalDailyRecurrenceCalculator
-lastInstanceStartDate]): return a date based on the start date,
instead of julian calculations, to avoid losing the original date
timezone.
2008-08-18 Ludovic Marcotte <lmarcotte@inverse.ca> 2008-08-18 Ludovic Marcotte <lmarcotte@inverse.ca>
* NSString+NGCards.m ([NSString -unescapedFromCard]): added code * NSString+NGCards.m ([NSString -unescapedFromCard]): added code

View File

@ -484,25 +484,23 @@ static void NGMonthDaySet_fillWithByDayX (NGMonthDaySet *daySet,
return ranges; return ranges;
} }
- (NSCalendarDate *) lastInstanceStartDate - (NSCalendarDate *) lastInstanceStartDate
{ {
NSCalendarDate *firStart, *lastInstanceStartDate;
if ([rrule repeatCount] > 0) if ([rrule repeatCount] > 0)
{ {
NSCalendarDate *until; firStart = [firstRange startDate];
unsigned months, interval;
lastInstanceStartDate = [firStart dateByAddingYears: 0
interval = [rrule repeatInterval]; months: ([rrule repeatInterval]
months = [rrule repeatCount] - 1 /* the first counts as one! */; * [rrule repeatCount])
days: 0];
if (interval > 0)
months *= interval;
until = [[firstRange startDate] dateByAddingYears: 0
months: months
days: 0];
return until;
} }
return [super lastInstanceStartDate]; else
lastInstanceStartDate = [super lastInstanceStartDate];
return lastInstanceStartDate;
} }
@end /* iCalMonthlyRecurrenceCalculator */ @end /* iCalMonthlyRecurrenceCalculator */

View File

@ -185,25 +185,22 @@
return ranges; return ranges;
} }
- (NSCalendarDate *) lastInstanceStartDate - (NSCalendarDate *) lastInstanceStartDate
{ {
NSCalendarDate *firStart, *lastInstanceStartDate;
if ([rrule repeatCount] > 0) if ([rrule repeatCount] > 0)
{ {
long jnFirst, jnRuleLast;
NSCalendarDate *firStart, *until;
firStart = [firstRange startDate]; firStart = [firstRange startDate];
jnFirst = [firStart julianNumber];
jnRuleLast = ([rrule repeatInterval] * lastInstanceStartDate = [firStart dateByAddingYears: 0 months: 0
[rrule repeatCount] * 7) + days: (7 * [rrule repeatInterval]
jnFirst; * [rrule repeatCount])];
until = [NSCalendarDate dateForJulianNumber: jnRuleLast];
until = [until hour: [firStart hourOfDay]
minute: [firStart minuteOfHour]
second: [firStart secondOfMinute]];
return until;
} }
return [super lastInstanceStartDate]; else
lastInstanceStartDate = [super lastInstanceStartDate];
return lastInstanceStartDate;
} }
@end /* iCalWeeklyRecurrenceCalculator */ @end /* iCalWeeklyRecurrenceCalculator */

View File

@ -90,19 +90,22 @@
- (NSCalendarDate *) lastInstanceStartDate - (NSCalendarDate *) lastInstanceStartDate
{ {
if ([rrule repeatCount] > 0) NSCalendarDate *firStart, *lastInstanceStartDate;
if ([rrule repeatCount] > 0)
{ {
NSCalendarDate *until; firStart = [firstRange startDate];
unsigned years, interval;
lastInstanceStartDate
interval = [rrule repeatInterval]; = [firStart dateByAddingYears: ([rrule repeatInterval]
years = [rrule repeatCount] * interval; * [rrule repeatCount])
until = [[firstRange startDate] dateByAddingYears: years months: 0
months: 0 days: 0];
days: 0];
return until;
} }
return [super lastInstanceStartDate]; else
lastInstanceStartDate = [super lastInstanceStartDate];
return lastInstanceStartDate;
} }
@end /* iCalYearlyRecurrenceCalculator */ @end /* iCalYearlyRecurrenceCalculator */