diff --git a/assets/languages/de.ts b/assets/languages/de.ts index d83deec54..bf19c9540 100644 --- a/assets/languages/de.ts +++ b/assets/languages/de.ts @@ -1230,6 +1230,10 @@ Klicken Sie hier: <a href="%1">%1</a> contactsEnabledLabel + + outgoingCallEnabledLabel + + SettingsNetwork diff --git a/assets/languages/en.ts b/assets/languages/en.ts index 337552b94..9248799ee 100644 --- a/assets/languages/en.ts +++ b/assets/languages/en.ts @@ -1232,6 +1232,10 @@ your friend's SIP address or username. muteMicrophoneEnabledLabel Enable mute microphone + + outgoingCallEnabledLabel + Enable outgoing call + SettingsNetwork diff --git a/assets/languages/fr_FR.ts b/assets/languages/fr_FR.ts index f33007c77..31b66d7b2 100644 --- a/assets/languages/fr_FR.ts +++ b/assets/languages/fr_FR.ts @@ -1230,6 +1230,10 @@ Cliquez ici : <a href="%1">%1</a> contactsEnabledLabel Activer les contacts + + outgoingCallEnabledLabel + Activer les appels sortants + SettingsNetwork diff --git a/assets/languages/ja.ts b/assets/languages/ja.ts index 4b6aea68b..da9a43cbe 100644 --- a/assets/languages/ja.ts +++ b/assets/languages/ja.ts @@ -1227,6 +1227,10 @@ contactsEnabledLabel + + outgoingCallEnabledLabel + + SettingsNetwork diff --git a/assets/languages/lt.ts b/assets/languages/lt.ts index 3a00a3cbd..c998f1cd8 100644 --- a/assets/languages/lt.ts +++ b/assets/languages/lt.ts @@ -1232,6 +1232,10 @@ Tiesiog, įveskite savo draugo SIP adresą ar naudotojo vardą. contactsEnabledLabel + + outgoingCallEnabledLabel + + SettingsNetwork diff --git a/assets/languages/pt_BR.ts b/assets/languages/pt_BR.ts index 67a3802e1..34f58a1ef 100644 --- a/assets/languages/pt_BR.ts +++ b/assets/languages/pt_BR.ts @@ -1232,6 +1232,10 @@ o endereço SIP ou nome de usuário do seu amigo. contactsEnabledLabel + + outgoingCallEnabledLabel + + SettingsNetwork diff --git a/assets/languages/ru.ts b/assets/languages/ru.ts index 396db1001..43066637b 100644 --- a/assets/languages/ru.ts +++ b/assets/languages/ru.ts @@ -1230,6 +1230,10 @@ contactsEnabledLabel + + outgoingCallEnabledLabel + + SettingsNetwork diff --git a/assets/languages/sv.ts b/assets/languages/sv.ts index 0583aa709..47c356948 100644 --- a/assets/languages/sv.ts +++ b/assets/languages/sv.ts @@ -1229,6 +1229,10 @@ Klicka här: <a href="%1">%1</a> contactsEnabledLabel + + outgoingCallEnabledLabel + + SettingsNetwork diff --git a/assets/languages/tr.ts b/assets/languages/tr.ts index 56eb318b2..045bc75f5 100644 --- a/assets/languages/tr.ts +++ b/assets/languages/tr.ts @@ -1232,6 +1232,10 @@ arkadaşınızın SIP adresini veya kullanıcı adını girin. contactsEnabledLabel + + outgoingCallEnabledLabel + + SettingsNetwork diff --git a/src/components/settings/SettingsModel.cpp b/src/components/settings/SettingsModel.cpp index df8f211df..be2f667d4 100644 --- a/src/components/settings/SettingsModel.cpp +++ b/src/components/settings/SettingsModel.cpp @@ -281,6 +281,17 @@ void SettingsModel::setAutoAnswerVideoStatus (bool status) { // ----------------------------------------------------------------------------- +bool SettingsModel::getOutgoingCallEnabled () const { + return !!mConfig->getInt(UiSection, "outgoing_call_enabled", 1); +} + +void SettingsModel::setOutgoingCallEnabled (bool status) { + mConfig->setInt(UiSection, "outgoing_call_enabled", status); + emit outgoingCallEnabledChanged(status); +} + +// ----------------------------------------------------------------------------- + bool SettingsModel::getCallRecorderEnabled () const { return !!mConfig->getInt(UiSection, "call_recorder_enabled", 1); } diff --git a/src/components/settings/SettingsModel.hpp b/src/components/settings/SettingsModel.hpp index 8ae4dca95..7cec093f7 100644 --- a/src/components/settings/SettingsModel.hpp +++ b/src/components/settings/SettingsModel.hpp @@ -69,6 +69,8 @@ class SettingsModel : public QObject { Q_PROPERTY(bool autoAnswerVideoStatus READ getAutoAnswerVideoStatus WRITE setAutoAnswerVideoStatus NOTIFY autoAnswerVideoStatusChanged); Q_PROPERTY(int autoAnswerDelay READ getAutoAnswerDelay WRITE setAutoAnswerDelay NOTIFY autoAnswerDelayChanged); + Q_PROPERTY(bool outgoingCallEnabled READ getOutgoingCallEnabled WRITE setOutgoingCallEnabled NOTIFY outgoingCallEnabledChanged); + Q_PROPERTY(bool callRecorderEnabled READ getCallRecorderEnabled WRITE setCallRecorderEnabled NOTIFY callRecorderEnabledChanged); Q_PROPERTY(bool muteMicrophoneEnabled READ getMuteMicrophoneEnabled WRITE setMuteMicrophoneEnabled NOTIFY muteMicrophoneEnabledChanged); @@ -220,6 +222,9 @@ public: int getAutoAnswerDelay () const; void setAutoAnswerDelay (int delay); + bool getOutgoingCallEnabled () const; + void setOutgoingCallEnabled (bool status); + bool getCallRecorderEnabled () const; void setCallRecorderEnabled (bool status); @@ -391,6 +396,8 @@ signals: void autoAnswerVideoStatusChanged (bool status); void autoAnswerDelayChanged (int delay); + void outgoingCallEnabledChanged (bool status); + void callRecorderEnabledChanged (bool status); void muteMicrophoneEnabledChanged (bool status); diff --git a/ui/modules/Linphone/SmartSearchBar/SmartSearchBar.qml b/ui/modules/Linphone/SmartSearchBar/SmartSearchBar.qml index 7ebf490d2..662280133 100644 --- a/ui/modules/Linphone/SmartSearchBar/SmartSearchBar.qml +++ b/ui/modules/Linphone/SmartSearchBar/SmartSearchBar.qml @@ -43,13 +43,14 @@ SearchBox { searchBox.closeMenu() searchBox.launchVideoCall(entry.sipAddress) }, - visible: SettingsModel.videoSupported + visible: SettingsModel.videoSupported && SettingsModel.outgoingCallEnabled }, { icon: 'call', handler: function (entry) { searchBox.closeMenu() searchBox.launchCall(entry.sipAddress) - } + }, + visible: SettingsModel.outgoingCallEnabled }, { icon: SettingsModel.chatEnabled ? 'chat' : 'history', handler: function (entry) { diff --git a/ui/views/App/Calls/CallsWindow.qml b/ui/views/App/Calls/CallsWindow.qml index 20f4c0129..d6e844ee6 100644 --- a/ui/views/App/Calls/CallsWindow.qml +++ b/ui/views/App/Calls/CallsWindow.qml @@ -88,6 +88,8 @@ Window { Layout.fillWidth: true Layout.preferredHeight: CallsWindowStyle.callsList.header.height + visible: SettingsModel.outgoingCallEnabled || SettingsModel.conferenceEnabled + LinearGradient { anchors.fill: parent @@ -111,6 +113,7 @@ Window { ActionButton { icon: 'new_call' + visible: SettingsModel.outgoingCallEnabled onClicked: Logic.openCallSipAddress() } diff --git a/ui/views/App/Main/Contacts.qml b/ui/views/App/Main/Contacts.qml index 4d96418cf..b9f8ea95c 100644 --- a/ui/views/App/Main/Contacts.qml +++ b/ui/views/App/Main/Contacts.qml @@ -132,13 +132,15 @@ ColumnLayout { ActionButton { icon: 'video_call' - visible: SettingsModel.videoSupported + visible: SettingsModel.videoSupported && SettingsModel.outgoingCallEnabled onClicked: actions.itemAt(0).open() } ActionButton { icon: 'call' + visible: SettingsModel.outgoingCallEnabled + onClicked: actions.itemAt(1).open() } diff --git a/ui/views/App/Main/Conversation.qml b/ui/views/App/Main/Conversation.qml index 0b8b249ee..6c545b7a3 100644 --- a/ui/views/App/Main/Conversation.qml +++ b/ui/views/App/Main/Conversation.qml @@ -75,13 +75,15 @@ ColumnLayout { ActionButton { icon: 'video_call' - visible: SettingsModel.videoSupported + visible: SettingsModel.videoSupported && SettingsModel.outgoingCallEnabled onClicked: CallsListModel.launchVideoCall(conversation.sipAddress) } ActionButton { icon: 'call' + visible: SettingsModel.outgoingCallEnabled + onClicked: CallsListModel.launchAudioCall(conversation.sipAddress) } } diff --git a/ui/views/App/Settings/SettingsCallsChat.qml b/ui/views/App/Settings/SettingsCallsChat.qml index 145b86621..5e555d439 100644 --- a/ui/views/App/Settings/SettingsCallsChat.qml +++ b/ui/views/App/Settings/SettingsCallsChat.qml @@ -101,6 +101,20 @@ TabContainer { } } + FormLine { + visible: SettingsModel.developerSettingsEnabled + + FormGroup { + label: qsTr('outgoingCallEnabledLabel') + + Switch { + checked: SettingsModel.outgoingCallEnabled + + onClicked: SettingsModel.outgoingCallEnabled = !checked + } + } + } + FormLine { visible: SettingsModel.developerSettingsEnabled