mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-26 16:28:11 +00:00
only show address for suggestions do not refresh devices if current account is null fix crash add error message on account parameters saved and apply changes on text changed instead of edited (fix #LINQT-1935) fix disable meeting feature setting in wrong thread destroy parameter page when closed (to avoid multiplied connections) fix show/add contact in conversation info
213 lines
8.2 KiB
QML
213 lines
8.2 KiB
QML
import QtCore
|
||
import QtQuick
|
||
import QtQuick.Layouts
|
||
import QtQuick.Controls.Basic as Control
|
||
import QtQuick.Dialogs
|
||
import Linphone
|
||
import SettingsCpp 1.0
|
||
import UtilsCpp
|
||
|
||
AbstractSettingsLayout {
|
||
id: mainItem
|
||
width: parent?.width
|
||
contentModel: [{
|
||
"title": qsTr("settings_title"),
|
||
"subTitle": "",
|
||
"contentComponent": generalParametersComponent
|
||
}, {
|
||
"title": qsTr("settings_account_title"),
|
||
"subTitle": "",
|
||
"contentComponent": advancedParametersComponent
|
||
}]
|
||
|
||
property alias account: mainItem.model
|
||
|
||
onSave: {
|
||
account.core.save()
|
||
}
|
||
onUndo: account.core.undo()
|
||
Connections {
|
||
target: account.core
|
||
function onIsSavedChanged() {
|
||
if (account.core.isSaved) {
|
||
UtilsCpp.showInformationPopup(
|
||
qsTr("information_popup_success_title"),
|
||
//: "Modifications sauvegardés"
|
||
qsTr("contact_editor_saved_changes_toast"), true,
|
||
mainWindow)
|
||
}
|
||
}
|
||
function onSetValueFailed(error) {
|
||
if (error) {
|
||
UtilsCpp.showInformationPopup(
|
||
qsTr("information_popup_error_title"),
|
||
error, false,
|
||
mainWindow)
|
||
}
|
||
}
|
||
}
|
||
|
||
// General parameters
|
||
/////////////////////
|
||
Component {
|
||
id: generalParametersComponent
|
||
ColumnLayout {
|
||
id: column
|
||
Layout.fillWidth: true
|
||
spacing: Math.round(20 * DefaultStyle.dp)
|
||
DecoratedTextField {
|
||
id: mwiServerAddressField
|
||
propertyName: "mwiServerAddress"
|
||
propertyOwnerGui: account
|
||
//: "URI du serveur de messagerie vocale"
|
||
title: qsTr("account_settings_mwi_uri_title")
|
||
Layout.fillWidth: true
|
||
isValid: function (text) {
|
||
return text.length == 0 || !text.endsWith(".")
|
||
} // work around sdk crash when adress ends with .
|
||
toValidate: true
|
||
|
||
Connections {
|
||
target: account.core
|
||
function onMwiServerAddressAddressChanged() {
|
||
if (mwiServerAddressField.text != mwiServerAddressField.propertyOwnerGui.core[mwiServerAddressField.propertyName])
|
||
mwiServerAddressField.text = mwiServerAddressField.propertyOwnerGui.core[mwiServerAddressField.propertyName]
|
||
}
|
||
}
|
||
}
|
||
DecoratedTextField {
|
||
id: voicemailAddressField
|
||
propertyName: "voicemailAddress"
|
||
propertyOwnerGui: account
|
||
//: "URI de messagerie vocale"
|
||
|
||
title: qsTr("account_settings_voicemail_uri_title")
|
||
Layout.fillWidth: true
|
||
toValidate: true
|
||
|
||
Connections {
|
||
target: account.core
|
||
function onVoicemailAddressAddressChanged() {
|
||
if (voicemailAddressField.text != voicemailAddressField.propertyOwnerGui.core[voicemailAddressField.propertyName])
|
||
voicemailAddressField.text = voicemailAddressField.propertyOwnerGui.core[voicemailAddressField.propertyName]
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// Advanced parameters
|
||
/////////////////////
|
||
Component {
|
||
id: advancedParametersComponent
|
||
ColumnLayout {
|
||
Layout.fillWidth: true
|
||
spacing: Math.round(20 * DefaultStyle.dp)
|
||
Text {
|
||
//: "Transport"
|
||
text: qsTr("account_settings_transport_title")
|
||
color: DefaultStyle.main2_600
|
||
font: Typography.p2l
|
||
}
|
||
ComboSetting {
|
||
Layout.fillWidth: true
|
||
Layout.topMargin: Math.round(-15 * DefaultStyle.dp)
|
||
entries: account.core.transports
|
||
propertyName: "transport"
|
||
propertyOwnerGui: account
|
||
}
|
||
DecoratedTextField {
|
||
Layout.fillWidth: true
|
||
//:"URL du serveur mandataire"
|
||
title: qsTr("account_settings_sip_proxy_url_title")
|
||
propertyName: "serverAddress"
|
||
propertyOwnerGui: account
|
||
toValidate: true
|
||
}
|
||
SwitchSetting {
|
||
//: "Serveur mandataire sortant"
|
||
titleText: qsTr("account_settings_outbound_proxy_title")
|
||
propertyName: "outboundProxyEnabled"
|
||
propertyOwnerGui: account
|
||
}
|
||
DecoratedTextField {
|
||
Layout.fillWidth: true
|
||
propertyName: "stunServer"
|
||
propertyOwnerGui: account
|
||
//: "Adresse du serveur STUN"
|
||
title: qsTr("account_settings_stun_server_url_title")
|
||
toValidate: true
|
||
}
|
||
SwitchSetting {
|
||
//: "Activer ICE"
|
||
titleText: qsTr("account_settings_enable_ice_title")
|
||
propertyName: "iceEnabled"
|
||
propertyOwnerGui: account
|
||
}
|
||
SwitchSetting {
|
||
//: "AVPF"
|
||
titleText: qsTr("account_settings_avpf_title")
|
||
propertyName: "avpfEnabled"
|
||
propertyOwnerGui: account
|
||
}
|
||
SwitchSetting {
|
||
//: "Mode bundle"
|
||
titleText: qsTr("account_settings_bundle_mode_title")
|
||
propertyName: "bundleModeEnabled"
|
||
propertyOwnerGui: account
|
||
}
|
||
DecoratedTextField {
|
||
Layout.fillWidth: true
|
||
propertyName: "expire"
|
||
propertyOwnerGui: account
|
||
//: "Expiration (en seconde)"
|
||
title: qsTr("account_settings_expire_title")
|
||
canBeEmpty: false
|
||
isValid: function (text) {
|
||
return !isNaN(Number(text))
|
||
}
|
||
toValidate: true
|
||
}
|
||
DecoratedTextField {
|
||
id: conferenceFactoryUriField
|
||
Layout.fillWidth: true
|
||
//: "URI du serveur de conversations"
|
||
title: qsTr("account_settings_conference_factory_uri_title")
|
||
propertyName: "conferenceFactoryAddress"
|
||
propertyOwnerGui: account
|
||
Connections {
|
||
target: account.core
|
||
function onConferenceFactoryAddressChanged() {
|
||
if (conferenceFactoryUriField.text != conferenceFactoryUriField.propertyOwnerGui.core[conferenceFactoryUriField.propertyName])
|
||
conferenceFactoryUriField.text = conferenceFactoryUriField.propertyOwnerGui.core[conferenceFactoryUriField.propertyName]
|
||
}
|
||
}
|
||
toValidate: true
|
||
}
|
||
DecoratedTextField {
|
||
id: audioVideoConfUriField
|
||
Layout.fillWidth: true
|
||
propertyName: "audioVideoConferenceFactoryAddress"
|
||
//: "URI du serveur de réunions"
|
||
title: qsTr("account_settings_audio_video_conference_factory_uri_title")
|
||
propertyOwnerGui: account
|
||
toValidate: true
|
||
Connections {
|
||
target: account.core
|
||
function onAudioVideoConferenceFactoryAddressChanged() {
|
||
if (audioVideoConfUriField.text != audioVideoConfUriField.propertyOwnerGui.core[audioVideoConfUriField.propertyName])
|
||
audioVideoConfUriField.text = audioVideoConfUriField.propertyOwnerGui.core[audioVideoConfUriField.propertyName]
|
||
}
|
||
}
|
||
}
|
||
DecoratedTextField {
|
||
Layout.fillWidth: true
|
||
//: "URL du serveur d’échange de clés de chiffrement"
|
||
title: qsTr("account_settings_lime_server_url_title")
|
||
propertyName: "limeServerUrl"
|
||
propertyOwnerGui: account
|
||
toValidate: true
|
||
}
|
||
}
|
||
}
|
||
}
|