view include/gui/theme.h @ 229:adc20fa321c1

theme: force Fusion style on platforms other than Win32 or OS X I was reluctant to do this, but most of the other styles just look like pure shite regardless of whether I force a stylesheet on them or not. KDE's style is actually hilariously bad paired with my stylesheet, so I've decided to also make the stylesheet Windows-specific as well, because that's really the only platform where it makes sense in the first place.
author Paper <paper@paper.us.eu.org>
date Wed, 10 Jan 2024 21:23:57 -0500
parents 39521c47c7a3
children 862d0d8619f6
line wrap: on
line source

#ifndef __gui__theme_h
#define __gui__theme_h

#include <QStyle>

enum class Themes {
	OS,
	LIGHT,
	DARK
};

namespace Theme {

class Theme final {
	public:
		Theme(Themes theme = Themes::OS);
		void SetTheme(Themes theme);
		Themes GetTheme() const;
		bool IsInDarkTheme() const;
		void RepaintCurrentTheme();

	private:
		void SetToDarkTheme();
		void SetToLightTheme();
		void SetStyleSheet(Themes theme);
		Themes GetCurrentOSTheme() const;
		Themes theme;
};

} // namespace Theme

#endif // __gui__theme_h