diff --git a/linphone-desktop/assets/languages/en.ts b/linphone-desktop/assets/languages/en.ts
index 94941a1de..cdb2604ae 100644
--- a/linphone-desktop/assets/languages/en.ts
+++ b/linphone-desktop/assets/languages/en.ts
@@ -610,6 +610,14 @@ Server url not configured.
urlLabel
URL
+
+ remoteProvisioningError
+ Unable to set this remote provisioning uri.
+
+
+ remoteProvisioningUpdateDescription
+ It's necessary to restart the application. Do you want to restart now?
+
FileMessage
diff --git a/linphone-desktop/assets/languages/fr.ts b/linphone-desktop/assets/languages/fr.ts
index 221098897..29bc22cb8 100644
--- a/linphone-desktop/assets/languages/fr.ts
+++ b/linphone-desktop/assets/languages/fr.ts
@@ -610,6 +610,14 @@ Url du serveur non configurée.
urlLabel
URL
+
+ remoteProvisioningError
+ Impossible d'utiliser cette URL de configuration.
+
+
+ remoteProvisioningUpdateDescription
+ Voulez-vous redémarrer maintenant pour prendre en compte ces modifications ?
+
FileMessage
diff --git a/linphone-desktop/src/components/settings/SettingsModel.cpp b/linphone-desktop/src/components/settings/SettingsModel.cpp
index ad7862c61..b2a774af4 100644
--- a/linphone-desktop/src/components/settings/SettingsModel.cpp
+++ b/linphone-desktop/src/components/settings/SettingsModel.cpp
@@ -645,3 +645,16 @@ void SettingsModel::setSavedVideosFolder (const QString &folder) {
mConfig->setString(UI_SECTION, "saved_videos_folder", ::Utils::qStringToLinphoneString(_folder));
emit savedVideosFolderChanged(_folder);
}
+
+// -----------------------------------------------------------------------------
+
+QString SettingsModel::getRemoteProvisioning () const {
+ return ::Utils::linphoneStringToQString(CoreManager::getInstance()->getCore()->getProvisioningUri());
+}
+
+void SettingsModel::setRemoteProvisioning (const QString &remoteProvisioning) {
+ if (!CoreManager::getInstance()->getCore()->setProvisioningUri(::Utils::qStringToLinphoneString(remoteProvisioning)))
+ emit remoteProvisioningChanged(remoteProvisioning);
+ else
+ emit remoteProvisioningNotChanged(remoteProvisioning);
+}
diff --git a/linphone-desktop/src/components/settings/SettingsModel.hpp b/linphone-desktop/src/components/settings/SettingsModel.hpp
index ce3161df5..3b11d2340 100644
--- a/linphone-desktop/src/components/settings/SettingsModel.hpp
+++ b/linphone-desktop/src/components/settings/SettingsModel.hpp
@@ -111,6 +111,8 @@ class SettingsModel : public QObject {
// Misc. ---------------------------------------------------------------------
+ Q_PROPERTY(QString remoteProvisioning READ getRemoteProvisioning WRITE setRemoteProvisioning NOTIFY remoteProvisioningChanged);
+
Q_PROPERTY(QString savedScreenshotsFolder READ getSavedScreenshotsFolder WRITE setSavedScreenshotsFolder NOTIFY savedScreenshotsFolderChanged);
Q_PROPERTY(QString savedVideosFolder READ getSavedVideosFolder WRITE setSavedVideosFolder NOTIFY savedVideosFolderChanged);
@@ -262,6 +264,9 @@ public:
QString getSavedVideosFolder () const;
void setSavedVideosFolder (const QString &folder);
+ QString getRemoteProvisioning () const;
+ void setRemoteProvisioning (const QString &remoteProvisioning);
+
// ---------------------------------------------------------------------------
static const std::string UI_SECTION;
@@ -335,6 +340,9 @@ signals:
void savedScreenshotsFolderChanged (const QString &folder);
void savedVideosFolderChanged (const QString &folder);
+ void remoteProvisioningChanged (const QString &remoteProvisioning);
+ void remoteProvisioningNotChanged (const QString &remoteProvisioning);
+
private:
std::shared_ptr mConfig;
};
diff --git a/linphone-desktop/ui/views/App/Main/Assistant/FetchRemoteConfiguration.qml b/linphone-desktop/ui/views/App/Main/Assistant/FetchRemoteConfiguration.qml
index e00c4d657..3833c4f98 100644
--- a/linphone-desktop/ui/views/App/Main/Assistant/FetchRemoteConfiguration.qml
+++ b/linphone-desktop/ui/views/App/Main/Assistant/FetchRemoteConfiguration.qml
@@ -1,13 +1,13 @@
+import QtQuick 2.7
+
import Common 1.0
import Linphone 1.0
+import Utils 1.0
// =============================================================================
AssistantAbstractView {
- mainAction: (function () {
- App.restart()
- })
-
+ mainAction: requestBlock.execute
mainActionEnabled: url.text.length > 0
mainActionLabel: qsTr('confirmAction')
@@ -15,18 +15,55 @@ AssistantAbstractView {
// ---------------------------------------------------------------------------
- Form {
+ Connections {
+ target: SettingsModel
+
+ onRemoteProvisioningChanged: {
+ requestBlock.stop('')
+
+ window.detachVirtualWindow()
+ window.attachVirtualWindow(Utils.buildDialogUri('ConfirmDialog'), {
+ descriptionText: qsTr('remoteProvisioningUpdateDescription'),
+ }, function (status) {
+ if (status) {
+ App.restart()
+ } else {
+ window.setView('Home')
+ }
+ })
+ }
+
+ onRemoteProvisioningNotChanged: requestBlock.stop(qsTr('remoteProvisioningError'))
+ }
+
+ // ---------------------------------------------------------------------------
+
+ Column {
anchors.fill: parent
- orientation: Qt.Vertical
- FormLine {
- FormGroup {
- label: qsTr('urlLabel')
+ Form {
+ orientation: Qt.Vertical
+ width: parent.width
- TextField {
- id: url
+ FormLine {
+ FormGroup {
+ label: qsTr('urlLabel')
+
+ TextField {
+ id: url
+ }
}
}
}
+
+ RequestBlock {
+ id: requestBlock
+
+ action: (function () {
+ SettingsModel.remoteProvisioning = url.text
+ })
+
+ width: parent.width
+ }
}
}