Added calendar default reminder support.

pull/17/head
Ludovic Marcotte 2013-11-20 17:42:11 -05:00
parent f167475c91
commit df3e9033f3
10 changed files with 151 additions and 154 deletions

3
NEWS
View File

@ -2,7 +2,8 @@
------------------
New features
-
- it's now possible to set a default reminder for calendar components
using SOGoCalendarDefaultReminder
Enhancements
- we now automatically convert <img src=data...> into file attachments

View File

@ -69,12 +69,10 @@
SOGoCalendarShouldDisplayWeekend = YES;
SOGoCalendarEventsDefaultClassification = "PUBLIC";
SOGoCalendarTasksDefaultClassification = "PUBLIC";
SOGoCalendarDefaultReminder = "NONE";
SOGoFreeBusyDefaultInterval = ( 7, 7 );
SOGoReminderEnabled = YES;
SOGoRemindWithASound = YES;
SOGoSearchMinimumWordLength = 2;
SOGoMailLabelsColors = {

View File

@ -183,14 +183,8 @@ extern NSString *SOGoWeekStartFirstFullWeek;
- (void) setCalendarTasksDefaultClassification: (NSString *) newValue;
- (NSString *) calendarTasksDefaultClassification;
- (void) setReminderEnabled: (BOOL) newValue;
- (BOOL) reminderEnabled;
- (void) setReminderTime: (NSString *) newValue;
- (NSString *) reminderTime;
- (void) setRemindWithASound: (BOOL) newValue;
- (BOOL) remindWithASound;
- (void) setCalendarDefaultReminder: (NSString *) newValue;
- (NSString *) calendarDefaultReminder;
/* contacts */
- (void) setContactsCategories: (NSArray *) newValues;

View File

@ -59,29 +59,6 @@ NSString *SOGoWeekStartFirstFullWeek = @"FirstFullWeek";
up = [SOGoUserProfileKlass userProfileWithType: SOGoUserProfileTypeDefaults
forUID: userId];
[up fetchProfile];
// if ([_defaults values])
// {
// BOOL b;
// b = NO;
// if (![[_defaults stringForKey: @"MessageCheck"] length])
// {
// [_defaults setObject: defaultMessageCheck forKey: @"MessageCheck"];
// b = YES;
// }
// if (![[_defaults stringForKey: @"TimeZone"] length])
// {
// [_defaults setObject: [serverTimeZone name] forKey: @"TimeZone"];
// b = YES;
// }
// if (b)
// [_defaults synchronize];
// See explanation in -language
// [self invalidateLanguage];
// }
parent = [SOGoDomainDefaults defaultsForDomain: domainId];
if (!parent)
@ -706,34 +683,14 @@ NSString *SOGoWeekStartFirstFullWeek = @"FirstFullWeek";
return [self stringForKey: @"SOGoCalendarTasksDefaultClassification"];
}
- (void) setReminderEnabled: (BOOL) newValue
- (void) setCalendarDefaultReminder: (NSString *) newValue
{
[self setBool: newValue forKey: @"SOGoReminderEnabled"];
[self setObject: newValue forKey: @"SOGoCalendarDefaultReminder"];
}
- (BOOL) reminderEnabled
- (NSString *) calendarDefaultReminder
{
return [self boolForKey: @"SOGoReminderEnabled"];
}
- (void) setReminderTime: (NSString *) newValue
{
[self setObject: newValue forKey: @"SOGoReminderTime"];
}
- (NSString *) reminderTime
{
return [self stringForKey: @"SOGoReminderTime"];
}
- (void) setRemindWithASound: (BOOL) newValue
{
[self setBool: newValue forKey: @"SOGoRemindWithASound"];
}
- (BOOL) remindWithASound
{
return [self boolForKey: @"SOGoRemindWithASound"];
return [self stringForKey: @"SOGoCalendarDefaultReminder"];
}
//

View File

