From e4af2bef7eb9a5c4f225dc6ccd4f955ad3ca41b0 Mon Sep 17 00:00:00 2001
From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com>
Date: Thu, 12 Nov 2020 13:49:53 -0500
Subject: [PATCH] settings: add auto registration after expired option

Change-Id: Ib29e29f2d61d5684154c0714b5b3d656f99ddcf5
---
 src/constant/JamiStrings.qml                       |  1 +
 src/settingsadapter.cpp                            | 14 ++++++++++++++
 src/settingsadapter.h                              |  2 ++
 .../components/AdvancedConnectivitySettings.qml    | 13 +++++++++++++
 4 files changed, 30 insertions(+)

diff --git a/src/constant/JamiStrings.qml b/src/constant/JamiStrings.qml
index 8554b84c3..07e795ba7 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 60957fb8b..e81c45f36 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 d1b216d20..405b73854 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 bd12ab347..1ea4164e7 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
-- 
GitLab