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