#import <NGCards/iCalEvent.h>
#import <NGCards/iCalPerson.h>
+#import <NGCards/iCalRecurrenceRule.h>
#import <SoObjects/SOGo/SOGoUser.h>
#import <SoObjects/SOGo/SOGoContentObject.h>
aptEndDate = nil;
item = nil;
event = nil;
+ repeat = nil;
isAllDay = NO;
}
return self;
}
+- (void) dealloc
+{
+ [item release];
+ [repeat release];
+ [aptStartDate release];
+ [aptEndDate release];
+ [super dealloc];
+}
+
/* template values */
- (iCalEvent *) event
{
- (void) setItem: (NSString *) newItem
{
- item = newItem;
+ ASSIGN (item, newItem);
}
- (NSString *) item
// return reminder;
// }
+- (NSString *) reminder
+{
+ return @"";
+}
+
+- (void) setReminder: (NSString *) newReminder
+{
+}
+
- (NSString *) itemReminderText
{
NSString *text;
- (NSString *) repeat
{
- return @"";
+ return repeat;
}
- (void) setRepeat: (NSString *) newRepeat
{
-}
-
-- (NSString *) reminder
-{
- return @"";
-}
-
-- (void) setReminder: (NSString *) newReminder
-{
+ ASSIGN (repeat, newRepeat);
}
/* actions */
NSCalendarDate *startDate, *endDate;
NSString *duration;
unsigned int minutes;
+ iCalRecurrenceRule *rule;
event = (iCalEvent *) [[self clientObject] component: NO];
if (event)
ASSIGN (aptStartDate, startDate);
ASSIGN (aptEndDate, endDate);
-
- /* here comes the code for initializing repeat, reminder and isAllDay... */
+ // We initialize our repeat ivars
+ if ([event hasRecurrenceRules])
+ {
+ repeat = @"CUSTOM";
+
+ rule = [[event recurrenceRules] lastObject];
+
+ if ([rule frequency] == iCalRecurrenceFrequenceWeekly)
+ {
+ if ([rule repeatInterval] == 1)
+ repeat = @"WEEKLY";
+ else if ([rule repeatInterval] == 2)
+ repeat = @"BI-WEEKLY";
+ }
+ else if ([rule frequency] == iCalRecurrenceFrequenceDaily)
+ {
+ if ([rule byDayMask] == (iCalWeekDayMonday
+ | iCalWeekDayTuesday
+ | iCalWeekDayWednesday
+ | iCalWeekDayThursday
+ | iCalWeekDayFriday))
+ repeat = @"EVERY WEEKDAY";
+ else if (![rule byDayMask])
+ repeat = @"DAILY";
+ }
+ else if ([rule frequency] == iCalRecurrenceFrequenceMonthly
+ && [rule repeatInterval] == 1)
+ repeat = @"MONTHLY";
+ else if ([rule frequency] == iCalRecurrenceFrequenceYearly
+ && [rule repeatInterval] == 1)
+ repeat = @"YEARLY";
+ }
+ else
+ DESTROY(repeat);
return self;
}
NSString *iCalString;
clientObject = [self clientObject];
+ NSLog(@"saveAction, clientObject = %@", clientObject);
+
iCalString = [[clientObject calendar: NO] versitString];
+
+ NSLog(@"saveAction, iCalString = %@", iCalString);
[clientObject saveContentString: iCalString];
return [self jsCloseWithRefreshMethod: @"refreshEventsAndDisplay()"];
{
SOGoAppointmentObject *clientObject;
int nbrDays;
+ iCalRecurrenceRule *rule;
clientObject = [self clientObject];
event = (iCalEvent *) [clientObject component: YES];
}
if ([clientObject isNew])
[event setTransparency: @"OPAQUE"];
+
+ // We remove any repeat rules
+ if (!repeat && [event hasRecurrenceRules])
+ [event removeAllRecurrenceRules];
+ else if (!([repeat caseInsensitiveCompare: @"-"] == NSOrderedSame
+ || [repeat caseInsensitiveCompare: @"CUSTOM"] == NSOrderedSame))
+ {
+ rule = [iCalRecurrenceRule new];
+
+ [rule setInterval: @"1"];
+ if ([repeat caseInsensitiveCompare: @"BI-WEEKLY"] == NSOrderedSame)
+ {
+ [rule setFrequency: iCalRecurrenceFrequenceWeekly];
+ [rule setInterval: @"2"];
+ }
+ else if ([repeat caseInsensitiveCompare: @"EVERY WEEKDAY"] == NSOrderedSame)
+ {
+ [rule setByDayMask: (iCalWeekDayMonday
+ |iCalWeekDayTuesday
+ |iCalWeekDayWednesday
+ |iCalWeekDayThursday
+ |iCalWeekDayFriday)];
+ [rule setFrequency: iCalRecurrenceFrequenceDaily];
+ }
+ else
+ [rule setFrequency:
+ (iCalRecurrenceFrequency) [rule valueForFrequency: repeat]];
+ [event setRecurrenceRules: [NSArray arrayWithObject: rule]];
+ [rule release];
+ }
}
// TODO: add tentatively