mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-08-26 00:43:22 +00:00
Monotone-Parent: fe67bff0ab967ccf03cfe54c248865c9df889c21
Monotone-Revision: 7342d9cd31675160736e0f2db8a83047d9babea9 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2007-10-09T17:19:20 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -20,6 +20,8 @@
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#warning WE LEAK IVARS LIKE CRAZY HERE
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#import <NGObjWeb/SoObject.h>
|
||||
@@ -29,6 +31,7 @@
|
||||
|
||||
#import <NGCards/iCalEvent.h>
|
||||
#import <NGCards/iCalPerson.h>
|
||||
#import <NGCards/iCalRecurrenceRule.h>
|
||||
|
||||
#import <SoObjects/SOGo/SOGoUser.h>
|
||||
#import <SoObjects/SOGo/SOGoContentObject.h>
|
||||
@@ -48,12 +51,19 @@
|
||||
aptEndDate = nil;
|
||||
item = nil;
|
||||
event = nil;
|
||||
repeat = nil;
|
||||
isAllDay = NO;
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) dealloc
|
||||
{
|
||||
RELEASE(repeat);
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
/* template values */
|
||||
- (iCalEvent *) event
|
||||
{
|
||||
@@ -132,6 +142,8 @@
|
||||
else
|
||||
text = [self labelForKey: [NSString stringWithFormat: @"repeat_%@", item]];
|
||||
|
||||
NSLog(@"itemRepeatText: %@", text);
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
@@ -198,11 +210,12 @@
|
||||
|
||||
- (NSString *) repeat
|
||||
{
|
||||
return @"";
|
||||
return repeat;
|
||||
}
|
||||
|
||||
- (void) setRepeat: (NSString *) newRepeat
|
||||
{
|
||||
ASSIGN(repeat, newRepeat);
|
||||
}
|
||||
|
||||
- (NSString *) reminder
|
||||
@@ -276,8 +289,32 @@
|
||||
ASSIGN (aptStartDate, startDate);
|
||||
ASSIGN (aptEndDate, endDate);
|
||||
|
||||
// We initialize our repeat ivars
|
||||
if ([event hasRecurrenceRules])
|
||||
{
|
||||
iCalRecurrenceRule *rule;
|
||||
|
||||
repeat = @"CUSTOM";
|
||||
|
||||
/* here comes the code for initializing repeat, reminder and isAllDay... */
|
||||
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;
|
||||
}
|
||||
@@ -310,7 +347,11 @@
|
||||
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()"];
|
||||
@@ -352,6 +393,37 @@
|
||||
}
|
||||
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))
|
||||
{
|
||||
iCalRecurrenceRule *rule;
|
||||
|
||||
rule = [[iCalRecurrenceRule alloc] init];
|
||||
|
||||
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];
|
||||
[rule setInterval: @"1"];
|
||||
}
|
||||
else
|
||||
{
|
||||
[rule setFrequency: (iCalRecurrenceFrequency)[rule valueForFrequency: repeat]];
|
||||
[rule setInterval: @"1"];
|
||||
}
|
||||
[event setRecurrenceRules: [NSArray arrayWithObject: rule]];
|
||||
RELEASE(rule);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: add tentatively
|
||||
|
||||
Reference in New Issue
Block a user