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
23 #import <Foundation/NSArray.h>
24 #import <Foundation/NSString.h>
25 #import <Foundation/NSValue.h>
27 #import <NGObjWeb/SoObjects.h>
29 #import <SOGo/NSCalendarDate+SOGo.h>
31 #import "UIxTimeDateControl.h"
33 @implementation UIxTimeDateControl
38 displayTimeControl = YES;
59 - (void)setControlID:(NSString *)_controlID {
60 ASSIGNCOPY(controlID, _controlID);
62 - (NSString *)controlID {
65 - (void)setLabel:(NSString *)_label {
66 ASSIGNCOPY(label, _label);
72 - (void)setDate:(NSCalendarDate *)_date {
73 NSLog (@"^^^^^^ %@: setDate: %@", self, _date);
76 _date = [NSCalendarDate date];
77 [_date setTimeZone: [[self clientObject] userTimeZone]];
78 [self _setDate: _date];
80 minuteValue = [_date minuteOfHour];
82 minuteValue += 15 - (minuteValue % 15);
83 [self setHour: [NSNumber numberWithInt: [_date hourOfDay]]];
84 [self setMinute: [NSNumber numberWithInt: minuteValue]];
85 [self setYear: [NSNumber numberWithInt: [_date yearOfCommonEra]]];
86 [self setMonth: [NSNumber numberWithInt: [_date monthOfYear]]];
87 [self setDay: [NSNumber numberWithInt: [_date dayOfMonth]]];
90 - (void)_setDate:(NSCalendarDate *)_date {
94 - (NSCalendarDate *)date {
98 - (void)setHour:(id)_hour {
99 NSLog (@"---------------- setHour:");
106 - (void)setMinute:(id)_minute {
107 ASSIGN(minute, _minute);
112 - (void)setSecond:(id)_second {
113 ASSIGN(second, _second);
119 - (void)setDay:(id)_day {
125 - (void)setMonth:(id)_month {
126 ASSIGN(month, _month);
131 - (void)setYear:(id)_year {
138 - (void) setDayStartHour: (unsigned int) aStartHour
140 NSLog (@"******************** setDayStartHour...");
141 startHour = aStartHour;
144 - (void) setDayEndHour: (unsigned int) anEndHour
149 - (void) setHourOption: (NSNumber *) option
151 currentHour = option;
154 - (BOOL) isCurrentHour
156 return [currentHour isEqual: hour];
159 - (BOOL) isCurrentMinute
161 return [currentMinute isEqual: minute];
166 return [currentHour intValue];
169 - (NSString *) hourLabel
171 return [NSString stringWithFormat: @"%.2d", [currentHour intValue]];
174 - (NSArray *) selectableHours
176 NSMutableArray *hours;
179 hours = [NSMutableArray new];
182 for (h = startHour; h < (endHour + 1); h++)
183 [hours addObject: [NSNumber numberWithInt: h]];
188 - (NSString *) hourSelectId
190 return [[self controlID] stringByAppendingString:@"_time_hour"];
193 - (void) setMinuteOption: (NSNumber *) option
195 currentMinute = option;
200 return [currentMinute intValue];
203 - (NSString *) minuteLabel
205 return [NSString stringWithFormat: @"%.2d", [currentMinute intValue]];
208 - (NSArray *) selectableMinutes
210 NSMutableArray *minutes;
213 minutes = [NSMutableArray new];
214 [minutes autorelease];
216 for (m = 0; m < 60; m += 15)
217 [minutes addObject: [NSNumber numberWithInt: m]];
222 - (NSString *) minuteSelectId
224 return [[self controlID] stringByAppendingString:@"_time_minute"];
227 - (NSString *) timeID
229 return [[self controlID] stringByAppendingString:@"_time"];
232 - (NSString *) dateID
234 return [[self controlID] stringByAppendingString:@"_date"];
237 - (void) setDisplayTimeControl: (BOOL) _displayTimeControl
239 displayTimeControl = _displayTimeControl;
242 - (BOOL) displayTimeControl
244 return displayTimeControl;
247 /* processing request */
249 - (void) takeValuesFromRequest: (WORequest *) _rq
250 inContext: (WOContext *) _ctx
253 unsigned _year, _month, _day, _hour, _minute, _second;
255 NSLog (@"******************** %@: take values...", self);
256 /* call super, so that the form values are applied on the popups */
257 [super takeValuesFromRequest:_rq inContext:_ctx];
259 _year = [[self year] intValue];
262 [self setHour: [_rq formValueForKey: [self hourSelectId]]];
263 [self setMinute: [_rq formValueForKey: [self minuteSelectId]]];
265 _month = [[self month] intValue];
266 _day = [[self day] intValue];
267 _hour = [[self hour] intValue];
268 _minute = [[self minute] intValue];
269 _second = [[self second] intValue];
271 d = [NSCalendarDate dateWithYear: _year month:_month day:_day
272 hour:_hour minute:_minute second:_second
273 timeZone: [[self clientObject] userTimeZone]];
278 - (void) setDisabled: (BOOL) disabled
280 isDisabled = disabled;
288 @end /* UIxTimeDateControl */