#import #import "CFPreferencesWrapper.h" @implementation CFPreferencesWrapper_ICeCoffEE - initWithApplication:(NSString*)appIdentifier { self = [super init]; if( !self || !appIdentifier ) { [self release]; return nil; } identifier = [appIdentifier retain]; return self; } - (void)dealloc { [identifier release]; [super dealloc]; } + preferencesWithApplication:(NSString*)appIdentifier { return [[[self alloc] initWithApplication:appIdentifier] autorelease]; } - (NSArray*)arrayForKey:(NSString*)key { id object; object = (id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier); if( object && (CFGetTypeID( object) == CFArrayGetTypeID()) ) return [object autorelease]; else { [object release]; return nil; } } - (BOOL)boolForKey:(NSString*)key { Boolean dummy; return CFPreferencesGetAppBooleanValue( (CFStringRef) key, (CFStringRef) identifier, &dummy); } - (NSData*)dataForKey:(NSString*)key { id object; object = (id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier); if( object && (CFGetTypeID( object) == CFDataGetTypeID()) ) return [object autorelease]; else { [object release]; return nil; } } - (NSDictionary*)dictionaryForKey:(NSString*)key { id object; object = (id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier); if( object && (CFGetTypeID( object) == CFDictionaryGetTypeID()) ) return [object autorelease]; else { [object release]; return nil; } } - (float)floatForKey:(NSString*)key { id object; float retVal; object = (id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier); if( object && (CFGetTypeID( object) == CFNumberGetTypeID()) ) { retVal = [object floatValue]; [object release]; return retVal; } else { [object release]; return 0; } } - (int)integerForKey:(NSString*)key { Boolean dummy; return CFPreferencesGetAppIntegerValue( (CFStringRef) key, (CFStringRef) identifier, &dummy); } - (id)objectForKey:(NSString*)key { return [(id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier) autorelease]; } - (NSArray*)stringArrayForKey:(NSString*)key { id object; object = (id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier); if( object && (CFGetTypeID( object) == CFArrayGetTypeID()) ) { NSEnumerator *enumerator = [object objectEnumerator]; id element; while( (element = [enumerator nextObject]) ) { if( CFGetTypeID( element) != CFStringGetTypeID() ) { [object release]; return nil; } } return [object autorelease]; } else { [object release]; return nil; } } - (NSString*)stringForKey:(NSString*)key { id object; object = (id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier); if( object && (CFGetTypeID( object) == CFStringGetTypeID()) ) return [object autorelease]; else { [object release]; return nil; } } - (void)removeObjectForKey:(NSString*)key { CFPreferencesSetAppValue( (CFStringRef) key, (CFPropertyListRef) NULL, (CFStringRef) identifier); } - (void)setBool:(BOOL)value forKey:(NSString*)key { CFPreferencesSetAppValue( (CFStringRef) key, (CFPropertyListRef) (value ? kCFBooleanTrue : kCFBooleanFalse), (CFStringRef) identifier); } - (void)setFloat:(float)value forKey:(NSString*)key { CFPreferencesSetAppValue( (CFStringRef) key, (CFPropertyListRef) [NSNumber numberWithFloat:value], (CFStringRef) identifier); } - (void)setInteger:(int)value forKey:(NSString*)key { CFPreferencesSetAppValue( (CFStringRef) key, (CFPropertyListRef) [NSNumber numberWithInt:value], (CFStringRef) identifier); } - (void)setObject:(id)value forKey:(NSString*)key { CFPreferencesSetAppValue( (CFStringRef) key, (CFPropertyListRef) value, (CFStringRef) identifier); } - (BOOL)keyExist:(NSString*)key { BOOL exist = NO; CFPropertyListRef value = CFPreferencesCopyAppValue((CFStringRef)key, (CFStringRef)identifier); if (value) { exist = YES; CFRelease(value); } return exist; } - (BOOL)synchronize { return CFPreferencesAppSynchronize( (CFStringRef) identifier); } @end