@ -111,18 +111,19 @@
"personalCalendar" = "Personal calendar";
"firstCalendar" = "First enabled calendar";
"reminderTime_0000" = "0 minutes";
"reminderTime_0005" = "5 minutes";
"reminderTime_0010" = "10 minutes";
"reminderTime_0015" = "15 minutes";
"reminderTime_0030" = "30 minutes";
"reminderTime_0100" = "1 hour";
"reminderTime_0200" = "2 hours";
"reminderTime_0400" = "4 hours";
"reminderTime_0800" = "8 hours";
"reminderTime_1200" = "1/2 day";
"reminderTime_2400" = "1 day";
"reminderTime_4800" = "2 days";
"reminder_NONE" = "No reminder";
"reminder_5_MINUTES_BEFORE" = "5 minutes before";
"reminder_10_MINUTES_BEFORE" = "10 minutes before";
"reminder_15_MINUTES_BEFORE" = "15 minutes before";
"reminder_30_MINUTES_BEFORE" = "30 minutes before";
"reminder_45_MINUTES_BEFORE" = "45 minutes before";
"reminder_1_HOUR_BEFORE" = "1 hour before";
"reminder_2_HOURS_BEFORE" = "2 hours before";
"reminder_5_HOURS_BEFORE" = "5 hours before";
"reminder_15_HOURS_BEFORE" = "15 hours before";
"reminder_1_DAY_BEFORE" = "1 day before";
"reminder_2_DAYS_BEFORE" = "2 days before";
"reminder_1_WEEK_BEFORE" = "1 week before";
/* Mailer */
"Show subscribed mailboxes only" = "Show subscribed mailboxes only";

View File

