mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 03:18:07 +00:00
Move Call Forward under the save scope in settings
This commit is contained in:
parent
c3b160ec3e
commit
0cf3938dc3
5 changed files with 50 additions and 73 deletions
|
|
@ -146,7 +146,6 @@ SettingsCore::SettingsCore(QObject *parent) : QObject(parent) {
|
|||
INIT_CORE_MEMBER(CallToneIndicationsEnabled, settingsModel)
|
||||
INIT_CORE_MEMBER(CommandLine, settingsModel)
|
||||
INIT_CORE_MEMBER(DisableCommandLine, settingsModel)
|
||||
INIT_CORE_MEMBER(DisableCallForward, settingsModel)
|
||||
INIT_CORE_MEMBER(CallForwardToAddress, settingsModel)
|
||||
|
||||
INIT_CORE_MEMBER(ThemeMainColor, settingsModel)
|
||||
|
|
@ -226,7 +225,7 @@ SettingsCore::SettingsCore(const SettingsCore &settingsCore) {
|
|||
mCallToneIndicationsEnabled = settingsCore.mCallToneIndicationsEnabled;
|
||||
mCommandLine = settingsCore.mCommandLine;
|
||||
mDisableCommandLine = settingsCore.mDisableCommandLine;
|
||||
mDisableCallForward = settingsCore.mDisableCallForward;
|
||||
mCallForwardToAddress = settingsCore.mCallForwardToAddress;
|
||||
|
||||
mDefaultDomain = settingsCore.mDefaultDomain;
|
||||
mShowAccountDevices = settingsCore.mShowAccountDevices;
|
||||
|
|
@ -270,6 +269,12 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
|
|||
mSettingsModelConnection->invokeToCore([this, enabled]() { setIpv6Enabled(enabled); });
|
||||
});
|
||||
|
||||
// Call Forward
|
||||
mSettingsModelConnection->makeConnectToModel(
|
||||
&SettingsModel::callForwardToAddressChanged, [this](const QString address) {
|
||||
mSettingsModelConnection->invokeToCore([this, address]() { setCallForwardToAddress(address); });
|
||||
});
|
||||
|
||||
// Hide FPS
|
||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::hideFpsChanged, [this](const bool hide) {
|
||||
mSettingsModelConnection->invokeToCore([this, hide]() { setHideFps(hide); });
|
||||
|
|
@ -488,10 +493,6 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
|
|||
commandLine, CommandLine)
|
||||
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, bool,
|
||||
disableCommandLine, DisableCommandLine)
|
||||
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, bool,
|
||||
disableCallForward, DisableCallForward)
|
||||
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, QString,
|
||||
callForwardToAddress, CallForwardToAddress)
|
||||
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, QString,
|
||||
themeAboutPictureUrl, ThemeAboutPictureUrl)
|
||||
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, QString,
|
||||
|
|
@ -588,6 +589,7 @@ void SettingsCore::reset(const SettingsCore &settingsCore) {
|
|||
setAutoStart(settingsCore.mAutoStart);
|
||||
setConfigLocale(settingsCore.mConfigLocale);
|
||||
setDownloadFolder(settingsCore.mDownloadFolder);
|
||||
setCallForwardToAddress(settingsCore.mCallForwardToAddress);
|
||||
}
|
||||
|
||||
QString SettingsCore::getConfigPath(const QCommandLineParser &parser) {
|
||||
|
|
@ -661,6 +663,13 @@ void SettingsCore::setAutoStart(bool enabled) {
|
|||
}
|
||||
}
|
||||
|
||||
void SettingsCore::setCallForwardToAddress(QString address) {
|
||||
if (mCallForwardToAddress != address) {
|
||||
mCallForwardToAddress = address;
|
||||
setIsSaved(false);
|
||||
}
|
||||
}
|
||||
|
||||
void SettingsCore::setHideFps(bool hide) {
|
||||
if (mHideFps != hide) {
|
||||
mHideFps = hide;
|
||||
|
|
@ -1160,6 +1169,7 @@ void SettingsCore::writeIntoModel(std::shared_ptr<SettingsModel> model) const {
|
|||
model->setAutoStart(mAutoStart);
|
||||
model->setConfigLocale(mConfigLocale);
|
||||
model->setDownloadFolder(mDownloadFolder);
|
||||
model->setCallForwardToAddress(mCallForwardToAddress);
|
||||
}
|
||||
|
||||
void SettingsCore::writeFromModel(const std::shared_ptr<SettingsModel> &model) {
|
||||
|
|
@ -1242,6 +1252,7 @@ void SettingsCore::writeFromModel(const std::shared_ptr<SettingsModel> &model) {
|
|||
mAutoStart = model->getAutoStart();
|
||||
mConfigLocale = model->getConfigLocale();
|
||||
mDownloadFolder = model->getDownloadFolder();
|
||||
mCallForwardToAddress = model->getCallForwardToAddress();
|
||||
}
|
||||
|
||||
bool SettingsCore::isCheckForUpdateAvailable() const {
|
||||
|
|
|
|||
|
|
@ -62,6 +62,10 @@ public:
|
|||
Q_PROPERTY(QVariantMap playbackDevice READ getPlaybackDevice WRITE setPlaybackDevice NOTIFY playbackDeviceChanged)
|
||||
Q_PROPERTY(QVariantMap ringerDevice READ getRingerDevice WRITE setRingerDevice NOTIFY ringerDeviceChanged)
|
||||
|
||||
// Call Forward
|
||||
Q_PROPERTY(QString callForwardToAddress READ getCallForwardToAddress WRITE setCallForwardToAddress NOTIFY
|
||||
callForwardToAddressChanged)
|
||||
|
||||
// Network
|
||||
Q_PROPERTY(bool ipv6Enabled READ getIpv6Enabled WRITE setIpv6Enabled NOTIFY ipv6EnabledChanged)
|
||||
Q_PROPERTY(bool hideFps READ getHideFps WRITE setHideFps NOTIFY hideFpsChanged)
|
||||
|
|
@ -202,6 +206,13 @@ public:
|
|||
Q_INVOKABLE void closeCallSettings();
|
||||
Q_INVOKABLE void updateMicVolume() const;
|
||||
|
||||
// Call Forward. --------------------------------------------------------------------
|
||||
|
||||
QString getCallForwardToAddress() {
|
||||
return mCallForwardToAddress;
|
||||
}
|
||||
void setCallForwardToAddress(QString address);
|
||||
|
||||
// Network. --------------------------------------------------------------------
|
||||
|
||||
bool getIpv6Enabled() {
|
||||
|
|
@ -277,8 +288,6 @@ public:
|
|||
DECLARE_CORE_GETSET_MEMBER(bool, callToneIndicationsEnabled, CallToneIndicationsEnabled)
|
||||
DECLARE_CORE_GETSET_MEMBER(bool, disableCommandLine, DisableCommandLine)
|
||||
DECLARE_CORE_GETSET_MEMBER(QString, commandLine, CommandLine)
|
||||
DECLARE_CORE_GETSET_MEMBER(bool, disableCallForward, DisableCallForward)
|
||||
DECLARE_CORE_GETSET_MEMBER(QString, callForwardToAddress, CallForwardToAddress)
|
||||
DECLARE_CORE_GET_CONSTANT(QFont, emojiFont, EmojiFont)
|
||||
DECLARE_CORE_GET_CONSTANT(QFont, textMessageFont, TextMessageFont)
|
||||
// Theme
|
||||
|
|
@ -312,6 +321,9 @@ signals:
|
|||
// Network
|
||||
void ipv6EnabledChanged();
|
||||
|
||||
// Call Forward
|
||||
void callForwardToAddressChanged();
|
||||
|
||||
// Advanced
|
||||
void autoStartChanged();
|
||||
void hideFpsChanged();
|
||||
|
|
@ -417,6 +429,9 @@ private:
|
|||
// Network
|
||||
bool mIpv6Enabled;
|
||||
|
||||
// Call Forward
|
||||
QString mCallForwardToAddress;
|
||||
|
||||
// Advanced
|
||||
bool mAutoStart;
|
||||
bool mHideFps;
|
||||
|
|
|
|||
|
|
@ -837,26 +837,13 @@ QString SettingsModel::getDefaultDomain() const {
|
|||
mConfig->getString(SettingsModel::AppSection, "default_domain", "sip.linphone.org"));
|
||||
}
|
||||
|
||||
void SettingsModel::enableCallForward(QString destination) {
|
||||
// TODO implement business logic to activate call forward to destination on PBX via external API (contains voicemail
|
||||
// or a destination).
|
||||
mConfig->setString(UiSection, "call_forward_to_address", Utils::appStringToCoreString(destination));
|
||||
emit callForwardToAddressChanged(getCallForwardToAddress());
|
||||
}
|
||||
|
||||
void SettingsModel::disableCallForward() {
|
||||
// TODO implement business logic to de-activate call forward on PBX via external API
|
||||
mConfig->setString(UiSection, "call_forward_to_address", "");
|
||||
}
|
||||
|
||||
QString SettingsModel::getCallForwardToAddress() const {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
return Utils::coreStringToAppString(mConfig->getString(UiSection, "call_forward_to_address", ""));
|
||||
}
|
||||
|
||||
void SettingsModel::setCallForwardToAddress(const QString &data) {
|
||||
if (data == "") disableCallForward();
|
||||
else enableCallForward(data);
|
||||
mConfig->setString(UiSection, "call_forward_to_address", Utils::appStringToCoreString(data)); // TODO implement BL
|
||||
emit(callForwardToAddressChanged(data));
|
||||
}
|
||||
|
||||
|
|
@ -1139,13 +1126,6 @@ DEFINE_GETSET_CONFIG(SettingsModel,
|
|||
DisableCommandLine,
|
||||
"disable_command_line",
|
||||
false)
|
||||
DEFINE_GETSET_CONFIG(SettingsModel,
|
||||
bool,
|
||||
Bool,
|
||||
disableCallForward,
|
||||
DisableCallForward,
|
||||
"disable_call_forward",
|
||||
true)
|
||||
DEFINE_GETSET_CONFIG_STRING(SettingsModel,
|
||||
themeMainColor,
|
||||
ThemeMainColor,
|
||||
|
|
|
|||
|
|
@ -223,7 +223,6 @@ public:
|
|||
DECLARE_GETSET(bool, usernameOnlyForCardDAVLookupsInCalls, UsernameOnlyForCardDAVLookupsInCalls)
|
||||
DECLARE_GETSET(QString, commandLine, CommandLine)
|
||||
DECLARE_GETSET(bool, disableCommandLine, DisableCommandLine)
|
||||
DECLARE_GETSET(bool, disableCallForward, DisableCallForward)
|
||||
DECLARE_GETSET(QString, callForwardToAddress, CallForwardToAddress)
|
||||
DECLARE_GETSET(QString, chatNotificationSoundPath, ChatNotificationSoundPath)
|
||||
DECLARE_GETSET(QString, themeMainColor, ThemeMainColor)
|
||||
|
|
@ -293,7 +292,6 @@ private:
|
|||
VfsUtils mVfsUtils;
|
||||
#endif
|
||||
|
||||
void enableCallForward(QString destination);
|
||||
void disableCallForward();
|
||||
|
||||
static std::shared_ptr<SettingsModel> gSettingsModel;
|
||||
|
|
|
|||
|
|
@ -9,11 +9,9 @@ import "qrc:/qt/qml/Linphone/view/Control/Tool/Helper/utils.js" as Utils
|
|||
|
||||
AbstractSettingsLayout {
|
||||
id: mainItem
|
||||
width: parent?.width
|
||||
|
||||
property bool enableCallForward: SettingsCpp.callForwardToAddress.length > 0
|
||||
property string localCallForwardToAddress: SettingsCpp.callForwardToAddress
|
||||
|
||||
width: parent?.width
|
||||
|
||||
contentModel: [
|
||||
{
|
||||
|
|
@ -23,44 +21,14 @@ AbstractSettingsLayout {
|
|||
}
|
||||
]
|
||||
|
||||
Connections {
|
||||
target: SettingsCpp
|
||||
function onCallForwardToAddressChanged() {
|
||||
requestTimeOut.stop()
|
||||
UtilsCpp.getMainWindow().closeLoadingPopup()
|
||||
UtilsCpp.showInformationPopup("",
|
||||
SettingsCpp.callForwardToAddress
|
||||
? qsTr("settings_call_forward_activation_success") + (SettingsCpp.callForwardToAddress == "voicemail" ? qsTr("settings_call_forward_to_voicemail") : SettingsCpp.callForwardToAddress)
|
||||
: qsTr("settings_call_forward_deactivation_success")
|
||||
, true)
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: requestTimeOut
|
||||
interval: 10000
|
||||
running: false
|
||||
repeat: false
|
||||
onTriggered: {
|
||||
UtilsCpp.getMainWindow().closeLoadingPopup()
|
||||
UtilsCpp.showInformationPopup("", qsTr("settings_call_forward_address_timeout"), false)
|
||||
}
|
||||
}
|
||||
|
||||
onSave: {
|
||||
if (mainItem.enableCallForward && mainItem.localCallForwardToAddress.length == 0) {
|
||||
if (mainItem.enableCallForward && SettingsCpp.callForwardToAddress.length == 0) {
|
||||
UtilsCpp.getMainWindow().showInformationPopup("", qsTr("settings_call_forward_address_cannot_be_empty"), false)
|
||||
return
|
||||
}
|
||||
requestTimeOut.start()
|
||||
if (!mainItem.enableCallForward && SettingsCpp.callForwardToAddress.length > 0) {
|
||||
UtilsCpp.getMainWindow().showLoadingPopup(qsTr("settings_call_forward_address_progress_disabling") + " ...")
|
||||
SettingsCpp.callForwardToAddress = ""
|
||||
} else if (SettingsCpp.callForwardToAddress != mainItem.localCallForwardToAddress) {
|
||||
UtilsCpp.getMainWindow().showLoadingPopup(qsTr("settings_call_forward_address_progress_enabling")+(mainItem.localCallForwardToAddress === 'voicemail' ? qsTr("settings_call_forward_to_voicemail") : mainItem.localCallForwardToAddress) + " ...")
|
||||
SettingsCpp.callForwardToAddress = mainItem.localCallForwardToAddress
|
||||
}
|
||||
SettingsCpp.save()
|
||||
}
|
||||
onUndo: SettingsCpp.undo()
|
||||
|
||||
// Generic forward parameters
|
||||
/////////////////////////////
|
||||
|
|
@ -76,6 +44,11 @@ AbstractSettingsLayout {
|
|||
subTitleText: qsTr("settings_call_forward_activate_subtitle")
|
||||
propertyName: "enableCallForward"
|
||||
propertyOwner: mainItem
|
||||
onToggled: function () {
|
||||
SettingsCpp.isSaved = false
|
||||
if (!mainItem.enableCallForward)
|
||||
SettingsCpp.callForwardToAddress = ""
|
||||
}
|
||||
}
|
||||
Text {
|
||||
visible: mainItem.enableCallForward
|
||||
|
|
@ -99,7 +72,7 @@ AbstractSettingsLayout {
|
|||
Component.onCompleted: {
|
||||
if (mainItem.enableCallForward) {
|
||||
forwardDestination.currentIndex =
|
||||
(mainItem.localCallForwardToAddress === "voicemail" || mainItem.localCallForwardToAddress.length === 0) ? 0 : 1;
|
||||
(SettingsCpp.callForwardToAddress === "voicemail" || SettingsCpp.callForwardToAddress.length === 0) ? 0 : 1;
|
||||
} else {
|
||||
forwardDestination.currentIndex = 0;
|
||||
}
|
||||
|
|
@ -109,16 +82,16 @@ AbstractSettingsLayout {
|
|||
if (!forwardDestination.isInitialized)
|
||||
return;
|
||||
if (currentIndex == 0)
|
||||
mainItem.localCallForwardToAddress = "voicemail";
|
||||
SettingsCpp.callForwardToAddress = "voicemail";
|
||||
else {
|
||||
mainItem.localCallForwardToAddress = "";
|
||||
SettingsCpp.callForwardToAddress = "";
|
||||
sipInputField.empty();
|
||||
}
|
||||
}
|
||||
onVisibleChanged: {
|
||||
if (visible) {
|
||||
currentIndex = 0
|
||||
mainItem.localCallForwardToAddress = "voicemail";
|
||||
SettingsCpp.callForwardToAddress = "voicemail";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -127,8 +100,8 @@ AbstractSettingsLayout {
|
|||
id: sipInputField
|
||||
visible: mainItem.enableCallForward && forwardDestination.currentIndex == 1
|
||||
Layout.fillWidth: true
|
||||
propertyName: "localCallForwardToAddress"
|
||||
propertyOwner: mainItem
|
||||
propertyName: "callForwardToAddress"
|
||||
propertyOwner: SettingsCpp
|
||||
//: SIP Address
|
||||
title: qsTr("settings_call_forward_sipaddress_title")
|
||||
placeHolder: qsTr("settings_call_forward_sipaddress_placeholder")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue