See ChangeLog
Monotone-Parent: 75bbc0ad243d66dd412883811d759ca8dabf6776 Monotone-Revision: 11c0941cac8926d96e43efabe282a5d3d549d0c9 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2011-03-23T19:18:27 Monotone-Branch: ca.inverse.sogomaint-2.0.2
parent
d7d8c7a7f5
commit
3d53407a73
|
@ -1,3 +1,9 @@
|
||||||
|
2011-03-23 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
|
* UI/PreferencesUI/UIxPreferences.m (-timeZonesList): we make use
|
||||||
|
of the new method [iCalTimeZone knownTimeZoneNames] instead of
|
||||||
|
[NSTimeZone knownTimeZoneNames] to avoid listing tons of useless timezones.
|
||||||
|
|
||||||
2011-03-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
2011-03-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
* OpenChange/MAPIStoreCalendarMessage.m (-init): new method to
|
* OpenChange/MAPIStoreCalendarMessage.m (-init): new method to
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
|
2011-03-23 francis <flachapelle@inverse.ca>
|
||||||
|
|
||||||
2011-03-23 Francis Lachapelle <flachapelle@inverse.ca>
|
2011-03-23 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
* iCalRepeatableEntityObject.m (-removeAllExceptionDates): don't
|
* iCalRepeatableEntityObject.m (-removeAllExceptionDates): don't
|
||||||
use the method "exceptionDates" since it returns an array of
|
use the method "exceptionDates" since it returns an array of
|
||||||
strings and not CardElement instances.
|
strings and not CardElement instances.
|
||||||
|
|
||||||
|
* iCalTimeZone.m (+knownTimeZoneNames): new class method to
|
||||||
|
retrieve the timezone names. Used in replacement of the same
|
||||||
|
method in NSTimeZone.
|
||||||
|
|
||||||
2011-03-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
2011-03-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
* iCalEvent.m (-firstRecurrenceStartDate): new method that makes
|
* iCalEvent.m (-firstRecurrenceStartDate): new method that makes
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
@interface iCalTimeZone : CardGroup
|
@interface iCalTimeZone : CardGroup
|
||||||
|
|
||||||
+ (iCalTimeZone *) timeZoneForName: (NSString *) theName;
|
+ (iCalTimeZone *) timeZoneForName: (NSString *) theName;
|
||||||
|
+ (NSArray *) knownTimeZoneNames;
|
||||||
- (NSString *) tzId;
|
- (NSString *) tzId;
|
||||||
- (iCalTimeZonePeriod *) periodForDate: (NSCalendarDate *) date;
|
- (iCalTimeZonePeriod *) periodForDate: (NSCalendarDate *) date;
|
||||||
- (NSCalendarDate *) computedDateForDate: (NSCalendarDate *) theDate;
|
- (NSCalendarDate *) computedDateForDate: (NSCalendarDate *) theDate;
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#import "iCalTimeZone.h"
|
#import "iCalTimeZone.h"
|
||||||
|
|
||||||
static NSMutableDictionary *cache;
|
static NSMutableDictionary *cache;
|
||||||
|
static NSArray *knownTimeZones;
|
||||||
|
|
||||||
|
|
||||||
@implementation iCalTimeZone
|
@implementation iCalTimeZone
|
||||||
|
@ -106,6 +107,62 @@ static NSMutableDictionary *cache;
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch the names of the available timezones for which we have a
|
||||||
|
* vTimeZone definition (.ics).
|
||||||
|
* @return an array of timezones names.
|
||||||
|
* @see [NSTimeZone knownTimeZoneNames]
|
||||||
|
*/
|
||||||
|
+ (NSArray *) knownTimeZoneNames
|
||||||
|
{
|
||||||
|
NSFileManager *fm;
|
||||||
|
NSEnumerator *e;
|
||||||
|
NSDirectoryEnumerator *zones;
|
||||||
|
NSArray *paths;
|
||||||
|
NSMutableArray *timeZoneNames;
|
||||||
|
NSString *path, *zone, *zonePath;
|
||||||
|
NSRange ext;
|
||||||
|
BOOL b;
|
||||||
|
|
||||||
|
timeZoneNames = knownTimeZones;
|
||||||
|
|
||||||
|
if (!timeZoneNames)
|
||||||
|
{
|
||||||
|
timeZoneNames = [NSMutableArray new];
|
||||||
|
|
||||||
|
paths = NSSearchPathForDirectoriesInDomains(NSAllLibrariesDirectory,
|
||||||
|
NSAllDomainsMask,
|
||||||
|
YES);
|
||||||
|
fm = [NSFileManager defaultManager];
|
||||||
|
|
||||||
|
if ([paths count] > 0)
|
||||||
|
{
|
||||||
|
e = [paths objectEnumerator];
|
||||||
|
while ((path = [e nextObject]))
|
||||||
|
{
|
||||||
|
path = [NSString stringWithFormat: @"%@/Libraries/Resources/NGCards/TimeZones", path];
|
||||||
|
if ([fm fileExistsAtPath: path isDirectory: &b] && b)
|
||||||
|
{
|
||||||
|
zones = [fm enumeratorAtPath: path];
|
||||||
|
while ((zone = [zones nextObject])) {
|
||||||
|
zonePath = [NSString stringWithFormat: @"%@/%@", path, zone];
|
||||||
|
if ([fm fileExistsAtPath: zonePath isDirectory: &b] && !b)
|
||||||
|
{
|
||||||
|
ext = [zone rangeOfString: @".ics"];
|
||||||
|
zone = [zone substringToIndex: ext.location];
|
||||||
|
[timeZoneNames addObject: zone];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
knownTimeZones = [timeZoneNames sortedArrayUsingSelector: @selector (localizedCaseInsensitiveCompare:)];
|
||||||
|
[knownTimeZones retain];
|
||||||
|
}
|
||||||
|
|
||||||
|
return timeZoneNames;
|
||||||
|
}
|
||||||
|
|
||||||
- (Class) classForTag: (NSString *) classTag
|
- (Class) classForTag: (NSString *) classTag
|
||||||
{
|
{
|
||||||
Class tagClass;
|
Class tagClass;
|
||||||
|
|
|
@ -32,6 +32,8 @@
|
||||||
|
|
||||||
#import <NGExtensions/NSObject+Logs.h>
|
#import <NGExtensions/NSObject+Logs.h>
|
||||||
|
|
||||||
|
#import <NGCards/iCalTimeZone.h>
|
||||||
|
|
||||||
#import <SOGo/NSArray+Utilities.h>
|
#import <SOGo/NSArray+Utilities.h>
|
||||||
#import <SOGo/NSDictionary+Utilities.h>
|
#import <SOGo/NSDictionary+Utilities.h>
|
||||||
#import <SOGo/NSString+Utilities.h>
|
#import <SOGo/NSString+Utilities.h>
|
||||||
|
@ -149,8 +151,7 @@
|
||||||
|
|
||||||
- (NSArray *) timeZonesList
|
- (NSArray *) timeZonesList
|
||||||
{
|
{
|
||||||
return [[NSTimeZone knownTimeZoneNames]
|
return [iCalTimeZone knownTimeZoneNames];
|
||||||
sortedArrayUsingSelector: @selector (localizedCaseInsensitiveCompare:)];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *) userTimeZone
|
- (NSString *) userTimeZone
|
||||||
|
|
Loading…
Reference in New Issue