import QtQuick 2.12 import QtQuick.Controls 2.3 import StatusQ.Core 0.1 import StatusQ.Core.Theme 0.1 import StatusQ.Components 0.1 import StatusQ.Controls 0.1 import StatusQ.Controls.Validators 0.1 import StatusQ.Popups 0.1 import "." import utils 1.0 import shared 1.0 import shared.panels 1.0 import shared.popups 1.0 import shared.status 1.0 import shared.controls 1.0 StatusModal { id: popup anchors.centerIn: parent height: 560 header.title: qsTr("Waku nodes") property var messagingStore property string nameValidationError: "" property string enodeValidationError: "" onClosed: { destroy() } contentItem: ScrollView { height: parent.height width: parent.width contentHeight: nodesColumn.height clip: true Column { id: nodesColumn anchors.left: parent.left anchors.leftMargin: Style.current.padding anchors.right: parent.right anchors.rightMargin: Style.current.padding // TODO re-add that when the status-go API to disconnect from the mailserver is added // StatusListItem { // anchors.left: parent.left // anchors.leftMargin: -Style.current.padding // anchors.right: parent.right // anchors.rightMargin: -Style.current.padding // title: qsTr("Use Waku nodes") // components: [ // StatusSwitch { // // TODO find what this is // checked: true // } // ] // } Separator { anchors.left: parent.left anchors.leftMargin: -Style.current.padding anchors.right: parent.right anchors.rightMargin: -Style.current.padding } StatusListItem { anchors.left: parent.left anchors.leftMargin: -Style.current.padding anchors.right: parent.right anchors.rightMargin: -Style.current.padding title: qsTr("Select node automatically") components: [ StatusSwitch { id: automaticSelectionSwitch checked: root.messagingStore.automaticMailserverSelection onCheckedChanged: root.messagingStore.enableAutomaticMailserverSelection(checked) } ] sensor.onClicked: { automaticSelectionSwitch.checked = !automaticSelectionSwitch.checked } } StatusSectionHeadline { text: qsTr("Waku Nodes") visible: !automaticSelectionSwitch.checked width: parent.width height: visible ? implicitHeight : 0 } ButtonGroup { id: nodesButtonGroup } Repeater { id: mailServersListView model: root.messagingStore.mailservers delegate: Component { StatusListItem { title: qsTr("Node %1").arg(index) subTitle: model.name visible: !automaticSelectionSwitch.checked height: visible ? implicitHeight : 0 components: [ StatusRadioButton { id: nodeRadioBtn ButtonGroup.group: nodesButtonGroup checked: model.nodeAddress === root.messagingStore.activeMailserver onCheckedChanged: { if (checked) { root.messagingStore.setActiveMailserver(model.nodeAddress) } } } ] sensor.onClicked: { nodeRadioBtn.checked = true } } } } StatusBaseText { text: qsTr("Add a new node") color: Theme.palette.primaryColor1 MouseArea { anchors.fill: parent cursorShape: Qt.PointingHandCursor onClicked: Global.openPopup(wakuNodeModalComponent) } } } } Component { id: wakuNodeModalComponent AddWakuNodeModal { messagingStore: root.messagingStore } } }