|
1
|
1 #pragma once
|
|
|
2
|
|
|
3 #ifdef _WIN32
|
|
|
4
|
|
|
5 #include <SDK/ui_element.h>
|
|
|
6 #include <libPPUI/DarkMode.h>
|
|
|
7
|
|
|
8 // fb2k::CDarkModeHooks
|
|
|
9 // foobar2000 specific helper on top of libPPUI DarkMode::CHooks
|
|
|
10 // Automatically determines whether dark mode should be on or off
|
|
|
11 // Keeps track of dark mode preference changes at runtime
|
|
|
12 // Does nothing if used in foobar2000 older than 2.0
|
|
|
13
|
|
|
14 // IMPORTANT
|
|
|
15 // See also: SDK/coreDarkMode.h
|
|
|
16 // Using CCoreDarkMode lets you invoke foobar2000's instance of this code instead of static linking it, resulting in much smaller component binary.
|
|
|
17 // Using CDarkModeHooks directly is good mainly for debugging or troubleshooting.
|
|
|
18
|
|
|
19 namespace fb2k {
|
|
|
20 bool isDarkMode();
|
|
|
21
|
|
|
22 #ifndef CDarkModeHooks
|
|
|
23 class CDarkModeHooks : public DarkMode::CHooks, private ui_config_callback_impl {
|
|
|
24 public:
|
|
|
25 CDarkModeHooks() : CHooks(isDarkMode()) {}
|
|
|
26
|
|
|
27 private:
|
|
|
28 void ui_fonts_changed() override {}
|
|
|
29 void ui_colors_changed() override { this->SetDark(isDarkMode()); }
|
|
|
30 };
|
|
|
31 #endif
|
|
|
32 }
|
|
|
33
|
|
|
34 #endif
|