Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
AdvancedConnectivitySettings.qml 6.14 KiB
/*
 * Copyright (C) 2020 by Savoir-faire Linux
 * Author: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

import QtQuick 2.15
import QtQuick.Layouts 1.15
import QtQuick.Window 2.14
import QtQuick.Controls 2.15
import QtQuick.Controls.Universal 2.12
import QtGraphicalEffects 1.14
import QtQuick.Controls.Styles 1.4
import net.jami.Models 1.0
import net.jami.Adapters 1.0
import Qt.labs.platform 1.1
import "../../commoncomponents"
import "../../constant"

ColumnLayout {
    id: root

    property int itemWidth
    property bool isSIP

    function updateConnectivityAccountInfos() {
        registrationExpireTimeoutSpinBox.setValue(SettingsAdapter.getAccountConfig_Registration_Expire())
        networkInterfaceSpinBox.setValue(SettingsAdapter.getAccountConfig_Localport())
        checkBoxUPnP.checked = SettingsAdapter.getAccountConfig_UpnpEnabled()
        checkBoxTurnEnable.checked = SettingsAdapter.getAccountConfig_TURN_Enabled()
        lineEditTurnAddress.setText(SettingsAdapter.getAccountConfig_TURN_Server())
        lineEditTurnUsername.setText(SettingsAdapter.getAccountConfig_TURN_Username())
        lineEditTurnPassword.setText(SettingsAdapter.getAccountConfig_TURN_Password())
        checkBoxSTUNEnable.checked = SettingsAdapter.getAccountConfig_STUN_Enabled()
        lineEditSTUNAddress.setText(SettingsAdapter.getAccountConfig_STUN_Server())
        lineEditTurnRealmSIP.setText(SettingsAdapter.getAccountConfig_TURN_Realm())
        lineEditTurnRealmSIP.setEnabled(SettingsAdapter.getAccountConfig_TURN_Enabled())
        lineEditSTUNAddress.setEnabled(SettingsAdapter.getAccountConfig_STUN_Enabled())

    }

    ElidedTextLabel {
        Layout.fillWidth: true
        Layout.preferredHeight: JamiTheme.preferredFieldHeight

        eText: JamiStrings.connectivity
        fontSize: JamiTheme.headerFontSize
        maxWidth: width
    }

    ColumnLayout {
        Layout.fillWidth: true
        Layout.leftMargin: JamiTheme.preferredMarginSize

        SettingSpinBox {
            id: registrationExpireTimeoutSpinBox
            visible: isSIP
            title: JamiStrings.registrationTimeOut
            itemWidth: root.itemWidth
            bottomValue: 0
            topValue: 3000
            step: 1

            onNewValue: SettingsAdapter.registrationTimeoutSpinBoxValueChanged(valueField)
        }

        SettingSpinBox {
            id: networkInterfaceSpinBox
            visible: isSIP

            title: JamiStrings.networkInterface
            itemWidth: root.itemWidth
            bottomValue: 0
            topValue: 65536
            step: 1

            onNewValue: SettingsAdapter.networkInterfaceSpinBoxValueChanged(valueField)
        }

        ToggleSwitch {
            id: checkBoxUPnP

            Layout.fillWidth: true

            labelText: JamiStrings.useUPnP
            fontPointSize: JamiTheme.settingsFontSize

            onSwitchToggled: SettingsAdapter.setUseUPnP(checked)
        }

        ToggleSwitch {
            id: checkBoxTurnEnable

            Layout.fillWidth: true

            labelText: JamiStrings.useTURN
            fontPointSize: JamiTheme.settingsFontSize

            onSwitchToggled: {
                SettingsAdapter.setUseTURN(checked)
                if (isSIP) {
                    lineEditTurnAddress.setEnabled(checked)
                    lineEditTurnUsername.setEnabled(checked)
                    lineEditTurnPassword.setEnabled(checked)
                    lineEditTurnRealmSIP.setEnabled(checked)
                }
            }
        }

        SettingsMaterialLineEdit {
            id: lineEditTurnAddress

            Layout.fillWidth: true
            Layout.preferredHeight: JamiTheme.preferredFieldHeight
            itemWidth: root.itemWidth
            titleField: JamiStrings.turnAdress
            onEditFinished: SettingsAdapter.setTURNAddress(textField)
        }

        SettingsMaterialLineEdit {
            id: lineEditTurnUsername

            Layout.fillWidth: true
            Layout.preferredHeight: JamiTheme.preferredFieldHeight
            itemWidth: root.itemWidth
            titleField: JamiStrings.turnUsername
            onEditFinished: SettingsAdapter.setTURNUsername(textField)
        }

        SettingsMaterialLineEdit {
            id: lineEditTurnPassword

            Layout.fillWidth: true
            Layout.preferredHeight: JamiTheme.preferredFieldHeight
            itemWidth: root.itemWidth
            titleField: JamiStrings.turnPassword
            onEditFinished: SettingsAdapter.setTURNPassword(textField)
        }

        SettingsMaterialLineEdit {
            id: lineEditTurnRealmSIP

            Layout.fillWidth: true
            Layout.preferredHeight: JamiTheme.preferredFieldHeight
            itemWidth: root.itemWidth
            titleField: JamiStrings.turnRealm
            onEditFinished: SettingsAdapter.setTURNRealm(textField)
        }

        ToggleSwitch {
            id: checkBoxSTUNEnable

            Layout.fillWidth: true

            labelText: JamiStrings.useSTUN
            fontPointSize: JamiTheme.settingsFontSize

            onSwitchToggled: {
                SettingsAdapter.setUseSTUN(checked)
                lineEditSTUNAddress.enabled = checked
            }
        }

        SettingsMaterialLineEdit {
            id: lineEditSTUNAddress

            Layout.fillWidth: true
            Layout.preferredHeight: JamiTheme.preferredFieldHeight
            itemWidth: root.itemWidth
            titleField: JamiStrings.stunAdress
            onEditFinished: SettingsAdapter.setSTUNAddress(textField)
        }
    }
}