| 
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 }
 |