sogo/UI/Scheduler/UIxDatePicker.m
Wolfgang Sourdeau 5717c04c5b Monotone-Parent: d03f591ee1abddc4729d4f012e2c8fbd7f9e7b20
Monotone-Revision: 9396acfed8c54ce550e7db6b46c96c7b9006d532

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2006-08-18T22:46:45
Monotone-Branch: ca.inverse.sogo
2006-08-18 22:46:45 +00:00

166 lines
3.8 KiB
Objective-C

/*
Copyright (C) 2004-2005 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.
*/
#include <NGObjWeb/WOComponent.h>
@class NSString;
@interface UIxDatePicker : WOComponent
{
NSString *dateID;
id day;
id month;
id year;
NSString *label;
}
- (NSString *)dateID;
- (NSString *)dateFormat;
- (NSString *)jsDateFormat;
- (BOOL)useISOFormats;
@end
#include "common.h"
@implementation UIxDatePicker
- (void)dealloc {
[self->dateID release];
[self->day release];
[self->month release];
[self->year release];
[self->label release];
[super dealloc];
}
/* Accessors */
- (void)setDateID:(NSString *)_dateID {
ASSIGNCOPY(self->dateID, _dateID);
}
- (NSString *)dateID {
return self->dateID;
}
- (void)setDay:(id)_day {
ASSIGN(self->day, _day);
}
- (id)day {
return self->day;
}
- (void)setMonth:(id)_month {
ASSIGN(self->month, _month);
}
- (id)month {
return self->month;
}
- (void)setYear:(id)_year {
ASSIGN(self->year, _year);
}
- (id)year {
return self->year;
}
- (void)setLabel:(NSString *)_label {
ASSIGNCOPY(self->label, _label);
}
- (NSString *)label {
return self->label;
}
/* formats */
- (BOOL)useISOFormats {
WOContext *ctx;
NSNumber *useISOFormats;
ctx = [self context];
useISOFormats = [ctx valueForKey:@"useISOFormats"];
if (!useISOFormats) {
NSArray *languages = [ctx resourceLookupLanguages];
if (languages && [languages count] > 0) {
if ([[languages objectAtIndex:0] isEqualToString:@"French"]) {
useISOFormats = [NSNumber numberWithBool:NO];
}
}
if (!useISOFormats)
useISOFormats = [NSNumber numberWithBool:YES];
[ctx takeValue:useISOFormats forKey:@"useISOFormats"];
}
return [useISOFormats boolValue];
}
- (NSString *)formattedDateString {
char buf[22];
if ([self useISOFormats]) {
sprintf(buf, "%04d-%02d-%02d",
[[self year] intValue],
[[self month] intValue],
[[self day] intValue]);
}
else {
sprintf(buf, "%02d/%02d/%04d",
[[self day] intValue],
[[self month] intValue],
[[self year] intValue]);
}
return [NSString stringWithCString:buf];
}
- (NSString *) dateFormat
{
return [self useISOFormats] ? @"%Y-%m-%d" : @"%d/%m/%Y";
}
- (NSString *) jsDateFormat
{
return [self useISOFormats] ? @"yyyy-mm-dd" : @"dd/mm/yyyy";
}
/* action */
- (void)takeValuesFromRequest:(WORequest *)_rq inContext:(WOContext *)_ctx {
NSString *dateString;
NSCalendarDate *d;
dateString = [_rq formValueForKey:[self dateID]];
if (dateString == nil) {
[self debugWithFormat:@"got no date string!"];
return;
}
d = [NSCalendarDate dateWithString:dateString
calendarFormat:[self dateFormat]];
if (d == nil) {
[self warnWithFormat:@"Could not parse dateString: '%@'",
dateString];
}
[self setDay: [NSNumber numberWithInt:[d dayOfMonth]]];
[self setMonth:[NSNumber numberWithInt:[d monthOfYear]]];
[self setYear: [NSNumber numberWithInt:[d yearOfCommonEra]]];
[super takeValuesFromRequest:_rq inContext:_ctx];
}
@end /* UIxDatePicker */