@ -58,11 +58,55 @@
workweek = from -> to
identities */
static NSArray *reminderItems = nil;
static NSArray *reminderValues = nil;
@implementation UIxPreferences
+ (void) initialize
{
if (!reminderItems && !reminderValues)
{
reminderItems = [NSArray arrayWithObjects:
@"5_MINUTES_BEFORE",
@"10_MINUTES_BEFORE",
@"15_MINUTES_BEFORE",
@"30_MINUTES_BEFORE",
@"45_MINUTES_BEFORE",
@"-",
@"1_HOUR_BEFORE",
@"2_HOURS_BEFORE",
@"5_HOURS_BEFORE",
@"15_HOURS_BEFORE",
@"-",
@"1_DAY_BEFORE",
@"2_DAYS_BEFORE",
@"1_WEEK_BEFORE",
nil];
reminderValues = [NSArray arrayWithObjects:
@"-PT5M",
@"-PT10M",
@"-PT15M",
@"-PT30M",
@"-PT45M",
@"",
@"-PT1H",
@"-PT2H",
@"-PT5H",
@"-PT15H",
@"",
@"-P1D",
@"-P2D",
@"-P1W",
nil];
[reminderItems retain];
[reminderValues retain];
}
}
- (id) init
{
//NSDictionary *locale;
SOGoDomainDefaults *dd;
if ((self = [super init]))
@ -485,6 +529,54 @@
return [userDefaults calendarTasksDefaultClassification];
}
- (NSArray *) reminderList
{
return reminderItems;
}
- (NSString *) itemReminderText
{
NSString *text;
if ([item isEqualToString: @"-"])
text = item;
else
text = [self labelForKey: [NSString stringWithFormat: @"reminder_%@", item]];
return text;
}
- (void) setReminder: (NSString *) theReminder
{
NSString *value;
int index;
index = NSNotFound;
value = @"NONE";
if (theReminder && [theReminder caseInsensitiveCompare: @"-"] != NSOrderedSame)
index = [reminderItems indexOfObject: theReminder];
if (index != NSNotFound)
value = [reminderValues objectAtIndex: index];
[userDefaults setCalendarDefaultReminder: value];
}
- (NSString *) reminder
{
NSString *value;
int index;
value = [userDefaults calendarDefaultReminder];
index = [reminderValues indexOfObject: value];
if (index != NSNotFound)
return [reminderItems objectAtIndex: index];
return @"NONE";
}
- (NSArray *) hoursList
{
static NSMutableArray *hours = nil;
@ -558,58 +650,6 @@
[userDefaults setFirstWeekOfYear: newFirstWeek];
}
- (BOOL) reminderEnabled
{
return [userDefaults reminderEnabled];
}
- (void) setReminderEnabled: (BOOL) newValue
{
[userDefaults setReminderEnabled: newValue];
}
- (BOOL) remindWithASound
{
return [userDefaults remindWithASound];
}
- (void) setRemindWithASound: (BOOL) newValue
{
[userDefaults setRemindWithASound: newValue];
}
- (NSArray *) reminderTimesList
{
static NSArray *reminderTimesList = nil;
if (!reminderTimesList)
{
reminderTimesList = [NSArray arrayWithObjects: @"0000", @"0005",
@"0010", @"0015", @"0030", @"0100",
@"0200", @"0400", @"0800", @"1200",
@"2400", @"4800", nil];
[reminderTimesList retain];
}
return reminderTimesList;
}
- (NSString *) itemReminderTimeText
{
return [self labelForKey:
[NSString stringWithFormat: @"reminderTime_%@", item]];
}
- (NSString *) userReminderTime
{
return [userDefaults reminderTime];
}
- (void) setReminderTime: (NSString *) newTime
{
[userDefaults setReminderTime: newTime];
}
/* Mailer */
- (void) setShowSubscribedFoldersOnly: (BOOL) showSubscribedFoldersOnly
{

View File

@ -1,8 +1,6 @@
/* UIxComponentEditor.h - this file is part of SOGo
*
* Copyright (C) 2006-2012 Inverse inc.
*
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
* Copyright (C) 2006-2013 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
@ -42,8 +40,6 @@
NSString *saveURL;
NSMutableArray *calendarList;
//NSMutableArray *organizerList;
//NSDictionary *organizerIdentity;
NSDictionary *organizerProfile;
/* individual values */

View File

@ -1152,25 +1152,39 @@ iRANGE(2);
return reminderItems;
}
- (void) setReminder: (NSString *) theReminder
{
ASSIGN(reminder, theReminder);
}
- (void) setReminder: (NSString *) theReminder
{
ASSIGN(reminder, theReminder);
}
- (NSString *) reminder
{
return reminder;
}
{
if ([[self clientObject] isNew])
{
NSString *value;
int index;
value = [userDefaults calendarDefaultReminder];
index = [reminderValues indexOfObject: value];
if (index != NSNotFound)
return [reminderItems objectAtIndex: index];
return @"NONE";
}
- (void) setReminderQuantity: (NSString *) theReminderQuantity
{
ASSIGN(reminderQuantity, theReminderQuantity);
}
return reminder;
}
- (void) setReminderQuantity: (NSString *) theReminderQuantity
{
ASSIGN(reminderQuantity, theReminderQuantity);
}
- (NSString *) reminderQuantity
{
return reminderQuantity;
}
{
return reminderQuantity;
}
- (NSString *) itemReminderText
{

View File

@ -204,6 +204,13 @@
const:id="tasksClassification"
const:name="tasksClassification"
string="itemClassificationText" selection="tasksDefaultClassification"/></dd>
<dt><var:string label:value="Default reminder :"/></dt>
<dd><var:popup list="reminderList" item="item"
const:disabledValue="-"
label:noSelectionString="reminder_NONE"
const:name="reminderList"
const:id="reminderList"
string="itemReminderText" var:selection="reminder"/></dd>
</dl>
<label><var:string label:value="Categories"/></label>

View File

@ -250,17 +250,6 @@
<input type="checkbox" name="delegateReceiveUpdates" /> <var:string label:value="Keep sending me updates" /> -->
</span>
</label>
<!--TODO: I'm not sure how to send this
<label><var:string label:value="Reminder:" />
<span class="content"><var:popup list="reminderList" item="item"
const:disabledValue="-"
label:noSelectionString="reminder_NONE"
const:name="reminderList"
const:id="reminderList"
string="itemReminderText"
var:selection="reminder"
const:onchange="?" /></span>
</label>-->
</var:if>
</div>
<var:if condition="hasAttendees">