2 Copyright (C) 2004 SKYRIX Software AG
4 This file is part of OpenGroupware.org.
6 OGo is free software; you can redistribute it and/or modify it under
7 the terms of the GNU Lesser General Public License as published by the
8 Free Software Foundation; either version 2, or (at your option) any
11 OGo is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14 License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with OGo; see the file COPYING. If not, write to the
18 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
24 #include "UIxCalMonthOverview.h"
25 #include <NGExtensions/NGExtensions.h>
28 @interface UIxCalInlineMonthOverview : UIxCalMonthOverview
30 NSCalendarDate *selectedDate;
32 NSString *headerStyle;
34 NSString *todayWeekStyle;
35 NSString *dayHeaderStyle;
36 NSString *dayBodyStyle;
37 NSString *todayBodyStyle;
38 NSString *inactiveDayBodyStyle;
39 NSString *selectedDayExtraStyle;
40 NSString *daySelectionHref;
41 NSString *weekSelectionHref;
42 NSString *monthSelectionHref;
50 @interface NSCalendarDate (UIxCalMonthOverviewExtensions)
51 - (BOOL)isDateInSameMonth:(NSCalendarDate *)_other;
55 @implementation NSCalendarDate (UIxCalMonthOverviewExtensions)
56 - (BOOL)isDateInSameMonth:(NSCalendarDate *)_other {
59 if(([_other yearOfCommonEra] == [self yearOfCommonEra]) &&
60 ([_other monthOfYear] == [self monthOfYear])) {
68 @implementation UIxCalInlineMonthOverview
73 [self->selectedDate release];
74 [self->style release];
75 [self->headerStyle release];
76 [self->weekStyle release];
77 [self->todayWeekStyle release];
78 [self->dayHeaderStyle release];
79 [self->dayBodyStyle release];
80 [self->todayBodyStyle release];
81 [self->inactiveDayBodyStyle release];
82 [self->selectedDayExtraStyle release];
83 [self->daySelectionHref release];
84 [self->weekSelectionHref release];
85 [self->monthSelectionHref release];
90 /* binding accessors */
92 - (void)setSelectedDate:(NSCalendarDate *)_date {
93 [_date setTimeZone:[self viewTimeZone]];
94 ASSIGN(self->selectedDate, _date);
96 - (NSCalendarDate *)selectedDate {
97 return self->selectedDate;
99 - (void)setStyle:(NSString *)_style {
100 ASSIGN(self->style, _style);
102 - (NSString *)style {
105 - (void)setHeaderStyle:(NSString *)_style {
106 ASSIGN(self->headerStyle, _style);
108 - (NSString *)headerStyle {
109 return self->headerStyle;
111 - (void)setWeekStyle:(NSString *)_style {
112 ASSIGN(self->weekStyle, _style);
114 - (NSString *)weekStyle {
115 return self->weekStyle;
117 - (void)setTodayWeekStyle:(NSString *)_style {
118 ASSIGN(self->todayWeekStyle, _style);
120 - (NSString *)todayWeekStyle {
121 if(self->todayWeekStyle)
122 return self->todayWeekStyle;
123 return [self weekStyle];
125 - (void)setDayHeaderStyle:(NSString *)_style {
126 ASSIGN(self->dayHeaderStyle, _style);
128 - (NSString *)dayHeaderStyle {
129 return self->dayHeaderStyle;
131 - (void)setDayBodyStyle:(NSString *)_style {
132 ASSIGN(self->dayBodyStyle, _style);
134 - (NSString *)dayBodyStyle {
135 return self->dayBodyStyle;
137 - (void)setTodayBodyStyle:(NSString *)_style {
138 ASSIGN(self->todayBodyStyle, _style);
140 - (NSString *)todayBodyStyle {
141 return self->todayBodyStyle;
143 - (void)setInactiveDayBodyStyle:(NSString *)_style {
144 ASSIGN(self->inactiveDayBodyStyle, _style);
146 - (NSString *)inactiveDayBodyStyle {
147 return self->inactiveDayBodyStyle;
149 - (void)setSelectedDayExtraStyle:(NSString *)_style {
150 ASSIGN(self->selectedDayExtraStyle, _style);
152 - (NSString *)selectedDayExtraStyle {
153 return self->selectedDayExtraStyle;
155 - (void)setDaySelectionHref:(NSString *)_href {
156 ASSIGN(self->daySelectionHref, _href);
158 - (NSString *)daySelectionHref {
159 return self->daySelectionHref;
161 - (BOOL)hasDaySelectionHref {
162 return self->daySelectionHref != nil;
164 - (void)setWeekSelectionHref:(NSString *)_href {
165 ASSIGN(self->weekSelectionHref, _href);
167 - (NSString *)weekSelectionHref {
168 return self->weekSelectionHref;
170 - (BOOL)hasWeekSelectionHref {
171 return self->weekSelectionHref != nil;
173 - (void)setMonthSelectionHref:(NSString *)_href {
174 ASSIGN(self->monthSelectionHref, _href);
176 - (NSString *)monthSelectionHref {
177 return self->monthSelectionHref;
179 - (BOOL)hasMonthSelectionHref {
180 return self->monthSelectionHref != nil;
182 - (void)setShowWeekColumn:(BOOL)_yn {
183 self->showWeekColumn = _yn;
185 - (BOOL)showWeekColumn {
186 return self->showWeekColumn;
188 - (void)setShowYear:(BOOL)_yn {
189 self->showYear = _yn;
192 return self->showYear;
199 - (NSCalendarDate *)startDate {
200 return [[self selectedDate] firstDayOfMonth];
206 - (NSString *)headerString {
209 label = [self localizedNameForMonthOfYear:[[self startDate] monthOfYear]];
210 if([self showYear]) {
211 label = [NSString stringWithFormat:@"%@ %d",
213 [[self startDate] yearOfCommonEra]];
218 - (NSString *)localizedDayOfWeekName {
219 return [self localizedAbbreviatedNameForDayOfWeek:[self dayOfWeek]];
225 - (NSString *)currentWeekStyle {
226 if([self->currentWeekStart isDateInSameWeek:[NSCalendarDate date]] &&
227 [self->currentWeekStart isDateInSameMonth:[self selectedDate]])
228 return [self todayWeekStyle];
229 return [self weekStyle];
232 - (NSString *)currentDayStyle {
233 return [self dayBodyStyle];
236 - (NSString *)contentStyle {
237 if([self->currentDay isToday] &&
238 [self->currentDay isDateInSameMonth:[self selectedDate]])
239 return [self todayBodyStyle];
240 else if([self->currentDay monthOfYear] != [[self startDate] monthOfYear])
241 return [self inactiveDayBodyStyle];
242 return [self dayBodyStyle];
245 - (NSString *)extraStyle {
246 if([[self selectedDate] isDateOnSameDay:self->currentDay]) {
247 return [self selectedDayExtraStyle];
255 - (NSDictionary *)currentMonthQueryParameters {
256 return [self queryParametersBySettingSelectedDate:[self startDate]];
261 - (NSArray *)fetchCoreInfos {