From d96ee4c42c16ed6cc229497ca8a1b0c49cfcd3de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Mon, 21 Feb 2022 15:26:36 -0500
Subject: [PATCH] misc: add preferences to enable full UI for swarm

Change-Id: Ied9e8d59fe9dff08ffbc10d2c723b8998d8469f1
GitLab: #670
---
 src/appsettingsmanager.h                      |  1 +
 src/constant/JamiStrings.qml                  |  2 ++
 src/mainview/components/SidePanel.qml         | 13 +++++++++++-
 .../components/TroubleshootSettings.qml       | 21 ++++++++++++++++++-
 src/utilsadapter.cpp                          |  2 ++
 src/utilsadapter.h                            |  1 +
 6 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/src/appsettingsmanager.h b/src/appsettingsmanager.h
index 0ea1c6bba..928e416ac 100644
--- a/src/appsettingsmanager.h
+++ b/src/appsettingsmanager.h
@@ -43,6 +43,7 @@ extern const QString defaultDownloadPath;
     X(AcceptTransferBelow, 20) \
     X(AutoAcceptFiles, true) \
     X(DisplayHyperlinkPreviews, true) \
+    X(EnableExperimentalSwarm, false) \
     X(EnableDarkTheme, false) \
     X(AutoUpdate, true) \
     X(StartMinimized, false) \
diff --git a/src/constant/JamiStrings.qml b/src/constant/JamiStrings.qml
index cb80596a3..db3e76b88 100644
--- a/src/constant/JamiStrings.qml
+++ b/src/constant/JamiStrings.qml
@@ -424,6 +424,8 @@ Item {
     property string troubleshootTitle: qsTr("Troubleshoot")
     property string troubleshootButton: qsTr("Open logs")
     property string troubleshootText: qsTr("Get logs")
+    property string experimentalSwarm: qsTr("(Experimental) Enable small groups support for Swarm")
+    property string experimentalSwarmTooltip: qsTr("This feature is in development.")
 
     // Recording Settings
     property string tipRecordFolder: qsTr("Select a record directory")
diff --git a/src/mainview/components/SidePanel.qml b/src/mainview/components/SidePanel.qml
index f53582866..7b211d652 100644
--- a/src/mainview/components/SidePanel.qml
+++ b/src/mainview/components/SidePanel.qml
@@ -21,9 +21,10 @@ import QtQuick
 import QtQuick.Controls
 import QtQuick.Layouts
 
-import net.jami.Models 1.1
 import net.jami.Adapters 1.1
 import net.jami.Constants 1.1
+import net.jami.Enums 1.1
+import net.jami.Models 1.1
 
 import "../../commoncomponents"
 
@@ -175,10 +176,20 @@ Rectangle {
 
             preferredSize: startBar.height
 
+            visible: UtilsAdapter.getAppValue(Settings.EnableExperimentalSwarm)
+
             source: smartListLayout.visible ? JamiResources.create_swarm_svg : JamiResources.round_close_24dp_svg
             toolTipText: smartListLayout.visible ? JamiStrings.startASwarm : JamiStrings.cancel
 
             onClicked: createSwarmClicked()
+
+            Connections {
+                target: UtilsAdapter
+
+                function onShowExperimentalSwarm() {
+                    startConversation.visible = UtilsAdapter.getAppValue(Settings.EnableExperimentalSwarm)
+                }
+            }
         }
     }
 
diff --git a/src/settingsview/components/TroubleshootSettings.qml b/src/settingsview/components/TroubleshootSettings.qml
index 91175d7ba..bb6cd1a7a 100644
--- a/src/settingsview/components/TroubleshootSettings.qml
+++ b/src/settingsview/components/TroubleshootSettings.qml
@@ -20,9 +20,10 @@ import QtQuick
 import QtQuick.Controls
 import QtQuick.Layouts
 
-import net.jami.Models 1.1
 import net.jami.Adapters 1.1
 import net.jami.Constants 1.1
+import net.jami.Enums 1.1
+import net.jami.Models 1.1
 
 import "../../commoncomponents"
 import "../js/logviewwindowcreation.js" as LogViewWindowCreation
@@ -83,4 +84,22 @@ ColumnLayout {
             }
         }
     }
+
+    ToggleSwitch {
+        id: checkboxSwarm
+
+        Layout.fillWidth: true
+        Layout.leftMargin: JamiTheme.preferredMarginSize
+
+        checked: UtilsAdapter.getAppValue(Settings.EnableExperimentalSwarm)
+
+        labelText: JamiStrings.experimentalSwarm
+        fontPointSize: JamiTheme.settingsFontSize
+
+        tooltipText: JamiStrings.experimentalSwarmTooltip
+
+        onSwitchToggled: {
+            UtilsAdapter.setAppValue(Settings.Key.EnableExperimentalSwarm, checked)
+        }
+    }
 }
diff --git a/src/utilsadapter.cpp b/src/utilsadapter.cpp
index 4269eed44..15e044634 100644
--- a/src/utilsadapter.cpp
+++ b/src/utilsadapter.cpp
@@ -365,6 +365,8 @@ UtilsAdapter::setAppValue(const Settings::Key key, const QVariant& value)
     // If we change the lang preference, reload the translations
     if (key == Settings::Key::LANG)
         settingsManager_->loadTranslations();
+    else if (key == Settings::Key::EnableExperimentalSwarm)
+        Q_EMIT showExperimentalSwarm();
 }
 
 QString
diff --git a/src/utilsadapter.h b/src/utilsadapter.h
index d13a8afd9..8d520a07a 100644
--- a/src/utilsadapter.h
+++ b/src/utilsadapter.h
@@ -110,6 +110,7 @@ public:
 
 Q_SIGNALS:
     void debugMessageReceived(const QString& message);
+    void showExperimentalSwarm();
 
 private:
     QClipboard* clipboard_;
-- 
GitLab