2 Copyright (C) 2004-2005 SKYRIX Software AG
4 This file is part of SOPE.
6 SOPE is free software; you can redistribute it and/or modify it under
7 the terms of the GNU Lesser General Public License as published by the
8 Free Software Foundation; either version 2, or (at your option) any
11 SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14 License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with SOPE; see the file COPYING. If not, write to the
18 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
22 #ifndef __NGiCal_iCalRecurrenceRule_H_
23 #define __NGiCal_iCalRecurrenceRule_H_
25 #import <Foundation/NSObject.h>
30 Encapsulates a (probably complex) recurrence rule by offering
33 NOTE: as of now, only a very limited subset of RFC2445 is implemented.
34 Please see the unit tests for what is covered.
37 // TODO: we could use string constants?
39 iCalRecurrenceFrequenceSecondly = 1,
40 iCalRecurrenceFrequenceMinutely = 2,
41 iCalRecurrenceFrequenceHourly = 3,
42 iCalRecurrenceFrequenceDaily = 4,
43 iCalRecurrenceFrequenceWeekly = 5,
44 iCalRecurrenceFrequenceMonthly = 6,
45 iCalRecurrenceFrequenceYearly = 7,
46 } iCalRecurrenceFrequency;
49 iCalWeekDayMonday = 1,
50 iCalWeekDayTuesday = 2,
51 iCalWeekDayWednesday = 4,
52 iCalWeekDayThursday = 8,
53 iCalWeekDayFriday = 16,
54 iCalWeekDaySaturday = 32,
55 iCalWeekDaySunday = 64,
58 @class NSString, NSCalendarDate, NGCalendarDateRange, NSArray;
60 @interface iCalRecurrenceRule : NSObject
62 iCalRecurrenceFrequency frequency;
65 NSCalendarDate *untilDate;
67 unsigned weekStart: 7;
69 unsigned useOccurence:1;
78 + (id)recurrenceRuleWithICalRepresentation:(NSString *)_iCalRep;
79 - (id)initWithString:(NSString *)_str;
83 - (void)setFrequency:(iCalRecurrenceFrequency)_frequency;
84 - (iCalRecurrenceFrequency)frequency;
86 - (void)setRepeatInterval:(int)_repeatInterval;
87 - (int)repeatInterval;
89 - (void)setWeekStart:(iCalWeekDay)_weekStart;
90 - (iCalWeekDay)weekStart;
92 - (void)setByDayMask:(unsigned)_mask;
93 - (unsigned)byDayMask;
94 - (int)byDayOccurence1;
96 - (NSArray *)byMonthDay;
98 /* count and untilDate are mutually exclusive */
100 - (void)setRepeatCount:(unsigned)_repeatCount;
101 - (unsigned)repeatCount;
103 - (void)setUntilDate:(NSCalendarDate *)_untilDate;
104 - (NSCalendarDate *)untilDate;
108 /* parse complete iCal RRULE */
110 - (void)setRrule:(NSString *)_rrule; // TODO: weird name? (better: RRule?)
112 - (NSString *)iCalRepresentation;
116 #endif /* __NGiCal_iCalRecurrenceRule_H_ */