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 + } } }