diff --git a/src/constant/JamiStrings.qml b/src/constant/JamiStrings.qml index dfc4c83d69471cc21064d431f66d332500096252..333c60200996029f3a1abed43da00ddf1c5fb7b1 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 3c60c2435a699e57b28f265221bd9371e770fe2c..bc908bd4e3535353c8d4ff37047f5d6c5e42b2c4 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 7b5d9efca26e5f753c70a1da3d710aa033a98dc3..9f0e3fb847763cfcc950910f633962bc28fd6ff8 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 a5156c837074126b5a44aad80476d3f752143040..3d774181031ac953585717cc1ac621ef6e07ae76 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