Monotone-Parent: e16807404ac6ea20632ee7e0e21ae2db34830540

Monotone-Revision: 46e2b0eb136b0ff20576ecbaa9428e3c5bcd2ce7

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-08-13T21:03:04
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2010-08-13 21:03:04 +00:00
parent 25fe7bbe9e
commit 42817f45bf
3 changed files with 49 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2010-08-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* iCalAlarm.m (-nextAlarmDate): new utility method split from the
SOGo quick table extractor for events.
2010-08-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* NGVCardPhoto.m (-type): returns @"JPEG" if the type is

View File

@ -41,6 +41,8 @@
- (void) setRecurrenceRule: (NSString *) _recurrenceRule;
- (NSString *) recurrenceRule;
- (NSCalendarDate *) nextAlarmDate;
@end
#endif /* __NGCards_iCalAlarm_H__ */

View File

@ -20,10 +20,14 @@
*/
#import <Foundation/NSString.h>
#import <NGExtensions/NSNull+misc.h>
#import <NGExtensions/NSObject+Logs.h>
#import "iCalAttachment.h"
#import "iCalEvent.h"
#import "iCalRecurrenceRule.h"
#import "iCalTrigger.h"
#import "NSString+NGCards.h"
#import "iCalAlarm.h"
@ -103,4 +107,42 @@
return [[self uniqueChildWithTag: @"rrule"] value: 0];
}
- (NSCalendarDate *) nextAlarmDate
{
Class parentClass;
iCalTrigger *aTrigger;
NSCalendarDate *relationDate, *nextAlarmDate;
NSString *relation;
NSTimeInterval anInterval;
iCalEvent *parentEvent;
nextAlarmDate = nil;
parentClass = [parent class];
if ([parentClass isKindOfClass: [iCalEvent class]])
{
parentEvent = (iCalEvent *) parent;
aTrigger = [self trigger];
if ([[aTrigger valueType] caseInsensitiveCompare: @"DURATION"])
{
relation = [aTrigger relationType];
anInterval = [[aTrigger value] durationAsTimeInterval];
if ([relation caseInsensitiveCompare: @"END"] == NSOrderedSame)
relationDate = [parentEvent endDate];
else
relationDate = [parentEvent startDate];
// Compute the next alarm date with respect to the reference date
if ([relationDate isNotNull])
nextAlarmDate = [relationDate addTimeInterval: anInterval];
}
}
else
[self warnWithFormat: @"alarms not handled for elements of class '%@'",
NSStringFromClass (parentClass)];
return nextAlarmDate;
}
@end /* iCalAlarm */