diff --git a/src/constant/JamiStrings.qml b/src/constant/JamiStrings.qml index 8554b84c3464ea0b8c4d39077c5eee97423c77f2..07e795ba74c8b78ff6cf022c618ebac15b1932e2 100644 --- a/src/constant/JamiStrings.qml +++ b/src/constant/JamiStrings.qml @@ -92,6 +92,7 @@ Item { // AdvancedConnectivitySettings property string connectivity: qsTr("Connectivity") + property string autoRegistration: qsTr("Auto Registration After Expired") property string registrationTimeOut: qsTr("Registration expire timeout (seconds)") property string networkInterface: qsTr("Network interface") property string useUPnP: qsTr("Use UPnP") diff --git a/src/settingsadapter.cpp b/src/settingsadapter.cpp index 60957fb8b578eea05c4ece1872c67f1ae849c692..e81c45f3684d8a91c186330897f5432a6e9f439d 100644 --- a/src/settingsadapter.cpp +++ b/src/settingsadapter.cpp @@ -318,6 +318,12 @@ SettingsAdapter::getAccountConfig_Password() return getAccountConfig().password; } +bool +SettingsAdapter::getAccountConfig_KeepAliveEnabled() +{ + return getAccountConfig().keepAliveEnabled; +} + QString SettingsAdapter::getAccountConfig_RouteSet() { @@ -656,6 +662,14 @@ SettingsAdapter::setEnableProxy(bool state) LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps); } +void +SettingsAdapter::setKeepAliveEnabled(bool state) +{ + auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId()); + confProps.keepAliveEnabled = state; + LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps); +} + void SettingsAdapter::setUseUPnP(bool state) { diff --git a/src/settingsadapter.h b/src/settingsadapter.h index d1b216d209004cc6dd657d5d19ce870db1d446fe..405b7385407293b0f203bb454c8a3369fcd69347 100644 --- a/src/settingsadapter.h +++ b/src/settingsadapter.h @@ -108,6 +108,7 @@ public: Q_INVOKABLE QString getAccountConfig_Hostname(); Q_INVOKABLE QString getAccountConfig_Password(); + Q_INVOKABLE bool getAccountConfig_KeepAliveEnabled(); Q_INVOKABLE QString getAccountConfig_RouteSet(); Q_INVOKABLE QString getAccountConfig_ProxyServer(); Q_INVOKABLE bool getAccountConfig_ProxyEnabled(); @@ -175,6 +176,7 @@ public: Q_INVOKABLE void setAutoAnswerCalls(bool state); Q_INVOKABLE void setEnableRingtone(bool state); Q_INVOKABLE void setEnableProxy(bool state); + Q_INVOKABLE void setKeepAliveEnabled(bool state); Q_INVOKABLE void setUseUPnP(bool state); Q_INVOKABLE void setUseTURN(bool state); Q_INVOKABLE void setUseSTUN(bool state); diff --git a/src/settingsview/components/AdvancedConnectivitySettings.qml b/src/settingsview/components/AdvancedConnectivitySettings.qml index bd12ab3474aba27c5694c2f200b830336f1ee81e..1ea4164e77d7ce400191f426caee37e2940068db 100644 --- a/src/settingsview/components/AdvancedConnectivitySettings.qml +++ b/src/settingsview/components/AdvancedConnectivitySettings.qml @@ -36,6 +36,7 @@ ColumnLayout { property bool isSIP function updateConnectivityAccountInfos() { + autoRegistrationAfterExpired.checked = SettingsAdapter.getAccountConfig_KeepAliveEnabled() registrationExpireTimeoutSpinBox.setValue(SettingsAdapter.getAccountConfig_Registration_Expire()) networkInterfaceSpinBox.setValue(SettingsAdapter.getAccountConfig_Localport()) checkBoxUPnP.checked = SettingsAdapter.getAccountConfig_UpnpEnabled() @@ -64,6 +65,18 @@ ColumnLayout { Layout.fillWidth: true Layout.leftMargin: JamiTheme.preferredMarginSize + ToggleSwitch { + id: autoRegistrationAfterExpired + + Layout.fillWidth: true + + visible: isSIP + labelText: JamiStrings.autoRegistration + fontPointSize: JamiTheme.settingsFontSize + + onSwitchToggled: SettingsAdapter.setKeepAliveEnabled(checked) + } + SettingSpinBox { id: registrationExpireTimeoutSpinBox visible: isSIP