view src/sys/osx/dark_theme.mm @ 75:d3e9310598b1

*: refactor some stuff text: "TextParagraph"s are now called sections, because that's the actual word for it :P text: new classes: Line and OneLineSection, solves many problems with paragraphs that are only one line long (ex. going out of bounds) http: reworked http stuff to allow threaded get requests, also moved it to its own file to (hopefully) remove clutter eventually I'll make a threaded post request method and use that in the "basic" function
author Paper <mrpapersonic@gmail.com>
date Wed, 04 Oct 2023 01:42:30 -0400
parents cde8f67a7c7d
children 6d8da6e64d61
line wrap: on
line source

#include "sys/osx/dark_theme.h"
#import <Cocoa/Cocoa.h>

namespace osx {

bool DarkThemeAvailable() {
	if (@available(macOS 10.14, *))
		return true;
	else
		return false;
}

bool IsInDarkTheme() {
	if (@available(macOS 10.14, *)) {
		auto appearance = [NSApp.effectiveAppearance
		    bestMatchFromAppearancesWithNames:@[ NSAppearanceNameAqua, NSAppearanceNameDarkAqua ]];
		return [appearance isEqualToString:NSAppearanceNameDarkAqua];
	}
	return false;
}

void SetToDarkTheme() {
	// https://stackoverflow.com/questions/55925862/how-can-i-set-my-os-x-application-theme-in-code
	if (@available(macOS 10.14, *)) {
		[NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameDarkAqua]];
	}
}

void SetToLightTheme() {
	// https://stackoverflow.com/questions/55925862/how-can-i-set-my-os-x-application-theme-in-code
	if (__builtin_available(macOS 10.14, *)) {
		[NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameAqua]];
	}
}

void SetToAutoTheme() {
	if (@available(macOS 10.14, *)) {
		[NSApp setAppearance:nil];
	}
}

} // namespace osx