aboutsummaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2020-10-04 17:41:44 -0500
committerluigi1111 <luigi1111w@gmail.com>2020-10-04 17:41:44 -0500
commit12355deb94b3921bf0acc710ab02f11f78fd8bf2 (patch)
tree5dee2174c9227e391774ad9c02d4d90b26257c9f /components
parentcbbbf30198420c882491cd12b36cac804d8995ea (diff)
parente2a82c90373108aabac9a011bf66c22543b1df61 (diff)
downloadmonzero-gui-12355deb94b3921bf0acc710ab02f11f78fd8bf2.tar.gz
monzero-gui-12355deb94b3921bf0acc710ab02f11f78fd8bf2.tar.xz
monzero-gui-12355deb94b3921bf0acc710ab02f11f78fd8bf2.zip
Merge pull request #3121
e2a82c9 Transfer: create SuccessfulTxDialog (rating89us)
Diffstat (limited to 'components')
-rw-r--r--components/SuccessfulTxDialog.qml191
1 files changed, 191 insertions, 0 deletions
diff --git a/components/SuccessfulTxDialog.qml b/components/SuccessfulTxDialog.qml
new file mode 100644
index 00000000..61d891fa
--- /dev/null
+++ b/components/SuccessfulTxDialog.qml
@@ -0,0 +1,191 @@
+// Copyright (c) 2014-2020, 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.Controls 2.0
+import QtQuick.Layouts 1.1
+
+import moneroComponents.Clipboard 1.0
+import "../components" as MoneroComponents
+
+Rectangle {
+ id: root
+ x: parent.width/2 - root.width/2
+ y: parent.height/2 - root.height/2
+ // TODO: implement without hardcoding sizes
+ width: 580
+ height: 400
+ color: MoneroComponents.Style.blackTheme ? "black" : "white"
+ visible: false
+ radius: 10
+ border.color: MoneroComponents.Style.blackTheme ? Qt.rgba(255, 255, 255, 0.25) : Qt.rgba(0, 0, 0, 0.25)
+ border.width: 1
+ focus: true
+ Keys.enabled: true
+ Keys.onEscapePressed: {
+ root.close()
+ root.rejected()
+ }
+ Keys.onEnterPressed: {
+ root.close()
+ root.accepted()
+ }
+ Keys.onReturnPressed: {
+ root.close()
+ root.accepted()
+ }
+ KeyNavigation.tab: doneButton
+
+ Clipboard { id: clipboard }
+
+ property var transactionID;
+
+ // same signals as Dialog has
+ signal accepted()
+ signal rejected()
+
+ function open(txid) {
+ root.transactionID = txid;
+ root.visible = true;
+ root.forceActiveFocus();
+ }
+
+ function close() {
+ root.visible = false;
+ }
+
+ ColumnLayout {
+ spacing: 10
+ anchors.fill: parent
+ anchors.margins: 25
+
+ ColumnLayout{
+ Layout.topMargin: 10
+ Layout.leftMargin: 0
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignCenter
+
+ MoneroComponents.Label {
+ fontSize: 18
+ fontFamily: "Arial"
+ horizontalAlignment: Text.AlignHCenter
+ text: {
+ if (appWindow.viewOnly){
+ return qsTr("Transaction file successfully saved!") + translationManager.emptyString;
+ } else {
+ return qsTr("Transaction successfully sent!") + translationManager.emptyString;
+ }
+ }
+ }
+ }
+
+ Image {
+ id: successImage
+ Layout.alignment: Qt.AlignCenter
+ width: 140
+ height: 140
+ source: "qrc:///images/success.png"
+
+ SequentialAnimation{
+ running: successImage.visible
+ ScaleAnimator { target: successImage; from: 0.4; to: 1.3; duration: 125}
+ ScaleAnimator { target: successImage; from: 1.3; to: 1; duration: 80}
+ }
+ }
+
+ MoneroComponents.LineEditMulti {
+ visible: !appWindow.viewOnly
+ Layout.leftMargin: 25
+ Layout.rightMargin: 25
+ borderDisabled: true
+ readOnly: true
+ copyButton: true
+ wrapMode: Text.Wrap
+ labelText: qsTr("Transaction ID:") + translationManager.emptyString
+ text: root.transactionID ? root.transactionID : "";
+ fontSize: 16
+ }
+
+ MoneroComponents.LineEditMulti {
+ visible: appWindow.viewOnly
+ Layout.leftMargin: 25
+ borderDisabled: true
+ readOnly: true
+ wrapMode: Text.Wrap
+ labelText: qsTr("Transaction file location:") + translationManager.emptyString
+ text: walletManager.urlToLocalPath(saveTxDialog.fileUrl)
+ fontSize: 16
+ }
+
+ // open folder / done buttons
+ RowLayout {
+ id: buttons
+ spacing: 70
+ Layout.alignment: Qt.AlignBottom | Qt.AlignHCenter
+ Layout.fillWidth: true
+ Layout.preferredHeight: 50
+
+ MoneroComponents.StandardButton {
+ id: openFolderButton
+ visible: appWindow.viewOnly
+ text: qsTr("Open folder") + translationManager.emptyString;
+ width: 200
+ KeyNavigation.tab: doneButton
+ Keys.enabled: openFolderButton.visible
+ Keys.onReturnPressed: openFolderButton.onClicked
+ Keys.onEnterPressed: openFolderButton.onClicked
+ Keys.onEscapePressed: {
+ root.close()
+ root.rejected()
+ }
+ onClicked: {
+ oshelper.openContainingFolder(walletManager.urlToLocalPath(saveTxDialog.fileUrl))
+ }
+ }
+
+ MoneroComponents.StandardButton {
+ id: doneButton
+ text: qsTr("Done") + translationManager.emptyString;
+ width: 200
+ focus: true
+ KeyNavigation.tab: openFolderButton
+ Keys.enabled: doneButton.visible
+ Keys.onReturnPressed: doneButton.onClicked
+ Keys.onEnterPressed: doneButton.onClicked
+ Keys.onEscapePressed: {
+ root.close()
+ root.rejected()
+ }
+ onClicked: {
+ root.close()
+ root.accepted()
+ }
+ }
+ }
+ }
+}