57 BOOL _searchListNeedsReload;
63 + (id)standardUserDefaults
75 + (void)resetStandardUserDefaults
78 [StandardUserDefaults synchronize];
93 [
self _setupArgumentsDomain];
108 - (void)_setupArgumentsDomain
110 var args = [CPApp namedArguments],
111 keys = [args allKeys],
112 count = [keys count],
115 for (; i < count; i++)
118 [
self setObject:[args objectForKey:key] forKey:key inDomain:CPArgumentDomain];
128 if (_searchListNeedsReload)
129 [
self _reloadSearchList];
131 return [_searchList objectForKey:aKey];
137 - (void)setObject:(
id)anObject forKey:(
CPString)aKey
149 var domain = [_domains objectForKey:aDomain];
154 return [domain objectForKey:aKey];
163 if (!aKey || !aDomain)
166 var domain = [_domains objectForKey:aDomain];
170 [_domains setObject:domain forKey:aDomain];
173 [domain setObject:anObject forKey:aKey];
174 _searchListNeedsReload = YES;
192 if (!aKey || !aDomain)
195 var domain = [_domains objectForKey:aDomain];
199 [domain removeObjectForKey:aKey];
200 _searchListNeedsReload = YES;
214 var keys = [aDictionary
allKeys],
215 count = [keys count],
218 for (; i < count; i++)
231 - (void)registerDefaultsFromContentsOfFile:(
CPURL)aURL
235 plist = [data plistObject];
243 - (void)_reloadSearchList
245 _searchListNeedsReload = NO;
247 var dicts = [CPRegistrationDomain, CPGlobalDomain, CPApplicationDomain, CPArgumentDomain],
248 count = [dicts count],
253 for (; i < count; i++)
255 var domain = [_domains objectForKey:dicts[i]];
259 var keys = [domain allKeys],
260 keysCount = [keys count],
263 for (; j < keysCount; j++)
266 [_searchList setObject:[domain objectForKey:key] forKey:key];
278 return [CPArgumentDomain, CPLocaleDomain, CPRegistrationDomain];
286 return [CPGlobalDomain, CPApplicationDomain];
294 return [_stores objectForKey:aDomain];
307 var currentStore = [_stores objectForKey:aDomain];
308 if (currentStore && [currentStore
class] === aStoreClass)
311 var store = [[aStoreClass alloc] init];
312 [store setDomain:aDomain];
313 [_stores setObject:store forKey:aDomain];
316 [
self reloadDataFromStoreForDomain:aDomain];
324 - (void)reloadDataFromStoreForDomain:(
CPString)aDomain
329 [_domains setObject:domain forKey:aDomain];
331 _searchListNeedsReload = YES;
350 var globalDomain = [_domains objectForKey:CPGlobalDomain];
357 var appDomain = [_domains objectForKey:CPApplicationDomain];
365 #pragma mark Getting Default Values
373 if ([value isKindOfClass:
CPArray])
385 if ([value respondsToSelector:
@selector(boolValue)])
386 return [value boolValue];
398 if ([value isKindOfClass:
CPData])
425 if ([value respondsToSelector:
@selector(floatValue)])
426 value = [value floatValue];
428 return parseFloat(value);
440 if ([value respondsToSelector:
@selector(intValue)])
441 value = [value intValue];
443 return parseInt(value);
464 else if ([value respondsToSelector:
@selector(stringValue)])
465 return [value stringValue];
476 if (![value isKindOfClass:
CPArray])
479 for (var i = 0, count = [value count]; i < count; i++)
480 if (![value[i] isKindOfClass:
CPString])
492 if ([value isKindOfClass:
CPURL])
501 #pragma mark Setting Default Values
509 if ([aValue respondsToSelector:
@selector(boolValue)])
517 - (void)setFloat:(
float)aValue forKey:(
CPString)aKey
519 if ([aValue respondsToSelector:
@selector(aValue)])
520 aValue = [aValue floatValue];
528 - (void)setDouble:(
double)aValue forKey:(
CPString)aKey
537 - (void)setInteger:(
int)aValue forKey:(
CPString)aKey
539 if ([aValue respondsToSelector:
@selector(intValue)])
540 aValue = [aValue intValue];
551 if ([aValue isKindOfClass:
CPString])
566 _CPRaiseInvalidAbstractInvocation(
self, _cmd);
572 _CPRaiseInvalidAbstractInvocation(
self, _cmd);
584 if (_domain === aDomain)
594 var result = [_cookie value];
595 if (!result || [result length] < 1)
614 + (BOOL)supportsLocalStorage
616 if (!window.localStorage)
637 if (![[
self class] supportsLocalStorage])
639 [
CPException raise:@"UnsupportedFeature"
reason:@"Browser does not support localStorage for CPUserDefaultsLocalStore"];
643 return self = [
super init];
648 var result = localStorage.getItem(_domain);
649 if (!result || [result length] < 1)
659 localStorage.setItem(_domain, encodeURIComponent([aData rawString]));
663 CPLog.warn(
"Unable to write to local storage: " + e);