diff options
| author | xiphon <xiphon@protonmail.com> | 2021-04-20 22:11:36 +0000 |
|---|---|---|
| committer | xiphon <xiphon@protonmail.com> | 2021-04-20 22:15:15 +0000 |
| commit | 69a6c6b821f475a7d8639d859fb195a103b51aad (patch) | |
| tree | 37756fb55b0ee73f12c6ed6ffe78153a9818a81e /components/RemoteNodeList.qml | |
| parent | 02ae14fd6bcd705ed838fba627775e4d8d52b5f3 (diff) | |
| download | monzero-gui-69a6c6b821f475a7d8639d859fb195a103b51aad.tar.gz monzero-gui-69a6c6b821f475a7d8639d859fb195a103b51aad.tar.xz monzero-gui-69a6c6b821f475a7d8639d859fb195a103b51aad.zip | |
WizardDaemonSettings: implement full remote node configuration support
Diffstat (limited to 'components/RemoteNodeList.qml')
| -rw-r--r-- | components/RemoteNodeList.qml | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/components/RemoteNodeList.qml b/components/RemoteNodeList.qml new file mode 100644 index 00000000..f8500d45 --- /dev/null +++ b/components/RemoteNodeList.qml @@ -0,0 +1,131 @@ +// Copyright (c) 2021, The Monero Project +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import QtQuick 2.9 +import QtQuick.Layouts 1.1 + +import FontAwesome 1.0 + +import "." as MoneroComponents +import "effects/" as MoneroEffects + +ColumnLayout { + id: remoteNodeList + spacing: 20 + + MoneroComponents.CheckBox { + border: false + checkedIcon: FontAwesome.minusCircle + uncheckedIcon: FontAwesome.plusCircle + fontAwesomeIcons: true + fontSize: 16 + iconOnTheLeft: true + text: qsTr("Add remote node") + translationManager.emptyString + toggleOnClick: false + onClicked: remoteNodeDialog.add(remoteNodesModel.append) + } + + ColumnLayout { + spacing: 0 + + Repeater { + model: remoteNodesModel + + Rectangle { + height: 30 + Layout.fillWidth: true + color: itemMouseArea.containsMouse || index === remoteNodesModel.selected ? MoneroComponents.Style.titleBarButtonHoverColor : "transparent" + + Rectangle { + color: MoneroComponents.Style.appWindowBorderColor + anchors.right: parent.right + anchors.left: parent.left + anchors.top: parent.top + height: 1 + visible: index > 0 + + MoneroEffects.ColorTransition { + targetObj: parent + blackColor: MoneroComponents.Style._b_appWindowBorderColor + whiteColor: MoneroComponents.Style._w_appWindowBorderColor + } + } + + Rectangle { + anchors.fill: parent + anchors.rightMargin: 80 + color: "transparent" + + MoneroComponents.TextPlain { + color: index === remoteNodesModel.selected ? MoneroComponents.Style.defaultFontColor : MoneroComponents.Style.dimmedFontColor + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + anchors.leftMargin: 6 + font.pixelSize: 16 + text: address + themeTransition: false + } + + MouseArea { + id: itemMouseArea + cursorShape: Qt.PointingHandCursor + anchors.fill: parent + hoverEnabled: true + onClicked: remoteNodesModel.applyRemoteNode(index) + } + } + + RowLayout { + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: 6 + height: 30 + spacing: 10 + + MoneroComponents.InlineButton { + buttonColor: "transparent" + fontFamily: FontAwesome.fontFamily + fontPixelSize: 18 + text: FontAwesome.edit + onClicked: remoteNodeDialog.edit(remoteNodesModel.get(index), function (remoteNode) { + remoteNodesModel.set(index, remoteNode) + }) + } + + MoneroComponents.InlineButton { + buttonColor: "transparent" + fontFamily: FontAwesome.fontFamily + text: FontAwesome.times + visible: remoteNodesModel.count > 1 + onClicked: remoteNodesModel.removeSelectNextIfNeeded(index) + } + } + } + } + } +} |
