mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-21 19:35:38 +00:00
Monotone-Parent: 672551e38e8a075f699074177a66d9f7f114f873
Monotone-Revision: 1f7e270223f35974083eee7059e0a42cf720ad5e Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-06-19T18:03:18 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -1,56 +0,0 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#ifndef __SOGoDateFormatter_H_
|
||||
#define __SOGoDateFormatter_H_
|
||||
|
||||
#import <Foundation/NSFormatter.h>
|
||||
|
||||
@class NSString, NSCalendarDate, NSDictionary;
|
||||
|
||||
@interface SOGoDateFormatter : NSFormatter
|
||||
{
|
||||
NSDictionary *locale;
|
||||
SEL formatAction;
|
||||
SEL auxFormatAction;
|
||||
}
|
||||
|
||||
- (id)initWithLocale:(NSDictionary *)_locale;
|
||||
|
||||
- (void)setISODateFormat;
|
||||
- (void)setFrenchDateFormat;
|
||||
|
||||
- (void)setFullWeekdayNameAndDetails;
|
||||
|
||||
- (NSString *)stringForObjectValue:(id)_obj;
|
||||
- (NSString *) stringForSecondsSinceThe70s: (unsigned int) seconds;
|
||||
|
||||
- (NSString *)shortDayOfWeek:(int)_day;
|
||||
- (NSString *)fullDayOfWeek:(int)_day;
|
||||
- (NSString *)shortMonthOfYear:(int)_month;
|
||||
- (NSString *)fullMonthOfYear:(int)_month;
|
||||
|
||||
- (NSString *)isoDateFormatForDate:(NSCalendarDate *)_date;
|
||||
- (NSString *)fullWeekdayNameAndDetailsForDate:(NSCalendarDate *)_date;
|
||||
|
||||
@end
|
||||
|
||||
#endif /* __SOGoDateFormatter_H_ */
|
||||
@@ -1,134 +0,0 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#include "SOGoDateFormatter.h"
|
||||
#include "common.h"
|
||||
|
||||
@implementation SOGoDateFormatter
|
||||
|
||||
- (id)initWithLocale:(NSDictionary *)_locale {
|
||||
if ((self = [super init])) {
|
||||
self->locale = [_locale retain];
|
||||
|
||||
if ([[self->locale objectForKey:@"NSLocaleCode"] isEqualToString:@"fr"])
|
||||
[self setFrenchDateFormat];
|
||||
else
|
||||
[self setISODateFormat];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[self->locale release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
/* accessors */
|
||||
|
||||
- (void)setISODateFormat {
|
||||
self->formatAction = @selector(isoDateFormatForDate:);
|
||||
}
|
||||
|
||||
- (void)setFrenchDateFormat {
|
||||
self->formatAction = @selector(frenchDateFormatForDate:);
|
||||
}
|
||||
|
||||
- (void)setFullWeekdayNameAndDetails {
|
||||
self->auxFormatAction = self->formatAction;
|
||||
self->formatAction = @selector(fullWeekdayNameAndDetailsForDate:);
|
||||
}
|
||||
|
||||
/* operation */
|
||||
|
||||
- (NSString *) stringForObjectValue: (id) _obj
|
||||
{
|
||||
return [self performSelector:self->formatAction
|
||||
withObject:_obj];
|
||||
}
|
||||
|
||||
- (NSString *) stringForSecondsSinceThe70s: (unsigned int) seconds
|
||||
{
|
||||
return [self stringForObjectValue:
|
||||
[NSCalendarDate dateWithTimeIntervalSince1970: seconds]];
|
||||
}
|
||||
|
||||
/* Helpers */
|
||||
|
||||
- (NSString *)shortDayOfWeek:(int)_day {
|
||||
return [[self->locale objectForKey:@"NSShortWeekDayNameArray"]
|
||||
objectAtIndex:_day];
|
||||
}
|
||||
|
||||
- (NSString *)fullDayOfWeek:(int)_day {
|
||||
return [[self->locale objectForKey:@"NSWeekDayNameArray"]
|
||||
objectAtIndex:_day];
|
||||
}
|
||||
|
||||
- (NSString *)shortMonthOfYear:(int)_month {
|
||||
return [[self->locale objectForKey:@"NSShortMonthNameArray"]
|
||||
objectAtIndex:_month - 1];
|
||||
}
|
||||
|
||||
- (NSString *)fullMonthOfYear:(int)_month {
|
||||
return [[self->locale objectForKey:@"NSMonthNameArray"]
|
||||
objectAtIndex:_month - 1];
|
||||
}
|
||||
|
||||
|
||||
/* Private API */
|
||||
|
||||
- (NSString *)isoDateFormatForDate:(NSCalendarDate *)_date {
|
||||
char buf[16];
|
||||
|
||||
if (_date == nil) return nil;
|
||||
snprintf(buf, sizeof(buf),
|
||||
"%04d-%02d-%02d",
|
||||
[_date yearOfCommonEra], [_date monthOfYear], [_date dayOfMonth]);
|
||||
return [NSString stringWithCString:buf];
|
||||
}
|
||||
|
||||
- (NSString *)frenchDateFormatForDate:(NSCalendarDate *)_date {
|
||||
char buf[16];
|
||||
|
||||
if (_date == nil) return nil;
|
||||
snprintf(buf, sizeof(buf),
|
||||
"%02d/%02d/%04d",
|
||||
[_date dayOfMonth], [_date monthOfYear], [_date yearOfCommonEra]);
|
||||
return [NSString stringWithCString:buf];
|
||||
}
|
||||
|
||||
- (NSString *)fullWeekdayNameAndDetailsForDate:(NSCalendarDate *)_date {
|
||||
NSMutableString *desc;
|
||||
|
||||
if (_date == nil) return nil;
|
||||
|
||||
desc = [NSMutableString stringWithCapacity:24];
|
||||
[desc appendString:[self fullDayOfWeek:[_date dayOfWeek]]];
|
||||
[desc appendString:@", "];
|
||||
[desc appendString:[self performSelector:self->auxFormatAction
|
||||
withObject:_date]];
|
||||
[desc appendString:@" "];
|
||||
[desc appendFormat:@"%02d:%02d ", [_date hourOfDay], [_date minuteOfHour]];
|
||||
[desc appendString:[[_date timeZone] abbreviation]];
|
||||
return desc;
|
||||
}
|
||||
|
||||
@end /* SOGoDateFormatter */
|
||||
Reference in New Issue
Block a user