&SystemPreferences::SubscribeNotification)
.SetMethod("unsubscribeNotification",
&SystemPreferences::UnsubscribeNotification)
+ .SetMethod("getUserDefault", &SystemPreferences::GetUserDefault)
#endif
.SetMethod("isDarkMode", &SystemPreferences::IsDarkMode);
}
int SubscribeNotification(const std::string& name,
const base::Closure& callback);
void UnsubscribeNotification(int id);
+ v8::Local<v8::Value> GetUserDefault(const std::string& name,
+ const std::string& type);
#endif
bool IsDarkMode();
#import <Cocoa/Cocoa.h>
+#include "atom/common/native_mate_converters/gurl_converter.h"
#include "base/strings/sys_string_conversions.h"
+#include "net/base/mac/url_conversions.h"
namespace atom {
}
}
+v8::Local<v8::Value> SystemPreferences::GetUserDefault(
+ const std::string& name, const std::string& type) {
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ NSString* key = base::SysUTF8ToNSString(name);
+ if (type == "string") {
+ return mate::StringToV8(
+ isolate(), base::SysNSStringToUTF8([defaults stringForKey:key]));
+ } else if (type == "boolean") {
+ return v8::Boolean::New(isolate(), [defaults boolForKey:key]);
+ } else if (type == "float") {
+ return v8::Number::New(isolate(), [defaults floatForKey:key]);
+ } else if (type == "integer") {
+ return v8::Integer::New(isolate(), [defaults integerForKey:key]);
+ } else if (type == "double") {
+ return v8::Number::New(isolate(), [defaults doubleForKey:key]);
+ } else if (type == "url") {
+ return mate::ConvertToV8(
+ isolate(), net::GURLWithNSURL([defaults URLForKey:key]));
+ } else {
+ return v8::Undefined(isolate());
+ }
+}
+
bool SystemPreferences::IsDarkMode() {
NSString* mode = [[NSUserDefaults standardUserDefaults]
stringForKey:@"AppleInterfaceStyle"];