104 lines
2.7 KiB
Objective-C
104 lines
2.7 KiB
Objective-C
/* iCalCalendar+SOGo.m - this file is part of SOGo
|
|
*
|
|
* Copyright (C) 2012-2014 Inverse inc
|
|
*
|
|
* This file is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2, or (at your option)
|
|
* any later version.
|
|
*
|
|
* This file is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; see the file COPYING. If not, write to
|
|
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
* Boston, MA 02111-1307, USA.
|
|
*/
|
|
|
|
#import <Foundation/NSArray.h>
|
|
#import <Foundation/NSCalendarDate.h>
|
|
#import <Foundation/NSString.h>
|
|
|
|
#import <NGCards/iCalRepeatableEntityObject.h>
|
|
|
|
#import "iCalCalendar+SOGo.h"
|
|
#import "iCalEntityObject+SOGo.h"
|
|
|
|
@implementation iCalCalendar (SOGoExtensions)
|
|
|
|
- (id) _occurrence: (NSString *) recID
|
|
inArray: (NSArray *) components
|
|
{
|
|
id occurrence;
|
|
iCalRepeatableEntityObject *component;
|
|
NSUInteger count, max, seconds, recSeconds;
|
|
|
|
occurrence = nil;
|
|
|
|
seconds = [recID intValue];
|
|
|
|
max = [components count];
|
|
|
|
/* master occurrence */
|
|
component = [components objectAtIndex: 0];
|
|
|
|
if ([component hasRecurrenceRules])
|
|
{
|
|
count = 1; // skip master event
|
|
while (!occurrence && count < max)
|
|
{
|
|
component = [components objectAtIndex: count];
|
|
recSeconds = [[component recurrenceId] timeIntervalSince1970];
|
|
if (recSeconds == seconds)
|
|
occurrence = component;
|
|
else
|
|
count++;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
/* The "master" event could be that occurrence. */
|
|
recSeconds = [[component recurrenceId] timeIntervalSince1970];
|
|
if (recSeconds == seconds)
|
|
occurrence = component;
|
|
}
|
|
|
|
return occurrence;
|
|
}
|
|
|
|
- (iCalEvent *) eventWithRecurrenceID: (NSString *) recID
|
|
{
|
|
return [self _occurrence: recID inArray: [self events]];
|
|
}
|
|
|
|
- (iCalToDo *) todoWithRecurrenceID: (NSString *) recID;
|
|
{
|
|
return [self _occurrence: recID inArray: [self todos]];
|
|
}
|
|
|
|
- (NSMutableDictionary *) quickRecordFromContent: (NSString *) theContent
|
|
container: (id) theContainer
|
|
{
|
|
CardGroup *element;
|
|
NSArray *elements;
|
|
|
|
unsigned int count;
|
|
|
|
elements = [self allObjects];
|
|
count = [elements count];
|
|
if (count)
|
|
element = [elements objectAtIndex: 0];
|
|
else
|
|
{
|
|
//NSLog(@"ERROR: given calendar contains no elements: %@", self);
|
|
element = nil;
|
|
}
|
|
|
|
return [(id)element quickRecordFromContent: theContent container: theContainer];
|
|
}
|
|
|
|
@end
|