status-desktop/ui/app/AppLayouts/Profile/views/SyncView.qml

198 lines
6.5 KiB
QML
Raw Normal View History

2020-06-17 19:18:31 +00:00
import QtQuick 2.13
import QtQuick.Controls 2.13
import QtQuick.Layouts 1.13
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Controls 0.1
import utils 1.0
import shared.popups 1.0
import shared.controls 1.0
2020-05-27 21:28:25 +00:00
Item {
id: root
2020-05-27 21:28:25 +00:00
Layout.fillHeight: true
Layout.fillWidth: true
property var store
property string activeMailserver: ""
Connections {
target: root.store.mailservers
2022-01-06 17:19:02 +00:00
onActiveMailserverChanged: function(activeMailserver){
var mName = root.store.getMailserverName(activeMailserver)
root.activeMailserver = mName
}
}
2020-05-27 21:28:25 +00:00
Item {
width: profileContainer.profileContentWidth
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
Component {
id: mailserversList
// TODO: Replace with StatusQ component
StatusRadioButton {
id: rbSetMailsever
text: name
checked: name === activeMailserver
onClicked: {
if (checked) {
root.store.setMailserver(name)
}
2021-01-07 17:41:20 +00:00
}
}
2020-05-27 21:28:25 +00:00
}
Item {
id: addMailserver
width: parent.width
height: addButton.height
anchors.top: parent.top
anchors.topMargin: 24
anchors.left: parent.left
anchors.leftMargin: 24
StatusFlatRoundButton {
id: addButton
icon.name: "add"
anchors.verticalCenter: parent.verticalCenter
}
2021-01-11 19:31:47 +00:00
StatusBaseText {
id: usernameText
//% "Add mailserver"
text: qsTrId("add-mailserver")
color: Theme.palette.primaryColor1
anchors.left: addButton.right
anchors.leftMargin: Style.current.padding
anchors.verticalCenter: addButton.verticalCenter
font.pixelSize: 15
}
2021-01-11 19:31:47 +00:00
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: addMailserverPopup.open()
}
2021-01-11 19:31:47 +00:00
// TODO: replace with StatusModal
ModalPopup {
id: addMailserverPopup
//% "Add mailserver"
title: qsTrId("add-mailserver")
2021-01-11 19:31:47 +00:00
property string nameValidationError: ""
property string enodeValidationError: ""
2021-01-11 19:31:47 +00:00
function validate() {
nameValidationError = ""
enodeValidationError = ""
if (nameInput.text === "") {
//% "You need to enter a name"
nameValidationError = qsTrId("you-need-to-enter-a-name")
}
2021-01-11 19:31:47 +00:00
if (enodeInput.text === "") {
//% "You need to enter the enode address"
enodeValidationError = qsTrId("you-need-to-enter-the-enode-address")
}
return !nameValidationError && !enodeValidationError
2021-01-11 19:31:47 +00:00
}
onOpened: {
nameInput.text = "";
enodeInput.text = "";
nameValidationError = "";
enodeValidationError = "";
}
2021-01-11 19:31:47 +00:00
footer: StatusButton {
anchors.right: parent.right
anchors.rightMargin: Style.current.smallPadding
//% "Save"
text: qsTrId("save")
anchors.bottom: parent.bottom
enabled: nameInput.text !== "" && enodeInput.text !== ""
onClicked: {
if (!addMailserverPopup.validate()) {
return;
}
root.store.saveMailserver(nameInput.text, enodeInput.text)
addMailserverPopup.close()
2021-01-11 19:31:47 +00:00
}
}
Input {
id: nameInput
//% "Name"
label: qsTrId("name")
//% "Specify a name"
placeholderText: qsTrId("specify-name")
validationError: addMailserverPopup.nameValidationError
}
2021-01-11 19:31:47 +00:00
Input {
id: enodeInput
//% "History node address"
label: qsTrId("history-node-address")
//% "enode://{enode-id}:{password}@{ip-address}:{port-number}"
placeholderText: qsTrId("enode----enode-id---password---ip-address---port-number-")
validationError: addMailserverPopup.enodeValidationError
anchors.top: nameInput.bottom
anchors.topMargin: Style.current.bigPadding
}
2021-01-11 19:31:47 +00:00
}
2021-01-11 19:31:47 +00:00
}
StatusBaseText {
id: switchLbl
//% "Automatic mailserver selection"
text: qsTrId("automatic-mailserver-selection")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: addMailserver.bottom
anchors.topMargin: 24
color: Theme.palette.directColor1
}
2021-01-11 19:31:47 +00:00
StatusSwitch {
id: automaticSelectionSwitch
checked: root.store.automaticMailserverSelection
onCheckedChanged: root.store.enableAutomaticMailserverSelection(checked)
anchors.top: addMailserver.bottom
anchors.topMargin: Style.current.padding
anchors.left: switchLbl.right
anchors.leftMargin: Style.current.padding
}
2021-01-07 17:41:20 +00:00
StatusBaseText {
//% "..."
text: qsTr("Active mailserver: %1").arg(activeMailserver || qsTrId("---"))
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: switchLbl.bottom
anchors.topMargin: 24
visible: automaticSelectionSwitch.checked
color: Theme.palette.directColor1
}
2021-01-07 17:41:20 +00:00
ListView {
id: mailServersListView
anchors.topMargin: 20
anchors.top: automaticSelectionSwitch.bottom
anchors.bottom: parent.bottom
model: root.store.mailserversList
delegate: mailserversList
visible: !automaticSelectionSwitch.checked
}
2020-05-27 21:28:25 +00:00
}
}