]> dgit.raspbian.org Git - nextcloud-desktop.git/commitdiff
Store server color in private member of account when capabilities fetched
authorClaudio Cambra <developer@claudiocambra.com>
Tue, 1 Aug 2023 07:55:41 +0000 (15:55 +0800)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Thu, 24 Aug 2023 00:34:41 +0000 (08:34 +0800)
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
src/libsync/account.cpp
src/libsync/account.h

index 9f080fdca197564f94551868d6e637e51777038e..e30965c98514a27a022a9d84f8bdc5bc99acbb25 100644 (file)
  */
 
 #include "account.h"
+#include "accessmanager.h"
 #include "accountfwd.h"
+#include "capabilities.h"
 #include "clientsideencryptionjobs.h"
-#include "cookiejar.h"
-#include "networkjobs.h"
 #include "configfile.h"
-#include "accessmanager.h"
+#include "cookiejar.h"
 #include "creds/abstractcredentials.h"
-#include "capabilities.h"
-#include "theme.h"
+#include "networkjobs.h"
 #include "pushnotifications.h"
 #include "version.h"
 
@@ -197,32 +196,30 @@ QString Account::prettyName() const
     return name;
 }
 
+QColor Account::serverColor() const
+{
+    return _serverColor;
+}
+
 QColor Account::headerColor() const
 {
-    const auto serverColor = capabilities().serverColor();
-    return serverColor.isValid() ? serverColor : Theme::defaultColor();
+    return serverColor();
 }
 
 QColor Account::headerTextColor() const
 {
-    const auto headerTextColor = capabilities().serverTextColor();
-    return headerTextColor.isValid() ? headerTextColor : QColor(255,255,255);
+    return _serverTextColor;
 }
 
 QColor Account::accentColor() const
 {
-    // This will need adjusting when dark theme is a thing
-    auto serverColor = capabilities().serverColor();
-
-    if(!serverColor.isValid()) {
-        serverColor = Theme::defaultColor();
-    }
+    const auto accentColor = serverColor();
+    constexpr auto effectMultiplier = 8;
 
-    const auto effectMultiplier = 8;
-    auto darknessAdjustment = static_cast<int>((1 - Theme::getColorDarkness(serverColor)) * effectMultiplier);
+    auto darknessAdjustment = static_cast<int>((1 - Theme::getColorDarkness(accentColor)) * effectMultiplier);
     darknessAdjustment *= darknessAdjustment; // Square the value to pronounce the darkness more in lighter colours
     const auto baseAdjustment = 125;
-    const auto adjusted = Theme::isDarkColor(serverColor) ? serverColor : serverColor.darker(baseAdjustment + darknessAdjustment);
+    const auto adjusted = Theme::isDarkColor(accentColor) ? accentColor : accentColor.darker(baseAdjustment + darknessAdjustment);
     return adjusted;
 }
 
@@ -652,6 +649,8 @@ const Capabilities &Account::capabilities() const
 void Account::setCapabilities(const QVariantMap &caps)
 {
     _capabilities = Capabilities(caps);
+    _serverColor = _capabilities.serverColor();
+    _serverTextColor = _capabilities.serverTextColor();
 
     emit capabilitiesChanged();
 
index 14dbc166d5aeae5520ed70e084e94064848d1e09..97e7835dd0efb24b86b760589f882c921f220a84 100644 (file)
 #include <QPixmap>
 #endif
 
-#include "common/utility.h"
-#include <memory>
 #include "capabilities.h"
 #include "clientsideencryption.h"
+#include "common/utility.h"
 #include "syncfileitem.h"
+#include "theme.h"
+#include <memory>
 
 class QSettings;
 class QNetworkReply;
@@ -376,7 +377,8 @@ private:
     Account(QObject *parent = nullptr);
     void setSharedThis(AccountPtr sharedThis);
 
-    static QString davPathBase();
+    [[nodiscard]] static QString davPathBase();
+    [[nodiscard]] QColor serverColor() const;
 
     bool _trustCertificates = false;
 
@@ -406,6 +408,8 @@ private:
     QSslConfiguration _sslConfiguration;
     Capabilities _capabilities;
     QString _serverVersion;
+    QColor _serverColor = Theme::defaultColor();
+    QColor _serverTextColor = QColor(255, 255, 255);
     bool _skipE2eeMetadataChecksumValidation = false;
     QScopedPointer<AbstractSslErrorHandler> _sslErrorHandler;
     QSharedPointer<QNetworkAccessManager> _am;