1
|
1 #include "sys/osx/dark_theme.h"
|
|
2 #import <Cocoa/Cocoa.h>
|
|
3
|
|
4 bool osx::DarkThemeAvailable()
|
|
5 {
|
|
6 return (__builtin_available(macOS 10.14, *)) ? true : false;
|
|
7 }
|
|
8
|
|
9 bool osx::IsInDarkTheme()
|
|
10 {
|
|
11 if (__builtin_available(macOS 10.14, *))
|
|
12 {
|
|
13 auto appearance = [NSApp.effectiveAppearance bestMatchFromAppearancesWithNames:
|
|
14 @[ NSAppearanceNameAqua, NSAppearanceNameDarkAqua ]];
|
|
15 return [appearance isEqualToString:NSAppearanceNameDarkAqua];
|
|
16 }
|
|
17 return false;
|
|
18 }
|
|
19
|
|
20 void osx::SetToDarkTheme()
|
|
21 {
|
|
22 // https://stackoverflow.com/questions/55925862/how-can-i-set-my-os-x-application-theme-in-code
|
|
23 if (__builtin_available(macOS 10.14, *))
|
|
24 {
|
|
25 [NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameDarkAqua]];
|
|
26 }
|
|
27 }
|
|
28
|
|
29 void osx::SetToLightTheme()
|
|
30 {
|
|
31 // https://stackoverflow.com/questions/55925862/how-can-i-set-my-os-x-application-theme-in-code
|
|
32 if (__builtin_available(macOS 10.14, *))
|
|
33 {
|
|
34 [NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameAqua]];
|
|
35 }
|
|
36 }
|
|
37
|
|
38 void osx::SetToAutoTheme()
|
|
39 {
|
|
40 if (__builtin_available(macOS 10.14, *))
|
|
41 {
|
|
42 [NSApp setAppearance:nil];
|
|
43 }
|
|
44 }
|