sogo/UI/Scheduler/UIxTimeDateControl.m
Wolfgang Sourdeau 1169e642e7 Monotone-Parent: b81c5b1570ede0294a166ba113ea0402585963ef
Monotone-Revision: 3153e42cfafdd9f2a07623a78af07f4b4e837945

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-01-06T19:16:55
Monotone-Branch: ca.inverse.sogo
2010-01-06 19:16:55 +00:00

289 lines
5.8 KiB
Objective-C

/*
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.
*/
#import <Foundation/NSArray.h>
#import <Foundation/NSString.h>
#import <Foundation/NSValue.h>
#import <NGObjWeb/SoObjects.h>
#import <SOGo/NSCalendarDate+SOGo.h>
#import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserDefaults.h>
#import "UIxTimeDateControl.h"
@implementation UIxTimeDateControl
- (id)init {
self = [super init];
if (self) {
displayTimeControl = YES;
isDisabled = NO;
}
return self;
}
- (void)dealloc {
[controlID release];
[label release];
[date release];
[hour release];
[minute release];
[second release];
[day release];
[month release];
[year release];
[super dealloc];
}
/* accessors */
- (void)setControlID:(NSString *)_controlID {
ASSIGNCOPY(controlID, _controlID);
}
- (NSString *)controlID {
return controlID;
}
- (void)setLabel:(NSString *)_label {
ASSIGNCOPY(label, _label);
}
- (NSString *)label {
return label;
}
- (void) setDate: (NSCalendarDate *) _date
{
SOGoUserDefaults *ud;
int minuteValue;
if (!_date)
_date = [NSCalendarDate date];
ud = [[context activeUser] userDefaults];
[_date setTimeZone: [ud timeZone]];
[self _setDate: _date];
minuteValue = [_date minuteOfHour];
if (minuteValue % 15)
minuteValue += 15 - (minuteValue % 15);
[self setHour: [NSNumber numberWithInt: [_date hourOfDay]]];
[self setMinute: [NSNumber numberWithInt: minuteValue]];
[self setYear: [NSNumber numberWithInt: [_date yearOfCommonEra]]];
[self setMonth: [NSNumber numberWithInt: [_date monthOfYear]]];
[self setDay: [NSNumber numberWithInt: [_date dayOfMonth]]];
}
- (void)_setDate:(NSCalendarDate *)_date {
ASSIGN(date, _date);
}
- (NSCalendarDate *)date {
return date;
}
- (void)setHour:(id)_hour {
ASSIGN(hour, _hour);
}
- (id)hour {
return hour;
}
- (void)setMinute:(id)_minute {
ASSIGN(minute, _minute);
}
- (id)minute {
return minute;
}
- (void)setSecond:(id)_second {
ASSIGN(second, _second);
}
- (id)second {
return second;
}
- (void)setDay:(id)_day {
ASSIGN(day, _day);
}
- (id)day {
return day;
}
- (void)setMonth:(id)_month {
ASSIGN(month, _month);
}
- (id)month {
return month;
}
- (void)setYear:(id)_year {
ASSIGN(year, _year);
}
- (id)year {
return year;
}
- (void) setDayStartHour: (unsigned int) aStartHour
{
startHour = aStartHour;
}
- (void) setDayEndHour: (unsigned int) anEndHour
{
endHour = anEndHour;
}
- (void) setHourOption: (NSNumber *) option
{
currentHour = option;
}
- (BOOL) isCurrentHour
{
return [currentHour isEqual: hour];
}
- (BOOL) isCurrentMinute
{
return [currentMinute isEqual: minute];
}
- (int) hourValue
{
return [currentHour intValue];
}
- (NSString *) hourLabel
{
return [NSString stringWithFormat: @"%.2d", [currentHour intValue]];
}
- (NSArray *) selectableHours
{
NSMutableArray *hours;
unsigned int h;
hours = [NSMutableArray array];
for (h = startHour; h < (endHour + 1); h++)
[hours addObject: [NSNumber numberWithInt: h]];
return hours;
}
- (NSString *) hourSelectId
{
return [[self controlID] stringByAppendingString:@"_time_hour"];
}
- (void) setMinuteOption: (NSNumber *) option
{
currentMinute = option;
}
- (int) minuteValue
{
return [currentMinute intValue];
}
- (NSString *) minuteLabel
{
return [NSString stringWithFormat: @"%.2d", [currentMinute intValue]];
}
- (NSArray *) selectableMinutes
{
NSMutableArray *minutes;
unsigned int m;
minutes = [NSMutableArray array];
for (m = 0; m < 60; m += 15)
[minutes addObject: [NSNumber numberWithInt: m]];
return minutes;
}
- (NSString *) minuteSelectId
{
return [[self controlID] stringByAppendingString:@"_time_minute"];
}
- (NSString *) timeID
{
return [[self controlID] stringByAppendingString:@"_time"];
}
- (NSString *) dateID
{
return [[self controlID] stringByAppendingString:@"_date"];
}
- (void) setDisplayTimeControl: (BOOL) _displayTimeControl
{
displayTimeControl = _displayTimeControl;
}
- (BOOL) displayTimeControl
{
return displayTimeControl;
}
/* processing request */
- (void) takeValuesFromRequest: (WORequest *) _rq
inContext: (WOContext *) _ctx
{
NSCalendarDate *d;
unsigned _year, _month, _day, _hour, _minute, _second;
SOGoUserDefaults *ud;
/* call super, so that the form values are applied on the popups */
[super takeValuesFromRequest:_rq inContext:_ctx];
_year = [[self year] intValue];
if (_year > 0)
{
[self setHour: [_rq formValueForKey: [self hourSelectId]]];
[self setMinute: [_rq formValueForKey: [self minuteSelectId]]];
_month = [[self month] intValue];
_day = [[self day] intValue];
_hour = [[self hour] intValue];
_minute = [[self minute] intValue];
_second = [[self second] intValue];
ud = [[context activeUser] userDefaults];
d = [NSCalendarDate dateWithYear: _year month: _month day: _day
hour: _hour minute: _minute second: _second
timeZone: [ud timeZone]];
[self _setDate: d];
}
}
- (void) setDisabled: (BOOL) disabled
{
isDisabled = disabled;
}
- (BOOL) disabled
{
return isDisabled;
}
@end /* UIxTimeDateControl */