{
if (!_paletteSignalsConnected) {
if (const auto ptr = qobject_cast<QGuiApplication *>(QGuiApplication::instance())) {
+ connect(ptr, &QGuiApplication::paletteChanged, this, &Theme::systemPaletteChanged);
connect(ptr->styleHints(), &QStyleHints::colorSchemeChanged, this, &Theme::darkModeChanged);
_paletteSignalsConnected = true;
}
}
}
+QVariantMap Theme::systemPalette()
+{
+ connectToPaletteSignal();
+#if defined(Q_OS_WIN)
+ auto systemPalette = QGuiApplication::palette();
+ if(darkMode()) {
+ systemPalette = reserveDarkPalette;
+ }
+#else
+ const auto systemPalette = QGuiApplication::palette();
+#endif
+
+ return QVariantMap {
+ { QStringLiteral("base"), systemPalette.base().color() },
+ { QStringLiteral("alternateBase"), systemPalette.alternateBase().color() },
+ { QStringLiteral("text"), systemPalette.text().color() },
+ { QStringLiteral("toolTipBase"), systemPalette.toolTipBase().color() },
+ { QStringLiteral("toolTipText"), systemPalette.toolTipText().color() },
+ { QStringLiteral("brightText"), systemPalette.brightText().color() },
+ { QStringLiteral("buttonText"), systemPalette.buttonText().color() },
+ { QStringLiteral("button"), systemPalette.button().color() },
+ { QStringLiteral("highlightedText"), systemPalette.highlightedText().color() },
+ { QStringLiteral("placeholderText"), systemPalette.placeholderText().color() },
+ { QStringLiteral("windowText"), systemPalette.windowText().color() },
+ { QStringLiteral("window"), systemPalette.window().color() },
+ { QStringLiteral("dark"), systemPalette.dark().color() },
+ { QStringLiteral("highlight"), systemPalette.highlight().color() },
+ { QStringLiteral("light"), systemPalette.light().color() },
+ { QStringLiteral("link"), systemPalette.link().color() },
+ { QStringLiteral("midlight"), systemPalette.midlight().color() },
+ { QStringLiteral("mid"), systemPalette.mid().color() },
+ { QStringLiteral("linkVisited"), systemPalette.linkVisited().color() },
+ { QStringLiteral("shadow"), systemPalette.shadow().color() },
+ };
+}
+
bool Theme::darkMode()
{
connectToPaletteSignal();
readonly property int pixelSize: fontMetrics.font.pixelSize\r
readonly property bool darkMode: Theme.darkMode\r
\r
- property SystemPalette nativePalette: SystemPalette {\r
- }\r
-\r
// Colors\r
readonly property color ncBlue: Theme.wizardHeaderBackgroundColor\r
readonly property color ncHeaderTextColor: Theme.wizardHeaderTitleColor\r
- readonly property color ncTextColor: nativePalette.text\r
+ readonly property color ncTextColor: Theme.systemPalette.windowText\r
readonly property color ncTextBrightColor: "white"\r
readonly property color ncSecondaryTextColor: "#808080"\r
readonly property color lightHover: Theme.darkMode ? Qt.lighter(backgroundColor, 2) : Qt.darker(backgroundColor, 1.05)\r
readonly property color darkerHover: Theme.darkMode ? Qt.lighter(backgroundColor, 2.35) : Qt.darker(backgroundColor, 1.25)\r
readonly property color menuBorder: Theme.darkMode ? Qt.lighter(backgroundColor, 2.5) : Qt.darker(backgroundColor, 1.5)\r
- readonly property color backgroundColor: nativePalette.window\r
- readonly property color buttonBackgroundColor: nativePalette.button\r
+ readonly property color backgroundColor: Theme.systemPalette.window\r
+ readonly property color buttonBackgroundColor: Theme.systemPalette.button\r
readonly property color positiveColor: Qt.rgba(0.38, 0.74, 0.38, 1)\r
\r
readonly property color currentUserHeaderColor: UserModel.currentUser ? UserModel.currentUser.headerColor : ncBlue\r