2 Copyright (C) 2000-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 #include "iCalEntityObject.h"
23 #include "iCalPerson.h"
26 @interface iCalEntityObject (PrivateAPI)
27 - (NSArray *)_filteredAttendeesThinkingOfPersons:(BOOL)_persons;
30 @implementation iCalEntityObject
34 [self->summary release];
35 [self->created release];
36 [self->lastModified release];
37 [self->startDate release];
38 [self->accessClass release];
39 [self->priority release];
40 [self->alarms release];
41 [self->organizer release];
42 [self->attendees release];
43 [self->comment release];
44 [self->sequence release];
45 [self->location release];
46 [self->status release];
47 [self->categories release];
53 - (void)setUid:(NSString *)_value {
54 if (self->uid != _value) {
55 [self->uid autorelease];
56 self->uid = [_value retain];
63 - (void)setSummary:(NSString *)_value {
64 if (self->summary != _value) {
65 [self->summary autorelease];
66 self->summary = [_value retain];
69 - (NSString *)summary {
73 - (void)setLocation:(NSString *)_value {
74 if (self->location != _value) {
75 [self->location autorelease];
76 self->location = [_value retain];
79 - (NSString *)location {
80 return self->location;
83 - (void)setComment:(NSString *)_value {
84 if (self->comment != _value) {
85 [self->comment autorelease];
86 self->comment = [_value retain];
89 - (NSString *)comment {
93 - (void)setAccessClass:(NSString *)_value {
94 if (self->accessClass != _value) {
95 [self->accessClass autorelease];
96 self->accessClass = [_value retain];
99 - (NSString *)accessClass {
100 return self->accessClass;
103 - (void)setPriority:(NSString *)_value {
104 if (self->priority != _value) {
105 [self->priority autorelease];
106 self->priority = [_value retain];
109 - (NSString *)priority {
110 return self->priority;
113 - (void)setCategories:(NSString *)_value {
114 ASSIGN(self->categories, _value);
116 - (NSString *)categories {
117 return self->categories;
120 - (void)setSequence:(NSNumber *)_value {
121 if (![_value isNotNull]) _value = nil;
122 if (self->sequence != _value) {
123 if (_value != nil && ![_value isKindOfClass:[NSNumber class]])
124 _value = [NSNumber numberWithInt:[_value intValue]];
125 [self->sequence autorelease];
126 self->sequence = [_value retain];
129 - (NSNumber *)sequence {
130 return self->sequence;
133 - (void)setStatus:(NSString *)_value {
134 ASSIGNCOPY(self->status, _value);
136 - (NSString *)status {
137 // eg: STATUS:CONFIRMED
141 - (void)setCreated:(NSCalendarDate *)_value {
142 if (self->created != _value) {
143 [self->created autorelease];
144 self->created = [_value retain];
147 - (NSCalendarDate *)created {
148 return self->created;
150 - (void)setLastModified:(NSCalendarDate *)_value {
151 if (self->lastModified != _value) {
152 [self->lastModified autorelease];
153 self->lastModified = [_value retain];
156 - (NSCalendarDate *)lastModified {
157 return self->lastModified;
160 - (void)setTimeStampAsDate:(NSCalendarDate *)_date {
161 /* TODO: too be completed */
163 - (NSCalendarDate *)timeStampAsDate {
164 return [NSDate dateWithTimeIntervalSince1970:self->timestamp];
167 - (void)setStartDate:(NSCalendarDate *)_date {
168 if (self->startDate != _date) {
169 [self->startDate autorelease];
170 self->startDate = [_date retain];
173 - (NSCalendarDate *)startDate {
174 return self->startDate;
177 - (void)setOrganizer:(iCalPerson *)_organizer {
178 if (self->organizer != _organizer) {
179 [self->organizer autorelease];
180 self->organizer = [_organizer retain];
183 - (iCalPerson *)organizer {
184 return self->organizer;
187 - (void)removeAllAttendees {
188 [self->attendees removeAllObjects];
190 - (void)addToAttendees:(iCalPerson *)_person {
191 if (_person == nil) return;
192 if (self->attendees == nil)
193 self->attendees = [[NSMutableArray alloc] initWithCapacity:4];
194 [self->attendees addObject:_person];
196 - (NSArray *)attendees {
197 return self->attendees;
200 - (void)removeAllAlarms {
201 [self->alarms removeAllObjects];
203 - (void)addToAlarms:(id)_alarm {
204 if (_alarm == nil) return;
205 if (self->alarms == nil)
206 self->alarms = [[NSMutableArray alloc] initWithCapacity:1];
207 [self->alarms addObject:_alarm];
210 return [self->alarms count] > 0 ? YES : NO;
212 - (NSArray *)alarms {
218 - (NSArray *)participants {
219 return [self _filteredAttendeesThinkingOfPersons:YES];
221 - (NSArray *)resources {
222 return [self _filteredAttendeesThinkingOfPersons:NO];
225 - (NSArray *)_filteredAttendeesThinkingOfPersons:(BOOL)_persons {
227 NSMutableArray *filtered;
230 list = [self attendees];
231 count = [list count];
232 filtered = [NSMutableArray arrayWithCapacity:count];
233 for (i = 0; i < count; i++) {
237 p = [list objectAtIndex:i];
240 if (role == nil || ![role hasPrefix:@"NON-PART"])
241 [filtered addObject:p];
244 if ([role hasPrefix:@"NON-PART"])
245 [filtered addObject:p];
251 - (BOOL)isOrganizer:(id)_email {
252 return [[[self organizer] rfc822Email] isEqualToString:_email];
255 - (BOOL)isParticipant:(id)_email {
258 partEmails = [[self participants] valueForKey:@"rfc822Email"];
259 return [partEmails containsObject:_email];
262 - (iCalPerson *)findParticipantWithEmail:(id)_email {
266 ps = [self participants];
269 for (i = 0; i < count; i++) {
272 p = [ps objectAtIndex:i];
273 if ([[p rfc822Email] isEqualToString:_email])
276 return nil; /* not found */
279 @end /* iCalEntityObject */