58 BOOL _searchListNeedsReload;
79 [StandardUserDefaults synchronize];
94 [
self _setupArgumentsDomain];
109 - (void)_setupArgumentsDomain
111 var args = [CPApp namedArguments],
112 keys = [args allKeys],
113 count = [keys count],
116 for (; i < count; i++)
129 if (_searchListNeedsReload)
130 [
self _reloadSearchList];
132 return [_searchList objectForKey:aKey];
138 - (void)setObject:(
id)anObject forKey:(
CPString)aKey
150 var domain = [_domains objectForKey:aDomain];
155 return [domain objectForKey:aKey];
164 if (!aKey || !aDomain)
167 var domain = [_domains objectForKey:aDomain];
171 [_domains setObject:domain forKey:aDomain];
174 [domain setObject:anObject forKey:aKey];
175 _searchListNeedsReload = YES;
193 if (!aKey || !aDomain)
196 var domain = [_domains objectForKey:aDomain];
200 [domain removeObjectForKey:aKey];
201 _searchListNeedsReload = YES;
215 var keys = [aDictionary
allKeys],
216 count = [keys count],
219 for (; i < count; i++)
232 - (void)registerDefaultsFromContentsOfFile:(
CPURL)aURL
236 plist = [data plistObject];
244 - (void)_reloadSearchList
246 _searchListNeedsReload = NO;
248 var dicts = [CPRegistrationDomain, CPGlobalDomain, CPApplicationDomain, CPArgumentDomain],
249 count = [dicts count],
254 for (; i < count; i++)
256 var domain = [_domains objectForKey:dicts[i]];
260 var keys = [domain allKeys],
261 keysCount = [keys count],
264 for (; j < keysCount; j++)
267 [_searchList setObject:[domain objectForKey:key] forKey:key];
279 return [CPArgumentDomain, CPLocaleDomain, CPRegistrationDomain];
287 return [CPGlobalDomain, CPApplicationDomain];
295 return [_stores objectForKey:aDomain];
308 var currentStore = [_stores objectForKey:aDomain];
309 if (currentStore && [currentStore
class] === aStoreClass)
312 var store = [[aStoreClass alloc] init];
313 [store setDomain:aDomain];
314 [_stores setObject:store forKey:aDomain];
325 - (void)reloadDataFromStoreForDomain:(
CPString)aDomain
331 [_domains removeObjectForKey:aDomain];
333 [_domains setObject:domain forKey:aDomain];
335 _searchListNeedsReload = YES;
354 var globalDomain = [_domains objectForKey:CPGlobalDomain];
361 var appDomain = [_domains objectForKey:CPApplicationDomain];
369 #pragma mark Getting Default Values 377 if ([value isKindOfClass:CPArray])
389 if ([value respondsToSelector:
@selector(boolValue)])
390 return [value boolValue];
402 if ([value isKindOfClass:
CPData])
429 if ([value respondsToSelector:
@selector(floatValue)])
430 value = [value floatValue];
432 return parseFloat(value);
444 if ([value respondsToSelector:
@selector(intValue)])
445 value = [value intValue];
447 return parseInt(value);
468 else if ([value respondsToSelector:
@selector(stringValue)])
469 return [value stringValue];
480 if (![value isKindOfClass:CPArray])
483 for (var i = 0, count = [value count]; i < count; i++)
484 if (![value[i] isKindOfClass:
CPString])
496 if ([value isKindOfClass:
CPURL])
505 #pragma mark Setting Default Values 513 if ([aValue respondsToSelector:
@selector(boolValue)])
521 - (void)setFloat:(
float)aValue forKey:(
CPString)aKey
523 if ([aValue respondsToSelector:
@selector(floatValue)])
524 aValue = [aValue floatValue];
532 - (void)setDouble:(
double)aValue forKey:(
CPString)aKey
541 - (void)setInteger:(
int)aValue forKey:(
CPString)aKey
543 if ([aValue respondsToSelector:
@selector(intValue)])
544 aValue = [aValue intValue];
555 if ([aValue isKindOfClass:
CPString])
570 _CPRaiseInvalidAbstractInvocation(
self, _cmd);
576 _CPRaiseInvalidAbstractInvocation(
self, _cmd);
588 if (_domain === aDomain)
598 var result = [_cookie value];
599 if (!result || [result length] < 1)
618 + (BOOL)supportsLocalStorage
620 if (!window.localStorage)
641 if (![[
self class] supportsLocalStorage])
643 [
CPException raise:@"UnsupportedFeature"
reason:@"Browser does not support localStorage for CPUserDefaultsLocalStore"];
647 return self = [
super init];
652 var result = localStorage.getItem(_domain);
653 if (!result || [result length] < 1)
663 localStorage.setItem(_domain, encodeURIComponent([aData rawString]));
667 CPLog.warn(
"Unable to write to local storage: " + e);
Used to implement exception handling (creating & raising).
void setValue:expires:domain:(CPString value, [expires] CPDate date, [domain] CPString domain)
BOOL supportsLocalStorage()
void setObject:forKey:(id anObject, [forKey] CPString aKey)
void setData:(CPData aData)
A representation of a single point in time.
The main run loop for the application.
void performSelector:target:argument:order:modes:(SEL aSelector, [target] id aTarget, [argument] id anArgument, [order] int anOrder, [modes] CPArray modes)
id objectForKey:(CPString aKey)
void setObject:forKey:inDomain:(id anObject, [forKey] CPString aKey, [inDomain] CPString aDomain)
A Cappuccino wrapper for any data type.
void postNotificationName:object:(CPString aNotificationName, [object] id anObject)
void raise:reason:(CPString aName, [reason] CPString aReason)
CPArray persistentDomainNames()
Provides loading of a URL request.
Unarchives objects created using CPKeyedArchiver.
CPArray volatileDomainNames()
CPData sendSynchronousRequest:returningResponse:(CPURLRequest aRequest, [returningResponse]/*{ */CPURLResponse/*} */aURLResponse)
void domainDidChange:(CPString aDomain)
CPNotificationCenter defaultCenter()
A mutable key-value pair collection.
id standardUserDefaults()
CPRunLoop currentRunLoop()
id requestWithURL:(CPURL aURL)
Implements keyed archiving of object graphs (e.g. for storing data).
An immutable string (collection of characters).
void reloadDataFromStoreForDomain:(CPString aDomain)
id objectForKey:(id aKey)
CPUserDefaultsStore setPersistentStoreClass:forDomain:reloadData:(Class aStoreClass, [forDomain] CPString aDomain, [reloadData] BOOL aFlag)
void registerDefaults:(CPDictionary aDictionary)
CPUserDefaultsDidChangeNotification
CPData dataWithRawString:(CPString aString)
var CPUserDefaultsLocalStoreTestKey
CPUserDefaultsStore persistentStoreForDomain:(CPString aDomain)
global CPApp CPArgumentDomain
void resetStandardUserDefaults()
void removeObjectForKey:inDomain:(CPString aKey, [inDomain] CPString aDomain)
id unarchiveObjectWithData:(CPData aData)
Sends messages (CPNotification) between objects.
float floatForKey:(CPString aKey)
Contains data obtained during a request made with CPURLConnection.
id URLWithString:(CPString URLString)
void setFloat:forKey:(float aValue, [forKey] CPString aKey)
CPDictionary infoDictionary()
CPData archivedDataWithRootObject:(id anObject)