All we really need to do is make getUserDefault support array / object types.
This commit is contained in:
parent
587dd2fe51
commit
fa3b17444f
5 changed files with 17 additions and 35 deletions
|
@ -54,7 +54,6 @@ void SystemPreferences::BuildPrototype(
|
||||||
.SetMethod("unsubscribeNotification",
|
.SetMethod("unsubscribeNotification",
|
||||||
&SystemPreferences::UnsubscribeNotification)
|
&SystemPreferences::UnsubscribeNotification)
|
||||||
.SetMethod("getUserDefault", &SystemPreferences::GetUserDefault)
|
.SetMethod("getUserDefault", &SystemPreferences::GetUserDefault)
|
||||||
.SetMethod("getGlobalDefault", &SystemPreferences::GetGlobalDefault)
|
|
||||||
#endif
|
#endif
|
||||||
.SetMethod("isDarkMode", &SystemPreferences::IsDarkMode);
|
.SetMethod("isDarkMode", &SystemPreferences::IsDarkMode);
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,6 @@ class SystemPreferences : public mate::EventEmitter<SystemPreferences> {
|
||||||
void UnsubscribeNotification(int id);
|
void UnsubscribeNotification(int id);
|
||||||
v8::Local<v8::Value> GetUserDefault(const std::string& name,
|
v8::Local<v8::Value> GetUserDefault(const std::string& name,
|
||||||
const std::string& type);
|
const std::string& type);
|
||||||
v8::Local<v8::Value> GetGlobalDefault(const std::string& name);
|
|
||||||
#endif
|
#endif
|
||||||
bool IsDarkMode();
|
bool IsDarkMode();
|
||||||
|
|
||||||
|
|
|
@ -67,8 +67,8 @@ v8::Local<v8::Value> SystemPreferences::GetUserDefault(
|
||||||
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
|
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
|
||||||
NSString* key = base::SysUTF8ToNSString(name);
|
NSString* key = base::SysUTF8ToNSString(name);
|
||||||
if (type == "string") {
|
if (type == "string") {
|
||||||
return mate::StringToV8(
|
return mate::StringToV8(isolate(),
|
||||||
isolate(), base::SysNSStringToUTF8([defaults stringForKey:key]));
|
base::SysNSStringToUTF8([defaults stringForKey:key]));
|
||||||
} else if (type == "boolean") {
|
} else if (type == "boolean") {
|
||||||
return v8::Boolean::New(isolate(), [defaults boolForKey:key]);
|
return v8::Boolean::New(isolate(), [defaults boolForKey:key]);
|
||||||
} else if (type == "float") {
|
} else if (type == "float") {
|
||||||
|
@ -78,28 +78,14 @@ v8::Local<v8::Value> SystemPreferences::GetUserDefault(
|
||||||
} else if (type == "double") {
|
} else if (type == "double") {
|
||||||
return v8::Number::New(isolate(), [defaults doubleForKey:key]);
|
return v8::Number::New(isolate(), [defaults doubleForKey:key]);
|
||||||
} else if (type == "url") {
|
} else if (type == "url") {
|
||||||
return mate::ConvertToV8(
|
return mate::ConvertToV8(isolate(),
|
||||||
isolate(), net::GURLWithNSURL([defaults URLForKey:key]));
|
net::GURLWithNSURL([defaults URLForKey:key]));
|
||||||
} else {
|
} else if (type == "array") {
|
||||||
return v8::Undefined(isolate());
|
return mate::ConvertToV8(isolate(),
|
||||||
}
|
*NSArrayToListValue([defaults arrayForKey:key]));
|
||||||
}
|
} else if (type == "dictionary") {
|
||||||
|
return mate::ConvertToV8(isolate(),
|
||||||
v8::Local<v8::Value> SystemPreferences::GetGlobalDefault(const std::string& name) {
|
*NSDictionaryToDictionaryValue([defaults dictionaryForKey:key]));
|
||||||
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
|
|
||||||
NSString* key = base::SysUTF8ToNSString(name);
|
|
||||||
|
|
||||||
NSDictionary* globalPrefs = [defaults persistentDomainForName:NSGlobalDomain];
|
|
||||||
id value = [globalPrefs objectForKey:key];
|
|
||||||
|
|
||||||
if ([value isKindOfClass:[NSString class]]) {
|
|
||||||
return mate::StringToV8(isolate(), base::SysNSStringToUTF8(value));
|
|
||||||
} else if ([value isKindOfClass:[NSNumber class]]) {
|
|
||||||
return v8::Integer::New(isolate(), [value integerValue]);
|
|
||||||
} else if ([value isKindOfClass:[NSArray class]]) {
|
|
||||||
return mate::ConvertToV8(isolate(), *NSArrayToListValue(value));
|
|
||||||
} else if ([value isKindOfClass:[NSDictionary class]]) {
|
|
||||||
return mate::ConvertToV8(isolate(), *NSDictionaryToDictionaryValue(value));
|
|
||||||
} else {
|
} else {
|
||||||
return v8::Undefined(isolate());
|
return v8::Undefined(isolate());
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ Removes the subscriber with `id`.
|
||||||
|
|
||||||
* `key` String
|
* `key` String
|
||||||
* `type` String - Can be `string`, `boolean`, `integer`, `float`, `double`,
|
* `type` String - Can be `string`, `boolean`, `integer`, `float`, `double`,
|
||||||
`url`.
|
`url`, `array`, `dictionary`
|
||||||
|
|
||||||
Get the value of `key` in system preferences.
|
Get the value of `key` in system preferences.
|
||||||
|
|
||||||
|
@ -50,6 +50,9 @@ are:
|
||||||
* `AppleAquaColorVariant: integer`
|
* `AppleAquaColorVariant: integer`
|
||||||
* `AppleHighlightColor: string`
|
* `AppleHighlightColor: string`
|
||||||
* `AppleShowScrollBars: string`
|
* `AppleShowScrollBars: string`
|
||||||
|
* `NSNavRecentPlaces: array`
|
||||||
|
* `NSPreferredWebServices: dictionary`
|
||||||
|
* `NSUserDictionaryReplacementItems: array`
|
||||||
|
|
||||||
### `systemPreferences.isAeroGlassEnabled()` _Windows_
|
### `systemPreferences.isAeroGlassEnabled()` _Windows_
|
||||||
|
|
||||||
|
|
|
@ -7,17 +7,12 @@ describe('systemPreferences module', function () {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
it('returns user defaults', function () {
|
it('returns values for known user defaults', function () {
|
||||||
assert.notEqual(systemPreferences.getUserDefault('AppleInterfaceStyle', 'string'), null)
|
let locale = systemPreferences.getUserDefault('AppleLocale', 'string')
|
||||||
assert.notEqual(systemPreferences.getUserDefault('AppleAquaColorVariant', 'integer'), null)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('returns defaults under the global domain', function () {
|
|
||||||
let locale = systemPreferences.getGlobalDefault('AppleLocale')
|
|
||||||
assert.notEqual(locale, null)
|
assert.notEqual(locale, null)
|
||||||
assert(locale.length > 0)
|
assert(locale.length > 0)
|
||||||
|
|
||||||
let languages = systemPreferences.getGlobalDefault('AppleLanguages')
|
let languages = systemPreferences.getUserDefault('AppleLanguages', 'array')
|
||||||
assert.notEqual(languages, null)
|
assert.notEqual(languages, null)
|
||||||
assert(languages.length > 0)
|
assert(languages.length > 0)
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Reference in a new issue