Revert "remove broken system paellete detection within our custom style"
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Tue, 5 Nov 2024 07:56:00 +0000 (16:56 +0900)
committerMatthieu Gallien <matthieu.gallien@nextcloud.com>
Tue, 19 Nov 2024 13:09:05 +0000 (14:09 +0100)
This reverts commit 2d08cdb503c69392ac5cb3eddf514f0550953ed8.

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/libsync/theme.cpp
src/libsync/theme.h
theme/Style/Style.qml

index d10d50be4f650ca59a7c9cdc31707e814325b381..e699cf4d136a366eab2653ab2ad4e01f72eaf7b8 100644 (file)
@@ -947,12 +947,49 @@ void Theme::connectToPaletteSignal()
 {
     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();
index b414c9fa3fbe87817361b3f7608ffca97778cf53..707cb07d555fce76a660a3fe84bb9d813a16d1c2 100644 (file)
@@ -67,6 +67,7 @@ class OWNCLOUDSYNC_EXPORT Theme : public QObject
 
     Q_PROPERTY(QColor defaultColor READ defaultColor CONSTANT)
 
+    Q_PROPERTY(QVariantMap systemPalette READ systemPalette NOTIFY systemPaletteChanged)
     Q_PROPERTY(bool darkMode READ darkMode NOTIFY darkModeChanged)
 public:
     enum CustomMediaType {
@@ -600,6 +601,7 @@ public:
 
     static constexpr const char *themePrefix = ":/client/theme/";
 
+    QVariantMap systemPalette();
     bool darkMode();
 
 public slots:
@@ -624,6 +626,7 @@ protected:
 
 signals:
     void systrayUseMonoIconsChanged(bool);
+    void systemPaletteChanged(const QPalette &palette);
     void darkModeChanged();
     void overrideServerUrlChanged();
     void forceOverrideServerUrlChanged();
index 912aa10b8167b8f8d28860ed6a16a2912a3b1c1a..2bb1905d3bd9c8782043570d06e2cfd1bb47608b 100644 (file)
@@ -8,20 +8,17 @@ QtObject {
     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