From a1cdb572e2d80eb86de79939613bd09857ca951d Mon Sep 17 00:00:00 2001 From: Sander Ferdinand Date: Sat, 9 Dec 2017 00:02:25 +0100 Subject: [PATCH] Added 2 components: LineEditMulti.qml && LabelButton.qml - multiline line edits --- components/LabelButton.qml | 73 ++++++++++++++++++++ components/LineEditMulti.qml | 125 +++++++++++++++++++++++++++++++++++ 2 files changed, 198 insertions(+) create mode 100644 components/LabelButton.qml create mode 100644 components/LineEditMulti.qml diff --git a/components/LabelButton.qml b/components/LabelButton.qml new file mode 100644 index 00000000..38b05fbc --- /dev/null +++ b/components/LabelButton.qml @@ -0,0 +1,73 @@ +// Copyright (c) 2014-2015, 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.0 +import QtQuick.Layouts 1.1 +import "." 1.0 + + +Rectangle { + signal clicked(); + property alias text: labelButtonText.text + + id: labelButton + color: "#808080" + radius: 3 + height: 20 + width: labelButtonText.width + 14 + anchors.right: copyButton.left + anchors.rightMargin: 6 + visible: isValidOpenAliasAddress(addressLine.text) + + Text { + id: labelButtonText + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + font.family: Style.fontRegular.name + font.pixelSize: 12 + font.bold: true + text: "" + color: "black" + } + + MouseArea { + cursorShape: Qt.PointingHandCursor + anchors.fill: parent + hoverEnabled: true + onClicked: labelButton.clicked() + onEntered: { + labelButton.color = "#707070"; + labelButtonText.opacity = 0.8; + } + onExited: { + labelButton.color = "#808080"; + labelButtonText.opacity = 1.0; + } + } +} + diff --git a/components/LineEditMulti.qml b/components/LineEditMulti.qml new file mode 100644 index 00000000..91078e24 --- /dev/null +++ b/components/LineEditMulti.qml @@ -0,0 +1,125 @@ +// Copyright (c) 2014-2015, 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.0 +import QtQuick.Layouts 1.1 +import "." 1.0 + + +ColumnLayout { + property alias text: multiLine.text + property alias placeholderText: placeholderLabel.text + property alias inputLabelText: inputLabel.text + property alias error: multiLine.error + property alias readOnly: multiLine.readOnly + property alias addressValidation: multiLine.addressValidation + property alias labelButtonText: labelButton.text + property bool labelButtonVisible: false + property bool copyButton: false + signal labelButtonClicked(); + signal inputLabelLinkActivated(); + + spacing: 0 + Rectangle{ + id: inputLabelRect + color: "transparent" + Layout.fillWidth: true + height: inputLabel.height + 10 + + Text { + id: inputLabel + anchors.top: parent.top + anchors.left: parent.left + font.family: Style.fontRegular.name + font.pixelSize: 16 * scaleRatio + font.bold: labelFontBold + textFormat: Text.RichText + color: Style.defaultFontColor + onLinkActivated: inputLabelLinkActivated() + } + + LabelButton { + id: labelButton + onClicked: labelButtonClicked() + visible: labelButtonVisible + } + + LabelButton { + id: copyButtonId + visible: copyButton + text: qsTr("Copy") + anchors.right: labelButton.visible ? inputLabel.right : parent.right + anchors.rightMargin: labelButton.visible? 4 : 0 + onClicked: { + if (multiLine.text.length > 0) { + console.log(multiLine.text + " copied to clipboard") + clipboard.setText(multiLine.text) + appWindow.showStatusMessage(qsTr("Copied to clipboard"),3) + } + } + } + } + + InputMulti { + id: multiLine + readOnly: false + addressValidation: true + anchors.top: inputLabelRect.bottom + Layout.fillWidth: true + + Text { + id: placeholderLabel + visible: multiLine.text ? false : true + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + anchors.leftMargin: 10 + opacity: 0.25 + color: Style.defaultFontColor + font.family: Style.fontRegular.name + font.pixelSize: 18 * scaleRatio + text: "" + z: 3 + } + + Rectangle { + color: "transparent" + border.width: 1 + border.color: { + if(multiLine.error && multiLine.text !== ""){ + return Qt.rgba(255, 0, 0, 0.45); + } else if(multiLine.activeFocus){ + return Qt.rgba(255, 255, 255, 0.35); + } else { + return Qt.rgba(255, 255, 255, 0.25); + } + } + radius: 4 + anchors.fill: parent + } + } +}