From ab5bea1001569d8382505a4e283e9d1a54cdfb4f Mon Sep 17 00:00:00 2001
From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com>
Date: Wed, 17 Mar 2021 13:16:20 -0400
Subject: [PATCH] settings: add account preference of setting all moderators
 mode

Gitlab: #319

Change-Id: I39fe050d3b9d509f8709528e1c8fcf6acf7e7ca3
---
 src/constant/JamiStrings.qml                     |  1 +
 src/settingsadapter.cpp                          | 16 ++++++++++++++--
 src/settingsadapter.h                            |  2 ++
 .../components/AdvancedCallSettings.qml          | 11 +++++++++++
 4 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/src/constant/JamiStrings.qml b/src/constant/JamiStrings.qml
index e52dba51a..e08372c31 100644
--- a/src/constant/JamiStrings.qml
+++ b/src/constant/JamiStrings.qml
@@ -419,6 +419,7 @@ Item {
     property string conferenceModeration: qsTr("Conference moderation")
     property string defaultModerators: qsTr("Default moderators")
     property string enableLocalModerators: qsTr("Enable local moderators")
+    property string enableAllModerators: qsTr("Make all participants moderators")
     property string addDefaultModerator: qsTr("Add default moderator")
     property string removeDefaultModerator: qsTr("Remove default moderator")
 
diff --git a/src/settingsadapter.cpp b/src/settingsadapter.cpp
index ab7b57503..55429b7db 100644
--- a/src/settingsadapter.cpp
+++ b/src/settingsadapter.cpp
@@ -1014,7 +1014,13 @@ SettingsAdapter::setDefaultModerator(const QString& accountId,
                                      const QString& peerURI,
                                      const bool& state)
 {
-    return lrcInstance_->accountModel().setDefaultModerator(accountId, peerURI, state);
+    lrcInstance_->accountModel().setDefaultModerator(accountId, peerURI, state);
+}
+
+void
+SettingsAdapter::setAllModeratorsEnabled(const QString& accountId, bool enabled)
+{
+    lrcInstance_->accountModel().setAllModerators(accountId, enabled);
 }
 
 QStringList
@@ -1026,7 +1032,7 @@ SettingsAdapter::getDefaultModerators(const QString& accountId)
 void
 SettingsAdapter::enableLocalModerators(const QString& accountId, const bool& isModEnabled)
 {
-    return lrcInstance_->accountModel().enableLocalModerators(accountId, isModEnabled);
+    lrcInstance_->accountModel().enableLocalModerators(accountId, isModEnabled);
 }
 
 bool
@@ -1034,3 +1040,9 @@ SettingsAdapter::isLocalModeratorsEnabled(const QString& accountId)
 {
     return lrcInstance_->accountModel().isLocalModeratorsEnabled(accountId);
 }
+
+bool
+SettingsAdapter::isAllModeratorsEnabled(const QString& accountId)
+{
+    return lrcInstance_->accountModel().isAllModerators(accountId);
+}
diff --git a/src/settingsadapter.h b/src/settingsadapter.h
index 25063b445..e712cb7d8 100644
--- a/src/settingsadapter.h
+++ b/src/settingsadapter.h
@@ -220,8 +220,10 @@ public:
     Q_INVOKABLE void setDefaultModerator(const QString& accountID,
                                          const QString& peerURI,
                                          const bool& state);
+    Q_INVOKABLE void setAllModeratorsEnabled(const QString& accountId, bool enabled);
     Q_INVOKABLE QStringList getDefaultModerators(const QString& accId);
     Q_INVOKABLE void enableLocalModerators(const QString& accountID, const bool& isModEnabled);
     Q_INVOKABLE bool isLocalModeratorsEnabled(const QString& accountId);
+    Q_INVOKABLE bool isAllModeratorsEnabled(const QString& accountId);
 };
 Q_DECLARE_METATYPE(SettingsAdapter*)
diff --git a/src/settingsview/components/AdvancedCallSettings.qml b/src/settingsview/components/AdvancedCallSettings.qml
index d7436af4d..d3032e45a 100644
--- a/src/settingsview/components/AdvancedCallSettings.qml
+++ b/src/settingsview/components/AdvancedCallSettings.qml
@@ -43,6 +43,7 @@ ColumnLayout {
         checkBoxRdv.checked = SettingsAdapter.getAccountConfig_RendezVous()
         checkBoxAutoAnswer.checked = SettingsAdapter.getAccountConfig_AutoAnswer()
         checkBoxCustomRingtone.checked = SettingsAdapter.getAccountConfig_Ringtone_RingtoneEnabled()
+        checkboxAllModerators.checked = SettingsAdapter.isAllModeratorsEnabled(AccountAdapter.currentAccountId)
 
         btnRingtone.setEnabled(SettingsAdapter.getAccountConfig_Ringtone_RingtoneEnabled())
         btnRingtone.setText(UtilsAdapter.toFileInfoName(SettingsAdapter.getAccountConfig_Ringtone_RingtonePath()))
@@ -236,5 +237,15 @@ ColumnLayout {
                 ContactPickerCreation.openContactPicker()
             }
         }
+
+        ToggleSwitch {
+            id: checkboxAllModerators
+
+            labelText: JamiStrings.enableAllModerators
+            fontPointSize: JamiTheme.settingsFontSize
+
+            onSwitchToggled: SettingsAdapter.setAllModeratorsEnabled(
+                                 AccountAdapter.currentAccountId, checked)
+        }
     }
 }
-- 
GitLab