From cdcf43cc6a610a37b4bdf5ac960b4f0391fded66 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Thu, 23 Jul 2020 14:51:47 -0400
Subject: [PATCH] settings: add rendez-vous option

Change-Id: Ifa2a4502d9eae2cd700de47ae0561d6728ba7a50
---
 src/calladapter.cpp                               | 11 +++++------
 src/settingsadaptor.cpp                           | 15 +++++++++++++++
 src/settingsadaptor.h                             |  2 ++
 .../components/AdvancedSettingsView.qml           | 12 ++++++++++++
 4 files changed, 34 insertions(+), 6 deletions(-)

diff --git a/src/calladapter.cpp b/src/calladapter.cpp
index 26ec8c09f..a7980fdff 100644
--- a/src/calladapter.cpp
+++ b/src/calladapter.cpp
@@ -150,7 +150,10 @@ CallAdapter::slotShowIncomingCallView(const QString &accountId, const conversati
         /*
          * Show incoming call page only.
          */
-        emit showIncomingCallPage(accountId, convInfo.uid);
+        auto accountProperties = LRCInstance::accountModel().getAccountConfig(accountId);
+        if (!accountProperties.autoAnswer && !accountProperties.isRendezVous) {
+            emit showIncomingCallPage(accountId, convInfo.uid);
+        }
         return;
     }
 
@@ -165,11 +168,7 @@ CallAdapter::slotShowIncomingCallView(const QString &accountId, const conversati
     } else {
         auto selectedAccountId = LRCInstance::getCurrentAccountInfo().id;
         auto accountProperties = LRCInstance::accountModel().getAccountConfig(selectedAccountId);
-        if (accountProperties.autoAnswer) {
-            /*
-             * TODO: Auto answer
-             */
-        } else {
+        if (!accountProperties.autoAnswer && !accountProperties.isRendezVous) {
             emit showIncomingCallPage(accountId, convInfo.uid);
         }
     }
diff --git a/src/settingsadaptor.cpp b/src/settingsadaptor.cpp
index 471b25f59..f8aa28261 100644
--- a/src/settingsadaptor.cpp
+++ b/src/settingsadaptor.cpp
@@ -380,6 +380,12 @@ SettingsAdaptor::getAccountConfig_DHT_PublicInCalls()
     return getAccountConfig().DHT.PublicInCalls;
 }
 
+bool
+SettingsAdaptor::getAccountConfig_RendezVous()
+{
+    return getAccountConfig().isRendezVous;
+}
+
 bool
 SettingsAdaptor::getAccountConfig_AutoAnswer()
 {
@@ -656,6 +662,15 @@ SettingsAdaptor::setCallsUntrusted(bool state)
     LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
 }
 
+void
+SettingsAdaptor::setIsRendezVous(bool state)
+{
+    auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+    confProps.isRendezVous = state;
+    LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+
 void
 SettingsAdaptor::setAutoAnswerCalls(bool state)
 {
diff --git a/src/settingsadaptor.h b/src/settingsadaptor.h
index eec7784d3..38a655f54 100644
--- a/src/settingsadaptor.h
+++ b/src/settingsadaptor.h
@@ -121,6 +121,7 @@ public:
 
     Q_INVOKABLE bool getAccountConfig_PeerDiscovery();
     Q_INVOKABLE bool getAccountConfig_DHT_PublicInCalls();
+    Q_INVOKABLE bool getAccountConfig_RendezVous();
     Q_INVOKABLE bool getAccountConfig_AutoAnswer();
 
     Q_INVOKABLE QString getAccountConfig_RingNS_Uri();
@@ -177,6 +178,7 @@ public:
 
     Q_INVOKABLE void setAutoConnectOnLocalNetwork(bool state);
     Q_INVOKABLE void setCallsUntrusted(bool state);
+    Q_INVOKABLE void setIsRendezVous(bool state);
     Q_INVOKABLE void setAutoAnswerCalls(bool state);
     Q_INVOKABLE void setEnableRingtone(bool state);
     Q_INVOKABLE void setEnableProxy(bool state);
diff --git a/src/settingsview/components/AdvancedSettingsView.qml b/src/settingsview/components/AdvancedSettingsView.qml
index 0510145d0..93beddbe3 100644
--- a/src/settingsview/components/AdvancedSettingsView.qml
+++ b/src/settingsview/components/AdvancedSettingsView.qml
@@ -34,6 +34,7 @@ ColumnLayout {
         //Call Settings
         checkAutoConnectOnLocalNetwork.checked = ClientWrapper.settingsAdaptor.getAccountConfig_PeerDiscovery()
         checkBoxUntrusted.checked = ClientWrapper.settingsAdaptor.getAccountConfig_DHT_PublicInCalls()
+        checkBoxRdv.checked = ClientWrapper.settingsAdaptor.getAccountConfig_RendezVous()
         checkBoxAutoAnswer.checked = ClientWrapper.settingsAdaptor.getAccountConfig_AutoAnswer()
         checkBoxCustomRingtone.checked = ClientWrapper.settingsAdaptor.getAccountConfig_Ringtone_RingtoneEnabled()
 
@@ -380,6 +381,17 @@ ColumnLayout {
                     }
                 }
             }
+
+            ToggleSwitch {
+                id: checkBoxRdv
+
+                labelText: qsTr("(Experimental) Rendez-vous: turn your account into a conference room")
+                fontPointSize: 10
+
+                onSwitchToggled: {
+                    ClientWrapper.settingsAdaptor.setIsRendezVous(checked)
+                }
+            }
         }
     }
 
-- 
GitLab