Show or hide multi-server overrides or text field depending on type of override url
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Thu, 19 Sep 2024 07:06:59 +0000 (15:06 +0800)
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>
Tue, 24 Sep 2024 08:39:45 +0000 (10:39 +0200)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/wizard/owncloudsetuppage.cpp

index a5374eb59fc3c6879f8639cb24a1e36c3a8ba105..75ba4322af076d3cc60f0ca7ca1444a59d6c0e99 100644 (file)
@@ -25,6 +25,8 @@
 #include <QPropertyAnimation>
 #include <QGraphicsPixmapItem>
 #include <QBuffer>
+#include <QJsonArray>
+#include <QJsonDocument>
 
 #include "QProgressIndicator.h"
 
@@ -47,15 +49,27 @@ OwncloudSetupPage::OwncloudSetupPage(QWidget *parent)
 
     setupServerAddressDescriptionLabel();
 
-    Theme *theme = Theme::instance();
+    const auto theme = Theme::instance();
     if (theme->overrideServerUrl().isEmpty()) {
+        _ui.comboBox->hide();
         _ui.leUrl->setPostfix(theme->wizardUrlPostfix());
         _ui.leUrl->setPlaceholderText(theme->wizardUrlHint());
-    } else if (Theme::instance()->forceOverrideServerUrl()) {
+    } else if (theme->multipleOverrideServers() && theme->forceOverrideServerUrl()) {
+        _ui.leUrl->hide();
+        const auto overrideJsonUtf8 = theme->overrideServerUrl().toUtf8();
+        const auto serversJsonArray = QJsonDocument::fromJson(overrideJsonUtf8).array();
+
+        for (const auto &serverJson : serversJsonArray) {
+            const auto serverObject = serverJson.toObject();
+            const auto serverName = serverObject.value("name").toString();
+            const auto serverUrl = serverObject.value("url").toString();
+            _ui.comboBox->addItem(serverName, serverUrl);
+        }
+    } else if (theme->forceOverrideServerUrl()) {
+        _ui.comboBox->hide();
         _ui.leUrl->setEnabled(false);
     }
 
-
     registerField(QLatin1String("OCUrl*"), _ui.leUrl);
 
     auto sizePolicy = _progressIndi->sizePolicy();