diff --git a/ChangeLog b/ChangeLog index e01ae2b88..046bd7cc9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,17 @@ 2006-08-24 Wolfgang Sourdeau + * UI/Scheduler/UIxCalWeekView.m ([UIxCalWeekView -weekBeforePrevWeekQueryParameters]) + ([UIxCalWeekView -prevWeekQueryParameters]) + ([UIxCalWeekView -nextWeekQueryParameters]) + ([UIxCalWeekView -weekAfterNextWeekQueryParameters]): new methods + that return the dates relatively to the current day. + ([UIxCalWeekView -lastWeekName]) + ([UIxCalWeekView -currentWeekName]) + ([UIxCalWeekView -nextWeekName]) + ([UIxCalWeekView -weekAfterNextWeekName]) + ([UIxCalWeekView -_weekNumberWithOffsetFromToday:offset]): new + methods that returns the label for the corresponding weeks. + * UI/Scheduler/UIxCalDayTable.[hm]: new class module/component used by UIxCalDayView and UIxCalWeekView to display the events occuring in one or more days. diff --git a/UI/Scheduler/UIxCalWeekView.h b/UI/Scheduler/UIxCalWeekView.h index 18605778f..83ab8d5a9 100644 --- a/UI/Scheduler/UIxCalWeekView.h +++ b/UI/Scheduler/UIxCalWeekView.h @@ -1,4 +1,24 @@ -// $Id: UIxCalWeekView.h 191 2004-08-12 16:28:32Z helge $ +/* UIxCalWeekView.h - this file is part of SOGo + * + * Copyright (C) 2006 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 __SOGo_UIxCalWeekView_H__ #define __SOGo_UIxCalWeekView_H__ @@ -8,13 +28,17 @@ @class NSDictionary; @interface UIxCalWeekView : UIxCalView -{ -} -/* Query Parameters */ +- (NSDictionary *) weekBeforePrevWeekQueryParameters; +- (NSDictionary *) prevWeekQueryParameters; +- (NSDictionary *) nextWeekQueryParameters; +- (NSDictionary *) weekAfterNextWeekQueryParameters; -- (NSDictionary *)prevWeekQueryParameters; -- (NSDictionary *)nextWeekQueryParameters; +- (NSString *) weekBeforeLastWeekName; +- (NSString *) lastWeekName; +- (NSString *) currentWeekName; +- (NSString *) nextWeekName; +- (NSString *) weekAfterNextWeekName; @end diff --git a/UI/Scheduler/UIxCalWeekView.m b/UI/Scheduler/UIxCalWeekView.m index 317baf14a..674d1105a 100644 --- a/UI/Scheduler/UIxCalWeekView.m +++ b/UI/Scheduler/UIxCalWeekView.m @@ -1,46 +1,120 @@ -// $Id: UIxCalWeekView.m 303 2004-09-10 15:23:10Z znek $ +/* UIxCalWeekView.m - this file is part of SOGo + * + * Copyright (C) 2006 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 + +#import +#import #include "UIxCalWeekView.h" -#include "common.h" @implementation UIxCalWeekView -- (NSCalendarDate *)startDate { - return [[[super startDate] mondayOfWeek] beginOfDay]; +- (NSCalendarDate *) startDate +{ + return [[[super startDate] mondayOfWeek] beginOfDay]; } -- (NSCalendarDate *)endDate { - unsigned offset; +- (NSCalendarDate *) endDate +{ + unsigned offset; - if([self shouldDisplayWeekend]) - offset = 7; - else - offset = 5; + if([self shouldDisplayWeekend]) + offset = 7; + else + offset = 5; + return [[[self startDate] dateByAddingYears:0 months:0 days:offset hours:0 minutes:0 seconds:0] endOfDay]; } -- (NSArray *)appointments { +- (NSArray *) appointments +{ return [self fetchCoreInfos]; } /* URLs */ -- (NSDictionary *)prevWeekQueryParameters { - NSCalendarDate *date; - - date = [[self startDate] dateByAddingYears:0 months:0 days:-7 - hours:0 minutes:0 seconds:0]; - return [self queryParametersBySettingSelectedDate:date]; +- (NSDictionary *) weekBeforePrevWeekQueryParameters +{ + return [self _dateQueryParametersWithOffset: -14]; } -- (NSDictionary *)nextWeekQueryParameters { +- (NSDictionary *) prevWeekQueryParameters +{ + return [self _dateQueryParametersWithOffset: -7]; +} + +- (NSDictionary *) nextWeekQueryParameters +{ + return [self _dateQueryParametersWithOffset: 7]; +} + +- (NSDictionary *) weekAfterNextWeekQueryParameters +{ + return [self _dateQueryParametersWithOffset: 14]; +} + +- (NSString *) _weekNumberWithOffsetFromToday: (int) offset +{ NSCalendarDate *date; - - date = [[self startDate] dateByAddingYears:0 months:0 days:7 - hours:0 minutes:0 seconds:0]; - return [self queryParametersBySettingSelectedDate:date]; + NSString *format; + + date = [[self startDate] dateByAddingYears: 0 months: 0 days: (offset * 7) + hours:0 minutes: 0 seconds: 0]; + format = [self labelForKey: @"Week %d"]; + + return [NSString stringWithFormat: format, [date weekOfYear]]; +} + +- (NSString *) weekBeforeLastWeekName +{ + return [self _weekNumberWithOffsetFromToday: -2]; +} + +- (NSString *) lastWeekName +{ + return [self _weekNumberWithOffsetFromToday: -1]; +} + +- (NSString *) currentWeekName +{ + return [self _weekNumberWithOffsetFromToday: 0]; +} + +- (NSString *) nextWeekName +{ + return [self _weekNumberWithOffsetFromToday: 1]; +} + +- (NSString *) weekAfterNextWeekName +{ + return [self _weekNumberWithOffsetFromToday: 2]; } @end /* UIxCalWeekView */