Mercurial > minori
comparison include/gui/theme.h @ 279:657fda1b9cac
*: clean up enums
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Fri, 19 Apr 2024 13:24:06 -0400 |
parents | 3ec7804abf17 |
children |
comparison
equal
deleted
inserted
replaced
274:f6a756c19bfb | 279:657fda1b9cac |
---|---|
1 #ifndef MINORI_GUI_THEME_H_ | 1 #ifndef MINORI_GUI_THEME_H_ |
2 #define MINORI_GUI_THEME_H_ | 2 #define MINORI_GUI_THEME_H_ |
3 | 3 |
4 #include <QStyle> | 4 #include <array> |
5 | |
6 enum class Themes { | |
7 OS, | |
8 LIGHT, | |
9 DARK | |
10 }; | |
11 | 5 |
12 namespace Theme { | 6 namespace Theme { |
13 | 7 |
14 class Theme final { | 8 enum class Theme { |
9 Default, | |
10 Light, | |
11 Dark | |
12 }; | |
13 | |
14 constexpr std::array<Theme, 3> Themes{ | |
15 Theme::Default, | |
16 Theme::Light, | |
17 Theme::Dark | |
18 }; | |
19 | |
20 class ThemeManager final { | |
15 public: | 21 public: |
16 Theme(Themes theme = Themes::OS); | 22 ThemeManager(Theme theme = Theme::Default); |
17 void SetTheme(Themes theme); | 23 void SetTheme(Theme theme); |
18 Themes GetTheme() const; | 24 Theme GetTheme() const; |
19 bool IsInDarkTheme() const; | 25 bool IsInDarkTheme() const; |
20 void RepaintCurrentTheme(); | 26 void RepaintCurrentTheme(); |
21 | 27 |
22 private: | 28 private: |
23 void SetToDarkTheme(); | 29 void SetToDarkTheme(); |
24 void SetToLightTheme(); | 30 void SetToLightTheme(); |
25 void SetStyleSheet(Themes theme); | 31 void SetStyleSheet(Theme theme); |
26 Themes GetCurrentOSTheme() const; | 32 Theme GetCurrentOSTheme() const; |
27 Themes theme; | 33 Theme theme; |
28 }; | 34 }; |
29 | 35 |
30 } // namespace Theme | 36 } // namespace Theme |
31 | 37 |
32 #endif // MINORI_GUI_THEME_H_ | 38 #endif // MINORI_GUI_THEME_H_ |