mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-02-07 15:08:24 +00:00
122 lines
3.7 KiB
JavaScript
122 lines
3.7 KiB
JavaScript
// =============================================================================
|
|
// `SettingsSipAccounts.qml` Logic.
|
|
// =============================================================================
|
|
|
|
.import Linphone 1.0 as Linphone
|
|
|
|
.import 'qrc:/ui/scripts/Utils/utils.js' as Utils
|
|
|
|
// =============================================================================
|
|
|
|
var proxyConfig
|
|
|
|
function initForm (account) {
|
|
var AccountSettingsModel = Linphone.AccountSettingsModel
|
|
|
|
proxyConfig = account
|
|
? account.proxyConfig
|
|
: AccountSettingsModel.createProxyConfig()
|
|
|
|
var config = AccountSettingsModel.getProxyConfigDescription(proxyConfig)
|
|
|
|
sipAddress.text = config.sipAddress
|
|
serverAddress.text = config.serverAddress
|
|
registrationDuration.text = config.registrationDuration
|
|
|
|
var currentTransport = config.transport.toUpperCase()
|
|
transport.currentIndex = Number(
|
|
Utils.findIndex(transport.model, function (value) {
|
|
return value === currentTransport
|
|
})
|
|
)
|
|
|
|
route.text = config.route
|
|
contactParams.text = config.contactParams
|
|
avpfInterval.text = config.avpfInterval
|
|
registerEnabled.checked = config.registerEnabled
|
|
publishPresence.checked = config.publishPresence
|
|
avpfEnabled.checked = config.avpfEnabled
|
|
iceEnabled.checked = config.iceEnabled
|
|
turnEnabled.checked = config.turnEnabled
|
|
stunServer.text = config.stunServer
|
|
turnPassword.text = config.turnPassword
|
|
turnUser.text = config.turnUser
|
|
|
|
if (account) {
|
|
dialog._sipAddressOk = true
|
|
dialog._serverAddressOk = true
|
|
}
|
|
|
|
dialog._routeOk = true
|
|
}
|
|
|
|
function formIsValid () {
|
|
return dialog._sipAddressOk && dialog._serverAddressOk && dialog._routeOk
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
function validProxyConfig () {
|
|
if (Linphone.AccountSettingsModel.addOrUpdateProxyConfig(proxyConfig, {
|
|
sipAddress: sipAddress.text,
|
|
serverAddress: serverAddress.text,
|
|
registrationDuration: registrationDuration.text,
|
|
transport: transport.currentText,
|
|
route: route.text,
|
|
contactParams: contactParams.text,
|
|
avpfInterval: avpfInterval.text,
|
|
registerEnabled: registerEnabled.checked,
|
|
publishPresence: publishPresence.checked,
|
|
avpfEnabled: avpfEnabled.checked,
|
|
iceEnabled: iceEnabled.checked,
|
|
turnEnabled: turnEnabled.checked,
|
|
stunServer: stunServer.text,
|
|
turnUser: turnUser.text,
|
|
turnPassword: turnPassword.text
|
|
})) {
|
|
dialog.exit(1)
|
|
} else {
|
|
// TODO: Display errors on the form (if necessary).
|
|
}
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
function handleRouteChanged (route) {
|
|
dialog._routeOk = route.length === 0 || Linphone.SipAddressesModel.addressIsValid(route)
|
|
}
|
|
|
|
function handleServerAddressChanged (address) {
|
|
if (address.length === 0) {
|
|
dialog._serverAddressOk = false
|
|
return
|
|
}
|
|
|
|
var newTransport = Linphone.SipAddressesModel.getTransportFromSipAddress(address)
|
|
|
|
if (newTransport.length > 0) {
|
|
transport.currentIndex = Utils.findIndex(transport.model, function (value) {
|
|
return value === newTransport
|
|
})
|
|
dialog._serverAddressOk = true
|
|
} else {
|
|
dialog._serverAddressOk = false
|
|
}
|
|
}
|
|
|
|
function handleSipAddressChanged (address) {
|
|
dialog._sipAddressOk = address.length > 0 &&
|
|
Linphone.SipAddressesModel.sipAddressIsValid(address)
|
|
}
|
|
|
|
function handleTransportChanged (transport) {
|
|
var newServerAddress = Linphone.SipAddressesModel.addTransportToSipAddress(serverAddress.text, transport)
|
|
if (newServerAddress.length > 0) {
|
|
serverAddress.text = newServerAddress
|
|
dialog._serverAddressOk = true
|
|
} else {
|
|
dialog._serverAddressOk = false
|
|
}
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|