See Changelog

Monotone-Parent: be2d77f6c4881e75bb24c06d7eec7e0a2869a643
Monotone-Revision: 99ea9ff62c0f957853593872fbc025892f52f11b

Monotone-Author: flachapelle@inverse.ca
Monotone-Date: 2010-09-28T16:07:58
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Francis Lachapelle 2010-09-28 16:07:58 +00:00
parent addca0f1b7
commit 572122703f
5 changed files with 70 additions and 27 deletions

View File

@ -1,3 +1,16 @@
2010-09-28 Francis Lachapelle <flachapelle@inverse.ca>
* NSString+NGCards.m (-asCalendarDate): added handling of date that
includes dashes (YYYY-MM-DD).
* iCalDateTime.m (-dateTimes): new method that handles EXDATE with
multiple values.
* iCalRepeatableEntityObject.m (-exceptionDates): add all values
from each EXDATE attribute.
* iCalRepeatableEntityObject.m (-exceptionDates): idem.
2010-08-30 Wolfgang Sourdeau <wsourdeau@inverse.ca> 2010-08-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* iCalPerson.m, iCalWeeklyRecurrenceCalculator.m: adapted classes * iCalPerson.m, iCalWeeklyRecurrenceCalculator.m: adapted classes

View File

@ -1,6 +1,6 @@
/* NSString+NGCards.m - this file is part of SOPE /* NSString+NGCards.m - this file is part of SOPE
* *
* Copyright (C) 2006-2009 Inverse inc. * Copyright (C) 2006-2010 Inverse inc.
* *
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca> * Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
* *
@ -246,8 +246,12 @@ static NSString *commaSeparator = nil;
year = [[self substringWithRange: cursor] intValue]; year = [[self substringWithRange: cursor] intValue];
cursor.location += cursor.length; cursor.location += cursor.length;
cursor.length = 2; cursor.length = 2;
if ([[self substringWithRange: cursor] hasPrefix: @"-"])
cursor.location += 1;
month = [[self substringWithRange: cursor] intValue]; month = [[self substringWithRange: cursor] intValue];
cursor.location += cursor.length; cursor.location += cursor.length;
if ([[self substringWithRange: cursor] hasPrefix: @"-"])
cursor.location += 1;
day = [[self substringWithRange: cursor] intValue]; day = [[self substringWithRange: cursor] intValue];
if (length > 14) if (length > 14)

View File

@ -35,6 +35,8 @@
- (void) setDate: (NSCalendarDate *) date; - (void) setDate: (NSCalendarDate *) date;
- (void) setDateTime: (NSCalendarDate *) dateTime; - (void) setDateTime: (NSCalendarDate *) dateTime;
- (NSArray *) dateTimes;
- (NSCalendarDate *) dateTime; - (NSCalendarDate *) dateTime;
- (BOOL) isAllDay; - (BOOL) isAllDay;

View File

@ -20,6 +20,7 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
#import <Foundation/NSArray.h>
#import <Foundation/NSString.h> #import <Foundation/NSString.h>
#import <Foundation/NSTimeZone.h> #import <Foundation/NSTimeZone.h>
@ -150,13 +151,24 @@
} }
- (NSCalendarDate *) dateTime - (NSCalendarDate *) dateTime
{
return [[self dateTimes] lastObject];
}
- (NSArray *) dateTimes
{ {
iCalTimeZone *iTZ; iCalTimeZone *iTZ;
NSString *date; NSString *date;
NSCalendarDate *initialDate, *dateTime; NSCalendarDate *initialDate, *dateTime;
NSMutableArray *dates;
NSTimeZone *tz; NSTimeZone *tz;
unsigned count, i;
date = [self value: 0]; count = [[self values] count];
dates = [NSMutableArray arrayWithCapacity: count];
for (i = 0; i < count; i++)
{
date = [self value: i];
iTZ = [self timeZone]; iTZ = [self timeZone];
if (iTZ) if (iTZ)
dateTime = [iTZ dateForDateTimeString: date]; dateTime = [iTZ dateForDateTimeString: date];
@ -179,8 +191,11 @@
else else
dateTime = nil; dateTime = nil;
} }
if (dateTime)
[dates addObject: dateTime];
}
return dateTime; return dates;
} }
- (BOOL) isAllDay - (BOOL) isAllDay

View File

@ -1,5 +1,6 @@
/* /*
Copyright (C) 2004-2005 SKYRIX Software AG Copyright (C) 2004-2005 SKYRIX Software AG
Copyright (C) 2010 Inverse inc.
This file is part of SOPE. This file is part of SOPE.
@ -131,19 +132,27 @@
- (NSArray *) exceptionDates - (NSArray *) exceptionDates
{ {
NSArray *exDates;
NSMutableArray *dates; NSMutableArray *dates;
NSEnumerator *dateList; NSEnumerator *dateList;
NSCalendarDate *exDate; NSCalendarDate *exDate;
NSString *dateString; NSString *dateString;
unsigned i;
dates = [NSMutableArray array]; dates = [NSMutableArray array];
dateList = [[self childrenWithTag: @"exdate"] objectEnumerator]; dateList = [[self childrenWithTag: @"exdate"] objectEnumerator];
while ((exDate = [[dateList nextObject] dateTime]))
while ((dateString = [dateList nextObject]))
{ {
exDates = [(iCalDateTime*) dateString dateTimes];
for (i = 0; i < [exDates count]; i++)
{
exDate = [exDates objectAtIndex: i];
dateString = [NSString stringWithFormat: @"%@Z", dateString = [NSString stringWithFormat: @"%@Z",
[exDate iCalFormattedDateTimeString]]; [exDate iCalFormattedDateTimeString]];
[dates addObject: dateString]; [dates addObject: dateString];
} }
}
return dates; return dates;
} }