feat: add mac support to systemPrefs.getAccentColor() (#16251)
* feat: add mac support to systemPrefs.getAccentColor() * note 10.14 retriction
This commit is contained in:
parent
5c378de22f
commit
439ba5116f
5 changed files with 32 additions and 3 deletions
|
@ -55,8 +55,10 @@ void SystemPreferences::BuildPrototype(
|
||||||
v8::Local<v8::FunctionTemplate> prototype) {
|
v8::Local<v8::FunctionTemplate> prototype) {
|
||||||
prototype->SetClassName(mate::StringToV8(isolate, "SystemPreferences"));
|
prototype->SetClassName(mate::StringToV8(isolate, "SystemPreferences"));
|
||||||
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
|
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
|
||||||
#if defined(OS_WIN)
|
#if defined(OS_WIN) || defined(OS_MACOSX)
|
||||||
.SetMethod("getAccentColor", &SystemPreferences::GetAccentColor)
|
.SetMethod("getAccentColor", &SystemPreferences::GetAccentColor)
|
||||||
|
#endif
|
||||||
|
#if defined(OS_WIN)
|
||||||
.SetMethod("isAeroGlassEnabled", &SystemPreferences::IsAeroGlassEnabled)
|
.SetMethod("isAeroGlassEnabled", &SystemPreferences::IsAeroGlassEnabled)
|
||||||
.SetMethod("getColor", &SystemPreferences::GetColor)
|
.SetMethod("getColor", &SystemPreferences::GetColor)
|
||||||
#elif defined(OS_MACOSX)
|
#elif defined(OS_MACOSX)
|
||||||
|
|
|
@ -49,10 +49,13 @@ class SystemPreferences : public mate::EventEmitter<SystemPreferences>
|
||||||
static void BuildPrototype(v8::Isolate* isolate,
|
static void BuildPrototype(v8::Isolate* isolate,
|
||||||
v8::Local<v8::FunctionTemplate> prototype);
|
v8::Local<v8::FunctionTemplate> prototype);
|
||||||
|
|
||||||
|
#if defined(OS_WIN) || defined(OS_MACOSX)
|
||||||
|
std::string GetAccentColor();
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(OS_WIN)
|
#if defined(OS_WIN)
|
||||||
bool IsAeroGlassEnabled();
|
bool IsAeroGlassEnabled();
|
||||||
|
|
||||||
std::string GetAccentColor();
|
|
||||||
std::string GetColor(const std::string& color, mate::Arguments* args);
|
std::string GetColor(const std::string& color, mate::Arguments* args);
|
||||||
|
|
||||||
void InitializeWindow();
|
void InitializeWindow();
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include "atom/browser/mac/dict_util.h"
|
#include "atom/browser/mac/dict_util.h"
|
||||||
#include "atom/common/native_mate_converters/gurl_converter.h"
|
#include "atom/common/native_mate_converters/gurl_converter.h"
|
||||||
#include "atom/common/native_mate_converters/value_converter.h"
|
#include "atom/common/native_mate_converters/value_converter.h"
|
||||||
|
#include "base/strings/stringprintf.h"
|
||||||
#include "base/strings/sys_string_conversions.h"
|
#include "base/strings/sys_string_conversions.h"
|
||||||
#include "base/values.h"
|
#include "base/values.h"
|
||||||
#include "native_mate/object_template_builder.h"
|
#include "native_mate/object_template_builder.h"
|
||||||
|
@ -104,6 +105,14 @@ std::string ConvertAuthorizationStatus(AVAuthorizationStatusMac status) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Convert color to RGBA value like "#ABCDEF"
|
||||||
|
std::string ToRGBA(NSColor* color) {
|
||||||
|
return base::StringPrintf(
|
||||||
|
"%02X%02X%02X%02X", (int)(color.redComponent * 0xFF),
|
||||||
|
(int)(color.greenComponent * 0xFF), (int)(color.blueComponent * 0xFF),
|
||||||
|
(int)(color.alphaComponent * 0xFF));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
void SystemPreferences::PostNotification(const std::string& name,
|
void SystemPreferences::PostNotification(const std::string& name,
|
||||||
|
@ -378,6 +387,14 @@ void SystemPreferences::SetUserDefault(const std::string& name,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string SystemPreferences::GetAccentColor() {
|
||||||
|
NSColor* sysColor = nil;
|
||||||
|
if (@available(macOS 10.14, *))
|
||||||
|
sysColor = [NSColor controlAccentColor];
|
||||||
|
|
||||||
|
return ToRGBA(sysColor);
|
||||||
|
}
|
||||||
|
|
||||||
bool SystemPreferences::IsTrustedAccessibilityClient(bool prompt) {
|
bool SystemPreferences::IsTrustedAccessibilityClient(bool prompt) {
|
||||||
NSDictionary* options = @{(id)kAXTrustedCheckOptionPrompt : @(prompt)};
|
NSDictionary* options = @{(id)kAXTrustedCheckOptionPrompt : @(prompt)};
|
||||||
return AXIsProcessTrustedWithOptions((CFDictionaryRef)options);
|
return AXIsProcessTrustedWithOptions((CFDictionaryRef)options);
|
||||||
|
|
|
@ -37,6 +37,11 @@ typedef NS_ENUM(NSInteger, AVAuthorizationStatusMac) {
|
||||||
(AVMediaType)mediaType API_AVAILABLE(macosx(10.14));
|
(AVMediaType)mediaType API_AVAILABLE(macosx(10.14));
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface NSColor (MojaveSDK)
|
||||||
|
@property(class, strong, readonly)
|
||||||
|
NSColor* controlAccentColor API_AVAILABLE(macosx(10.14));
|
||||||
|
@end
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#if !defined(MAC_OS_X_VERSION_10_14) || \
|
#if !defined(MAC_OS_X_VERSION_10_14) || \
|
||||||
MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_14
|
MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_14
|
||||||
|
|
|
@ -227,7 +227,7 @@ if (browserOptions.transparent) {
|
||||||
|
|
||||||
[dwm-composition]:https://msdn.microsoft.com/en-us/library/windows/desktop/aa969540.aspx
|
[dwm-composition]:https://msdn.microsoft.com/en-us/library/windows/desktop/aa969540.aspx
|
||||||
|
|
||||||
### `systemPreferences.getAccentColor()` _Windows_
|
### `systemPreferences.getAccentColor()` _Windows_ _macOS_
|
||||||
|
|
||||||
Returns `String` - The users current system wide accent color preference in RGBA
|
Returns `String` - The users current system wide accent color preference in RGBA
|
||||||
hexadecimal form.
|
hexadecimal form.
|
||||||
|
@ -240,6 +240,8 @@ const blue = color.substr(4, 2) // "cc"
|
||||||
const alpha = color.substr(6, 2) // "dd"
|
const alpha = color.substr(6, 2) // "dd"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
This API is only available on macOS 10.14 Mojave or newer.
|
||||||
|
|
||||||
### `systemPreferences.getColor(color)` _Windows_
|
### `systemPreferences.getColor(color)` _Windows_
|
||||||
|
|
||||||
* `color` String - One of the following values:
|
* `color` String - One of the following values:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue