From 37c45c27a5499e31a9f2db60f1d086986817c5ce Mon Sep 17 00:00:00 2001
From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com>
Date: Fri, 18 Jun 2021 16:19:17 -0400
Subject: [PATCH] settings: add allow IP auto rewrite option

Change-Id: I09c24f1185b37c728eb9ce1968cca21a99b79452
---
 src/constant/JamiStrings.qml                  |  1 +
 src/settingsadapter.cpp                       | 15 +++++++++++++
 src/settingsadapter.h                         |  2 ++
 .../AdvancedPublicAddressSettings.qml         | 21 +++++++++++++++++++
 4 files changed, 39 insertions(+)

diff --git a/src/constant/JamiStrings.qml b/src/constant/JamiStrings.qml
index dfc4c83d6..333c60200 100644
--- a/src/constant/JamiStrings.qml
+++ b/src/constant/JamiStrings.qml
@@ -115,6 +115,7 @@ Item {
     property string stunAdress: qsTr("STUN address")
 
     // AdvancedPublicAddressSettings
+    property string allowIPAutoRewrite: qsTr("Allow IP Auto Rewrite")
     property string publicAddress: qsTr("Public address")
     property string useCustomAddress: qsTr("Use custom address and port")
     property string address: qsTr("Address")
diff --git a/src/settingsadapter.cpp b/src/settingsadapter.cpp
index 3c60c2435..bc908bd4e 100644
--- a/src/settingsadapter.cpp
+++ b/src/settingsadapter.cpp
@@ -552,6 +552,12 @@ SettingsAdapter::getAccountConfig_PublishedPort()
     return getAccountConfig().publishedPort;
 }
 
+bool
+SettingsAdapter::getAccountConfig_AllowIPAutoRewrite()
+{
+    return getAccountConfig().allowIPAutoRewrite;
+}
+
 QString
 SettingsAdapter::getAccountConfig_Mailbox()
 {
@@ -762,6 +768,15 @@ SettingsAdapter::setUseCustomAddressAndPort(bool state)
     lrcInstance_->accountModel().setAccountConfig(lrcInstance_->get_currentAccountId(), confProps);
 }
 
+void
+SettingsAdapter::setAllowIPAutoRewrite(bool state)
+{
+    auto confProps = lrcInstance_->accountModel().getAccountConfig(
+        lrcInstance_->get_currentAccountId());
+    confProps.allowIPAutoRewrite = state;
+    lrcInstance_->accountModel().setAccountConfig(lrcInstance_->get_currentAccountId(), confProps);
+}
+
 void
 SettingsAdapter::setNameServer(QString text)
 {
diff --git a/src/settingsadapter.h b/src/settingsadapter.h
index 7b5d9efca..9f0e3fb84 100644
--- a/src/settingsadapter.h
+++ b/src/settingsadapter.h
@@ -150,6 +150,7 @@ public:
     Q_INVOKABLE bool getAccountConfig_PublishedSameAsLocal();
     Q_INVOKABLE QString getAccountConfig_PublishedAddress();
     Q_INVOKABLE int getAccountConfig_PublishedPort();
+    Q_INVOKABLE bool getAccountConfig_AllowIPAutoRewrite();
 
     Q_INVOKABLE QString getAccountConfig_Mailbox();
 
@@ -178,6 +179,7 @@ public:
     Q_INVOKABLE void setVerifyCertificatesClient(bool state);
     Q_INVOKABLE void setRequireCertificatesIncomingTLS(bool state);
     Q_INVOKABLE void setUseCustomAddressAndPort(bool state);
+    Q_INVOKABLE void setAllowIPAutoRewrite(bool state);
 
     Q_INVOKABLE void setNameServer(QString text);
     Q_INVOKABLE void setProxyAddress(QString text);
diff --git a/src/settingsview/components/AdvancedPublicAddressSettings.qml b/src/settingsview/components/AdvancedPublicAddressSettings.qml
index a5156c837..3d7741810 100644
--- a/src/settingsview/components/AdvancedPublicAddressSettings.qml
+++ b/src/settingsview/components/AdvancedPublicAddressSettings.qml
@@ -35,9 +35,16 @@ ColumnLayout {
     property int itemWidth
 
     function updatePublicAddressAccountInfos() {
+        checkBoxAllowIPAutoRewrite.checked = SettingsAdapter.getAccountConfig_AllowIPAutoRewrite()
         checkBoxCustomAddressPort.checked = !SettingsAdapter.getAccountConfig_PublishedSameAsLocal()
         lineEditSIPCustomAddress.setText(SettingsAdapter.getAccountConfig_PublishedAddress())
         customPortSIPSpinBox.setValue(SettingsAdapter.getAccountConfig_PublishedPort())
+
+        if (checkBoxAllowIPAutoRewrite.checked) {
+            checkBoxCustomAddressPort.visible = false
+            lineEditSIPCustomAddress.visible = false
+            customPortSIPSpinBox.visible = false
+        }
     }
 
     Text {
@@ -58,6 +65,20 @@ ColumnLayout {
         Layout.fillWidth: true
         Layout.leftMargin: JamiTheme.preferredMarginSize
 
+        ToggleSwitch {
+            id: checkBoxAllowIPAutoRewrite
+
+            labelText: JamiStrings.allowIPAutoRewrite
+            fontPointSize: JamiTheme.settingsFontSize
+
+            onSwitchToggled: {
+                SettingsAdapter.setAllowIPAutoRewrite(checked)
+                checkBoxCustomAddressPort.visible = !checked
+                lineEditSIPCustomAddress.visible = !checked
+                customPortSIPSpinBox.visible = !checked
+            }
+        }
+
         ToggleSwitch {
             id: checkBoxCustomAddressPort
 
-- 
GitLab