comparison src/gui/theme.cc @ 258:862d0d8619f6

*: HUUUGE changes animia has been renamed to animone, so instead of thinking of a health condition, you think of a beautiful flower :) I've also edited some of the code for animone, but I have no idea if it even works or not because I don't have a mac or windows machine lying around. whoops! ... anyway, all of the changes divergent from Anisthesia are now licensed under BSD. it's possible that I could even rewrite most of the code to where I don't even have to keep the MIT license, but that's thinking too far into the future I've been slacking off on implementing the anime seasons page, mostly out of laziness. I think I'd have to create another db file specifically for the seasons anyway, this code is being pushed *primarily* because the hard drive it's on is failing! yay :)
author Paper <paper@paper.us.eu.org>
date Mon, 01 Apr 2024 02:43:44 -0400
parents 4d461ef7d424
children 657fda1b9cac
comparison
equal deleted inserted replaced
257:699a20c57dc8 258:862d0d8619f6
1 #include "core/config.h" 1 #include "core/config.h"
2 #include "core/session.h" 2 #include "core/session.h"
3 #include <QApplication> 3 #include <QApplication>
4 #include <QDebug>
4 #include <QFile> 5 #include <QFile>
5 #include <QDebug> 6 #include <QStyleFactory>
6 #include <QTextStream> 7 #include <QTextStream>
7 #include <QStyleFactory>
8 #ifdef MACOSX 8 #ifdef MACOSX
9 # include "sys/osx/dark_theme.h" 9 # include "sys/osx/dark_theme.h"
10 #elif WIN32 10 #elif WIN32
11 # include "sys/win32/dark_theme.h" 11 # include "sys/win32/dark_theme.h"
12 #else 12 #else
18 /* Weird quirks of this implementation: 18 /* Weird quirks of this implementation:
19 * 1. Dark mode stuff in Qt changes a lot and Qt 5 and Qt 6 are massively different 19 * 1. Dark mode stuff in Qt changes a lot and Qt 5 and Qt 6 are massively different
20 * 2. Some widgets, i.e. QTabWidget, QTabBar, etc., just completely IGNORE the QPalette setting 20 * 2. Some widgets, i.e. QTabWidget, QTabBar, etc., just completely IGNORE the QPalette setting
21 * on different platforms and the only way to fix it is by using Fusion 21 * on different platforms and the only way to fix it is by using Fusion
22 * 3. Windows dark mode support in Qt 6.5 (with Fusion) is completely unavoidable 22 * 3. Windows dark mode support in Qt 6.5 (with Fusion) is completely unavoidable
23 */ 23 */
24 24
25 namespace Theme { 25 namespace Theme {
26 26
27 Theme::Theme(Themes theme) { 27 Theme::Theme(Themes theme) {
28 this->theme = theme; 28 this->theme = theme;
113 pal.setColor(QPalette::Disabled, QPalette::Text, gray); 113 pal.setColor(QPalette::Disabled, QPalette::Text, gray);
114 pal.setColor(QPalette::Disabled, QPalette::Light, darkGray); 114 pal.setColor(QPalette::Disabled, QPalette::Light, darkGray);
115 qApp->setPalette(pal); 115 qApp->setPalette(pal);
116 116
117 #ifdef WIN32 117 #ifdef WIN32
118 qApp->setStyleSheet([]{ 118 qApp->setStyleSheet([] {
119 QFile f(":/dark.qss"); 119 QFile f(":/dark.qss");
120 if (!f.exists()) 120 if (!f.exists())
121 return QStringLiteral(""); 121 return QStringLiteral("");
122 f.open(QFile::ReadOnly | QFile::Text); 122 f.open(QFile::ReadOnly | QFile::Text);
123 QTextStream ts(&f); 123 QTextStream ts(&f);
140 } 140 }
141 } 141 }
142 142
143 void Theme::SetTheme(Themes theme) { 143 void Theme::SetTheme(Themes theme) {
144 switch (theme) { 144 switch (theme) {
145 case Themes::LIGHT: 145 case Themes::LIGHT: SetToLightTheme(); break;
146 SetToLightTheme(); 146 case Themes::DARK: SetToDarkTheme(); break;
147 break;
148 case Themes::DARK:
149 SetToDarkTheme();
150 break;
151 case Themes::OS: 147 case Themes::OS:
152 if (GetCurrentOSTheme() == Themes::LIGHT) 148 if (GetCurrentOSTheme() == Themes::LIGHT)
153 SetToLightTheme(); 149 SetToLightTheme();
154 else 150 else
155 SetToDarkTheme(); 151 SetToDarkTheme();
160 156
161 void Theme::RepaintCurrentTheme() { 157 void Theme::RepaintCurrentTheme() {
162 Theme::SetTheme(theme); 158 Theme::SetTheme(theme);
163 } 159 }
164 160
165 } // namespace DarkTheme 161 } // namespace Theme