From 0b6e3dc22d9a4f990ea981c4161846c6f889fa02 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 25 Sep 2014 09:25:13 -0400 Subject: [PATCH] Fix for bug #589 --- NEWS | 1 + SoObjects/Appointments/iCalToDo+SOGo.m | 7 ++++--- UI/Scheduler/UIxTaskEditor.m | 17 +++++++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/NEWS b/NEWS index bac58c589..a3a2255e9 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,7 @@ Enchancements - alarms can now be snoozed for 1 day - better iCal compability regarding alarms (#1920) - force default classification over CalDAV if none is set (#2326) + - now compliant when handling completed tasks (#589) Bug fixes - fixed sending mails to multiple recipients over AS diff --git a/SoObjects/Appointments/iCalToDo+SOGo.m b/SoObjects/Appointments/iCalToDo+SOGo.m index 80b1194bb..cb42c6a03 100644 --- a/SoObjects/Appointments/iCalToDo+SOGo.m +++ b/SoObjects/Appointments/iCalToDo+SOGo.m @@ -42,7 +42,7 @@ container: (id) theContainer { NSMutableDictionary *row; - NSCalendarDate *startDate, *dueDate; + NSCalendarDate *startDate, *dueDate, *completed; NSArray *attendees, *categories; NSString *uid, *title, *location, *status; NSNumber *sequence; @@ -63,6 +63,7 @@ location = [self location]; sequence = [self sequence]; accessClass = [self symbolicAccessClass]; + completed = [self completed]; status = [[self status] uppercaseString]; attendees = [self attendees]; @@ -121,10 +122,10 @@ if ([partmails length] > 0) [row setObject:partmails forKey: @"c_partmails"]; - if ([status isNotNull]) + if (completed || [status isNotNull]) { code = 0; /* NEEDS-ACTION */ - if ([status isEqualToString: @"COMPLETED"]) + if (completed || [status isEqualToString: @"COMPLETED"]) code = 1; else if ([status isEqualToString: @"IN-PROCESS"]) code = 2; diff --git a/UI/Scheduler/UIxTaskEditor.m b/UI/Scheduler/UIxTaskEditor.m index 7eb2984d9..c6cc7a18a 100644 --- a/UI/Scheduler/UIxTaskEditor.m +++ b/UI/Scheduler/UIxTaskEditor.m @@ -41,6 +41,8 @@ #import #import #import + +#import #import #import @@ -213,13 +215,12 @@ - (BOOL) statusDateDisabled { - return ![status isEqualToString: @"COMPLETED"]; + return !([status isEqualToString: @"COMPLETED"] || statusDate); } - (BOOL) statusPercentDisabled { - return ([status length] == 0 - || [status isEqualToString: @"CANCELLED"]); + return ([status length] == 0 || [status isEqualToString: @"CANCELLED"]); } - (void) setStatusPercent: (NSString *) newStatusPercent @@ -311,11 +312,15 @@ hasDueDate = YES; else dueDate = [self newStartDate]; + + ASSIGN (statusDate, [todo completed]); + [statusDate setTimeZone: timeZone]; + ASSIGN (status, [todo status]); - if ([status isEqualToString: @"COMPLETED"]) + + if ([status length] == 0 && statusDate) { - ASSIGN (statusDate, [todo completed]); - [statusDate setTimeZone: timeZone]; + ASSIGN(status, @"COMPLETED"); } else {