blob: b5d1d2c0020c8de3cd4c365aa039ffc9416daaf3 [file] [log] [blame]
/*
* Copyright (C) 2019-2020 by Savoir-faire Linux
* Author: Yang Wang <yang.wang@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.Window 2.14
import QtQuick.Controls 2.14
import QtQuick.Controls.Universal 2.12
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.14
import net.jami.Models 1.0
import "../../commoncomponents"
Rectangle {
signal navigateToMainView
signal navigateToNewWizardView
function updateAccountInfoDisplayed() {
displaySIPNameLineEdit.text = ClientWrapper.settingsAdaptor.getCurrentAccount_Profile_Info_Alias()
usernameSIP.text = ClientWrapper.settingsAdaptor.getAccountConfig_Username()
hostnameSIP.text = ClientWrapper.settingsAdaptor.getAccountConfig_Hostname()
passSIPlineEdit.text = ClientWrapper.settingsAdaptor.getAccountConfig_Password()
proxySIP.text = ClientWrapper.settingsAdaptor.getAccountConfig_ProxyServer()
accountSIPEnableCheckBox.checked = ClientWrapper.settingsAdaptor.get_CurrentAccountInfo_Enabled()
setAvatar()
if (advanceSIPSettingsView.visible) {
advanceSIPSettingsView.updateAccountInfoDisplayedAdvanceSIP()
}
}
function isPhotoBoothOpened() {
return currentSIPAccountAvatar.takePhotoState
}
function setAvatar() {
currentSIPAccountAvatar.setAvatarPixmap(
ClientWrapper.settingsAdaptor.getAvatarImage_Base64(
currentSIPAccountAvatar.boothWidht),
ClientWrapper.settingsAdaptor.getIsDefaultAvatar())
}
function stopBooth() {
currentSIPAccountAvatar.stopBooth()
}
// slots
function setAccEnableSlot(state) {
ClientWrapper.accountModel.setAccountEnabled(ClientWrapper.utilsAdaptor.getCurrAccId(), state)
}
function delAccountSlot() {
deleteAccountDialog_SIP.open()
}
DeleteAccountDialog{
id: deleteAccountDialog_SIP
anchors.centerIn: parent.Center
x: (parent.width - width) / 2
y: (parent.height - height) / 2
onAccepted: {
ClientWrapper.accountAdaptor.setSelectedAccountId()
ClientWrapper.accountAdaptor.setSelectedConvId()
if(ClientWrapper.utilsAdaptor.getAccountListSize() > 0){
navigateToMainView()
} else {
navigateToNewWizardView()
}
}
}
Layout.fillHeight: true
Layout.fillWidth: true
ColumnLayout {
anchors.fill: parent
spacing: 0
Item {
Layout.fillWidth: true
Layout.maximumHeight: 10
Layout.minimumHeight: 10
Layout.preferredHeight: 10
Layout.alignment: Qt.AlignTop
}
RowLayout {
spacing: 6
Layout.alignment: Qt.AlignTop
Layout.fillWidth: true
Layout.maximumHeight: 31
Layout.minimumHeight: 0
Layout.preferredHeight: accountPageTitleSIP.height
Item {
Layout.fillHeight: true
Layout.maximumWidth: 48
Layout.preferredWidth: 48
Layout.minimumWidth: 48
}
Label {
id: accountPageTitleSIP
Layout.preferredWidth: 133
Layout.preferredHeight: 31
Layout.minimumHeight: 25
text: qsTr("SIP Account")
font.pointSize: 15
font.kerning: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
Item {
Layout.fillWidth: true
Layout.fillHeight: true
}
}
ScrollView {
id: accountSIPScrollView
property ScrollBar hScrollBar: ScrollBar.horizontal
property ScrollBar vScrollBar: ScrollBar.vertical
Layout.fillHeight: true
Layout.fillWidth: true
ScrollBar.horizontal.policy: ScrollBar.AsNeeded
ScrollBar.vertical.policy: ScrollBar.AsNeeded
font.pointSize: 8
font.kerning: true
clip: true
ColumnLayout {
id: accountSIPLayout
Layout.fillHeight: true
Layout.maximumWidth: 598
Item {
Layout.fillHeight: true
Layout.maximumWidth: 30
Layout.preferredWidth: 30
Layout.minimumWidth: 30
}
ColumnLayout {
spacing: 6
Layout.fillHeight: true
Layout.fillWidth: true
Layout.leftMargin: 48
Item {
Layout.fillHeight: true
Layout.maximumWidth: 24
Layout.preferredWidth: 24
Layout.minimumWidth: 24
}
ToggleSwitch {
id: accountSIPEnableCheckBox
labelText: qsTr("Enable")
fontPointSize: 10
onSwitchToggled: {
setAccEnableSlot(checked)
}
}
Item {
Layout.fillHeight: true
Layout.maximumWidth: 20
Layout.preferredWidth: 20
Layout.minimumWidth: 20
}
ColumnLayout {
Layout.fillWidth: true
Label {
Layout.fillWidth: true
Layout.maximumHeight: 21
Layout.preferredHeight: 21
Layout.minimumHeight: 21
text: qsTr("Profile")
font.pointSize: 13
font.kerning: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
Item {
Layout.fillWidth: true
Layout.maximumHeight: 10
Layout.preferredHeight: 10
Layout.minimumHeight: 10
}
ColumnLayout {
Layout.fillWidth: true
layoutDirection: Qt.LeftToRight
spacing: 6
PhotoboothView {
id: currentSIPAccountAvatar
Layout.alignment: Qt.AlignHCenter
Layout.maximumWidth: 261
Layout.preferredWidth: 261
Layout.minimumWidth: 261
Layout.maximumHeight: 261
Layout.preferredHeight: 261
Layout.minimumHeight: 261
Layout.leftMargin: 20
onImageAcquired: {
ClientWrapper.settingsAdaptor.setCurrAccAvatar(imgBase64)
}
onImageCleared: {
ClientWrapper.settingsAdaptor.clearCurrentAvatar()
setAvatar()
}
}
InfoLineEdit {
id: displaySIPNameLineEdit
fieldLayoutWidth: 261
Layout.leftMargin: 20
font.pointSize: 10
font.kerning: true
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
onEditingFinished: {
ClientWrapper.accountAdaptor.setCurrAccDisplayName(
displaySIPNameLineEdit.text)
}
}
}
}
Item {
Layout.fillWidth: true
Layout.maximumHeight: 20
Layout.preferredHeight: 20
Layout.minimumHeight: 20
}
ColumnLayout {
Layout.fillWidth: true
spacing: 6
Label {
Layout.fillWidth: true
Layout.maximumHeight: 27
Layout.preferredHeight: 27
Layout.minimumHeight: 27
text: qsTr("Identity")
font.pointSize: 13
font.kerning: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
Item {
Layout.fillWidth: true
Layout.maximumHeight: 10
Layout.preferredHeight: 10
Layout.minimumHeight: 10
}
ColumnLayout {
Layout.fillWidth: true
spacing: 6
GridLayout {
rows: 4
columns: 2
flow: GridLayout.LeftToRight
rowSpacing: 14
columnSpacing: 6
Layout.fillWidth: true
Layout.leftMargin: 20
// user name
Label {
Layout.maximumWidth: 76
Layout.preferredWidth: 76
Layout.minimumWidth: 76
Layout.maximumHeight: 30
Layout.preferredHeight: 30
Layout.minimumHeight: 30
text: qsTr("Username")
font.pointSize: 10
font.kerning: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
InfoLineEdit {
id: usernameSIP
fieldLayoutWidth: 300
font.pointSize: 10
font.kerning: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
onEditingFinished: {
ClientWrapper.settingsAdaptor.setAccountConfig_Username(
usernameSIP.text)
}
}
// host name
Label {
Layout.maximumWidth: 76
Layout.preferredWidth: 76
Layout.minimumWidth: 76
Layout.maximumHeight: 30
Layout.preferredHeight: 30
Layout.minimumHeight: 30
text: qsTr("Hostname")
font.pointSize: 10
font.kerning: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
InfoLineEdit {
id: hostnameSIP
fieldLayoutWidth: 300
font.pointSize: 10
font.kerning: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
onEditingFinished: {
ClientWrapper.settingsAdaptor.setAccountConfig_Hostname(
hostnameSIP.text)
}
}
// proxy
Label {
Layout.maximumWidth: 76
Layout.preferredWidth: 76
Layout.minimumWidth: 76
Layout.maximumHeight: 30
Layout.preferredHeight: 30
Layout.minimumHeight: 30
text: qsTr("Proxy")
font.pointSize: 10
font.kerning: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
InfoLineEdit {
id: proxySIP
fieldLayoutWidth: 300
font.pointSize: 10
font.kerning: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
onEditingFinished: {
ClientWrapper.settingsAdaptor.setAccountConfig_ProxyServer(
proxySIP.text)
}
}
// password
Label {
Layout.maximumWidth: 76
Layout.preferredWidth: 76
Layout.minimumWidth: 76
Layout.maximumHeight: 30
Layout.preferredHeight: 30
Layout.minimumHeight: 30
text: qsTr("Password")
font.pointSize: 10
font.kerning: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
InfoLineEdit {
id: passSIPlineEdit
fieldLayoutWidth: 300
font.pointSize: 10
font.kerning: true
echoMode: TextInput.Password
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
onEditingFinished: {
ClientWrapper.settingsAdaptor.setAccountConfig_Password(
passSIPlineEdit.text)
}
}
}
Item {
Layout.fillWidth: true
Layout.maximumHeight: 10
Layout.preferredHeight: 10
Layout.minimumHeight: 10
}
RowLayout {
Layout.fillWidth: true
Layout.maximumHeight: 30
Layout.leftMargin: 20
HoverableButtonTextItem {
id: btnSIPDeletAccount
backgroundColor: "red"
onEnterColor: Qt.rgba(150 / 256, 0, 0, 0.7)
onDisabledBackgroundColor: Qt.rgba(
255 / 256,
0, 0, 0.8)
onPressColor: backgroundColor
textColor: "white"
Layout.maximumWidth: 261
Layout.preferredWidth: 261
Layout.minimumWidth: 261
Layout.maximumHeight: 30
Layout.preferredHeight: 30
Layout.minimumHeight: 30
radius: height / 2
text: qsTr("Delete Account")
font.pointSize: 10
font.kerning: true
onClicked: {
delAccountSlot()
}
}
Item {
Layout.fillHeight: true
Layout.fillWidth: true
}
}
}
}
Item {
Layout.fillWidth: true
Layout.maximumHeight: 40
Layout.preferredHeight: 40
Layout.minimumHeight: 40
}
RowLayout {
Layout.fillWidth: true
Layout.minimumHeight: 30
Layout.preferredHeight: 30
Layout.maximumHeight: 30
Layout.minimumWidth: 598
Layout.preferredWidth: 598
Item {
Layout.fillWidth: true
Layout.fillHeight: true
}
HoverableRadiusButton {
id: advancedAccountSettingsSIPButton
Layout.minimumWidth: 180
Layout.minimumHeight: 30
Layout.preferredHeight: 30
Layout.maximumHeight: 30
radius: height / 2
text: qsTr("Advanced Account Settings")
font.pointSize: 10
font.kerning: true
icon.source: {
if (advanceSIPSettingsView.visible) {
return "qrc:/images/icons/round-arrow_drop_up-24px.svg"
} else {
return "qrc:/images/icons/round-arrow_drop_down-24px.svg"
}
}
icon.height: 24
icon.width: 24
onClicked: {
advanceSIPSettingsView.visible = !advanceSIPSettingsView.visible
if(advanceSIPSettingsView.visible){
advanceSIPSettingsView.updateAccountInfoDisplayedAdvanceSIP()
var coor = advancedAccountSettingsSIPButton.mapToItem(accountSIPLayout,advancedAccountSettingsSIPButton.x,advancedAccountSettingsSIPButton.y)
accountSIPScrollView.vScrollBar.position = coor.y / accountSIPLayout.height
} else {
accountSIPScrollView.vScrollBar.position = 0
}
}
}
Item {
Layout.fillWidth: true
Layout.fillHeight: true
}
}
}
Item {
Layout.fillWidth: true
Layout.minimumHeight: 48
Layout.preferredHeight: 48
Layout.maximumHeight: 48
}
ColumnLayout {
spacing: 6
Layout.fillHeight: true
Layout.fillWidth: true
Layout.leftMargin: 30
// instantiate advance setting page
AdvancedSIPSettingsView {
id: advanceSIPSettingsView
Layout.leftMargin: 10
visible: false
}
}
}
}
Item {
Layout.fillHeight: true
Layout.fillWidth: true
}
}
}