From 8173b4dcf1de7e1d110bcaa253934d1d221d1da7 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 13 Jun 2007 19:32:57 +0000 Subject: [PATCH] Monotone-Parent: c89c225a9b1b1ad4ce106e7b74c622f18718ff74 Monotone-Revision: 20c04b0bdf1f43a5ad91e5871e2205434e862cd6 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-06-13T19:32:57 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 3 + SoObjects/SOGo/GNUmakefile | 2 - SoObjects/SOGo/NSObject+AptComparison.h | 34 ---------- SoObjects/SOGo/NSObject+AptComparison.m | 75 --------------------- UI/Scheduler/NSArray+Scheduler.h | 35 ++++++++++ UI/Scheduler/NSArray+Scheduler.m | 87 +++++++++++++++++++++++++ 6 files changed, 125 insertions(+), 111 deletions(-) delete mode 100644 SoObjects/SOGo/NSObject+AptComparison.h delete mode 100644 SoObjects/SOGo/NSObject+AptComparison.m create mode 100644 UI/Scheduler/NSArray+Scheduler.h create mode 100644 UI/Scheduler/NSArray+Scheduler.m diff --git a/ChangeLog b/ChangeLog index 1969edb2a..08fb93e04 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2007-06-13 Wolfgang Sourdeau + * SoObjects/SOGo/NSObject+AptComparison.[hm]: removed category + module, replaced with NSArray+Scheduler in UI/SchedulerUI/. + * SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): diff --git a/SoObjects/SOGo/GNUmakefile b/SoObjects/SOGo/GNUmakefile index ca032f9e8..03916b358 100644 --- a/SoObjects/SOGo/GNUmakefile +++ b/SoObjects/SOGo/GNUmakefile @@ -32,7 +32,6 @@ libSOGo_HEADER_FILES = \ LDAPSource.h \ SOGoPermissions.h \ SOGoLRUCache.h \ - NSObject+AptComparison.h \ WOContext+Agenor.h \ SOGoDAVRendererTypes.h \ NSArray+Utilities.h \ @@ -61,7 +60,6 @@ libSOGo_OBJC_FILES = \ SOGoLRUCache.m \ LDAPUserManager.m \ LDAPSource.m \ - NSObject+AptComparison.m \ WOContext+Agenor.m \ SOGoDAVRendererTypes.m \ AgenorUserDefaults.m \ diff --git a/SoObjects/SOGo/NSObject+AptComparison.h b/SoObjects/SOGo/NSObject+AptComparison.h deleted file mode 100644 index 47108096c..000000000 --- a/SoObjects/SOGo/NSObject+AptComparison.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - Copyright (C) 2004 SKYRIX Software AG - - This file is part of OpenGroupware.org. - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id: NSObject+AptComparison.h 620 2005-03-02 19:57:10Z znek $ - -#ifndef __SOGo_NSObject_AptComparison_H_ -#define __SOGo_NSObject_AptComparison_H_ - -#import - -@interface NSObject (SOGoAptComparison) - -- (NSComparisonResult)compareAptsAscending:(id)_other; - -@end - -#endif /* __SOGo_NSObject_AptComparison_H_ */ diff --git a/SoObjects/SOGo/NSObject+AptComparison.m b/SoObjects/SOGo/NSObject+AptComparison.m deleted file mode 100644 index e9ec135e9..000000000 --- a/SoObjects/SOGo/NSObject+AptComparison.m +++ /dev/null @@ -1,75 +0,0 @@ -/* - Copyright (C) 2004 SKYRIX Software AG - - This file is part of OpenGroupware.org. - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id: NSObject+AptComparison.m 620 2005-03-02 19:57:10Z znek $ - -#include "NSObject+AptComparison.h" -#include -#include "common.h" - -@implementation NSObject (SOGoAptComparison) - -- (NSComparisonResult) compareAptsAscending: (id) _other -{ - NSCalendarDate *sd, *ed; - NGCalendarDateRange *r1, *r2; - NSComparisonResult result; - NSTimeInterval t1, t2; - - sd = [self valueForKey: @"startDate"]; - ed = [self valueForKey: @"endDate"]; - if (sd && ed) - r1 = [NGCalendarDateRange calendarDateRangeWithStartDate: sd - endDate: ed]; - else - r1 = nil; - - sd = [_other valueForKey: @"startDate"]; - ed = [_other valueForKey: @"endDate"]; - if (sd && ed) - r2 = [NGCalendarDateRange calendarDateRangeWithStartDate: sd - endDate: ed]; - else - r2 = nil; - - if (r1) - if (r2) - { - result = [r1 compare: r2]; - if (result != NSOrderedSame) - return result; - - t1 = [r1 duration]; - t2 = [r2 duration]; - if (t1 == t2) - return NSOrderedSame; - if (t1 > t2) - return NSOrderedDescending; - } - else - return NSOrderedDescending; - else - if (!r2) - return NSOrderedSame; - - return NSOrderedAscending; -} - -@end diff --git a/UI/Scheduler/NSArray+Scheduler.h b/UI/Scheduler/NSArray+Scheduler.h new file mode 100644 index 000000000..ac8e8b987 --- /dev/null +++ b/UI/Scheduler/NSArray+Scheduler.h @@ -0,0 +1,35 @@ +/* NSArray+Scheduler.m - this file is part of SOGo + * + * Copyright (C) 2007 Inverse groupe conseil + * + * Author: Wolfgang Sourdeau + * + * 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 + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef NSARRAY_SCHEDULER_H +#define NSARRAY_SCHEDULER_H + +#import + +@interface NSArray (SOGoEventComparison) + +- (NSComparisonResult) compareEventsAscending: (NSArray *) otherEvent; +- (NSComparisonResult) compareTasksAscending: (NSArray *) otherTask; + +@end + +#endif /* NSARRAY_SCHEDULER_H */ diff --git a/UI/Scheduler/NSArray+Scheduler.m b/UI/Scheduler/NSArray+Scheduler.m new file mode 100644 index 000000000..d6d45df11 --- /dev/null +++ b/UI/Scheduler/NSArray+Scheduler.m @@ -0,0 +1,87 @@ +/* NSArray+Scheduler.m - this file is part of SOGo + * + * Copyright (C) 2007 Inverse groupe conseil + * + * Author: Wolfgang Sourdeau + * + * 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 + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#import +#import +#import +#import + +#import "NSArray+Scheduler.h" + +@implementation NSArray (SOGoEventComparison) + +- (NSComparisonResult) _compareCompletionWithStatus1: (NSNumber *) status1 + andStatus2: (NSNumber *) status2 +{ + NSComparisonResult result; + unsigned int ts1, ts2; + + ts1 = [status1 intValue]; + ts2 = [status2 intValue]; + if (ts1 == 1 && ts2 != 1) + result = NSOrderedDescending; + else if (ts1 != 1 && ts2 == 1) + result = NSOrderedAscending; + else + result = NSOrderedSame; + + return result; +} + +- (NSComparisonResult) compareEventsAscending: (NSArray *) otherEvent +{ + return [[self objectAtIndex: 4] compare: [otherEvent objectAtIndex: 4]]; +} + +- (NSComparisonResult) compareTasksAscending: (NSArray *) otherTask +{ + NSComparisonResult result; + unsigned int selfTime, otherTime; + Class nullClass; + + result = [self _compareCompletionWithStatus1: [self objectAtIndex: 2] + andStatus2: [otherTask objectAtIndex: 2]]; + if (result == NSOrderedSame) + { + nullClass = [NSNull class]; + selfTime = [[self objectAtIndex: 4] intValue]; + otherTime = [[otherTask objectAtIndex: 4] intValue]; + if (selfTime && !otherTime) + result = NSOrderedAscending; + else if (!selfTime && otherTime) + result = NSOrderedDescending; + else + { + if (selfTime > otherTime) + result = NSOrderedDescending; + else if (selfTime < otherTime) + result = NSOrderedAscending; + else + result = [[self objectAtIndex: 1] + compare: [otherTask objectAtIndex: 1]]; + } + } + + return result; +} + +@end