From 28bd9a72d219d53314aebc2530df666748a8adca Mon Sep 17 00:00:00 2001 From: Sander Ferdinand Date: Wed, 18 Jul 2018 15:19:59 +0200 Subject: [PATCH] Added settings page: Wallet --- pages/settings/SettingsWallet.qml | 407 ++++++++++++++++++++++++++++++ 1 file changed, 407 insertions(+) create mode 100644 pages/settings/SettingsWallet.qml diff --git a/pages/settings/SettingsWallet.qml b/pages/settings/SettingsWallet.qml new file mode 100644 index 00000000..ef2c43df --- /dev/null +++ b/pages/settings/SettingsWallet.qml @@ -0,0 +1,407 @@ +import QtQuick 2.7 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 +import QtQuick.Dialogs 1.2 + +import "../../js/Utils.js" as Utils +import "../../components" as MoneroComponents + +Rectangle { + color: "transparent" + height: 1400 + Layout.fillWidth: true + + ColumnLayout { + id: settingsWallet + property int itemHeight: 60 * scaleRatio + Layout.fillWidth: true + anchors.left: parent.left + anchors.top: parent.top + anchors.right: parent.right + anchors.margins: (isMobile)? 17 : 20 + anchors.topMargin: 0 + spacing: 0 + + Rectangle { + // divider + Layout.preferredHeight: 1 * scaleRatio + Layout.fillWidth: true + Layout.bottomMargin: 8 * scaleRatio + color: MoneroComponents.Style.dividerColor + opacity: MoneroComponents.Style.dividerOpacity + } + + GridLayout { + Layout.fillWidth: true + Layout.preferredHeight: settingsWallet.itemHeight + columnSpacing: 0 + + ColumnLayout { + Layout.fillWidth: true + anchors.verticalCenter: parent.verticalCenter + spacing: 0 + + Text { + Layout.fillWidth: true + Layout.preferredHeight: 20 * scaleRatio + Layout.topMargin: 8 * scaleRatio + color: "white" + font.bold: true + font.family: MoneroComponents.Style.fontRegular.name + font.pixelSize: 16 * scaleRatio + text: qsTr("Close this wallet") + translationManager.emptyString + } + + TextArea { + Layout.fillWidth: true + color: MoneroComponents.Style.greyFontColor + font.family: MoneroComponents.Style.fontRegular.name + font.pixelSize: 14 * scaleRatio + horizontalAlignment: TextInput.AlignLeft + selectByMouse: false + wrapMode: Text.WordWrap; + textMargin: 0 + leftPadding: 0 + topPadding: 0 + text: qsTr("Logs out of this wallet.") + translationManager.emptyString + width: parent.width + readOnly: true + + // @TODO: Legacy. Remove after Qt 5.8. + // https://stackoverflow.com/questions/41990013 + MouseArea { + anchors.fill: parent + enabled: false + } + } + } + + Rectangle { + Layout.minimumWidth: 120 * scaleRatio + Layout.preferredWidth: closeWalletText.width + (20 * scaleRatio) + Layout.preferredHeight: parent.height + color: "transparent" + + Rectangle{ + width: parent.width + height: 24 * scaleRatio + radius: 2 * scaleRatio + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + color: MoneroComponents.Style.buttonBackgroundColorDisabled + + Text { + id: closeWalletText + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + color: MoneroComponents.Style.defaultFontColor + font.family: MoneroComponents.Style.fontRegular.name + font.pixelSize: 14 * scaleRatio + font.bold: true + text: qsTr("Close wallet") + translationManager.emptyString + } + + MouseArea { + cursorShape: Qt.PointingHandCursor + anchors.fill: parent + onClicked: { + appWindow.showWizard(); + } + } + } + } + } + + Rectangle { + // divider + Layout.preferredHeight: 1 * scaleRatio + Layout.fillWidth: true + Layout.topMargin: 8 * scaleRatio + Layout.bottomMargin: 8 * scaleRatio + color: MoneroComponents.Style.dividerColor + opacity: MoneroComponents.Style.dividerOpacity + } + + GridLayout { + Layout.fillWidth: true + Layout.preferredHeight: settingsWallet.itemHeight + columnSpacing: 0 + + ColumnLayout { + Layout.fillWidth: true + anchors.verticalCenter: parent.verticalCenter + spacing: 0 + + Text { + Layout.fillWidth: true + Layout.preferredHeight: 20 * scaleRatio + Layout.topMargin: 8 * scaleRatio + color: "white" + font.bold: true + font.family: MoneroComponents.Style.fontRegular.name + font.pixelSize: 16 * scaleRatio + text: qsTr("Create a view-only wallet") + translationManager.emptyString + } + + TextArea { + Layout.fillWidth: true + color: MoneroComponents.Style.greyFontColor + font.family: MoneroComponents.Style.fontRegular.name + font.pixelSize: 14 * scaleRatio + horizontalAlignment: TextInput.AlignLeft + selectByMouse: false + wrapMode: Text.WordWrap; + textMargin: 0 + leftPadding: 0 + topPadding: 0 + text: qsTr("Creates a new wallet that can only view transactions, cannot initialize transactions.") + translationManager.emptyString + width: parent.width + readOnly: true + + // @TODO: Legacy. Remove after Qt 5.8. + // https://stackoverflow.com/questions/41990013 + MouseArea { + anchors.fill: parent + enabled: false + } + } + } + + Rectangle { + Layout.minimumWidth: 120 * scaleRatio + Layout.preferredWidth: createViewOnlyText.width + (20 * scaleRatio) + Layout.preferredHeight: parent.height + color: "transparent" + + Rectangle{ + width: parent.width + height: 24 * scaleRatio + radius: 2 * scaleRatio + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + color: MoneroComponents.Style.buttonBackgroundColorDisabled + + Text { + id: createViewOnlyText + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + color: MoneroComponents.Style.defaultFontColor + font.family: MoneroComponents.Style.fontRegular.name + font.pixelSize: 14 * scaleRatio + font.bold: true + text: qsTr("Create wallet") + translationManager.emptyString + } + + MouseArea { + cursorShape: Qt.PointingHandCursor + anchors.fill: parent + onClicked: { + wizard.openCreateViewOnlyWalletPage(); + } + } + } + } + } + + Rectangle { + // divider + Layout.preferredHeight: 1 * scaleRatio + Layout.fillWidth: true + Layout.topMargin: 8 * scaleRatio + Layout.bottomMargin: 8 * scaleRatio + color: MoneroComponents.Style.dividerColor + opacity: MoneroComponents.Style.dividerOpacity + } + + GridLayout { + Layout.fillWidth: true + Layout.preferredHeight: settingsWallet.itemHeight + columnSpacing: 0 + + ColumnLayout { + Layout.fillWidth: true + anchors.verticalCenter: parent.verticalCenter + spacing: 0 + + Text { + Layout.fillWidth: true + Layout.preferredHeight: 20 * scaleRatio + Layout.topMargin: 8 * scaleRatio + color: "white" + font.bold: true + font.family: MoneroComponents.Style.fontRegular.name + font.pixelSize: 16 * scaleRatio + text: qsTr("Show seed & keys") + translationManager.emptyString + } + + TextArea { + Layout.fillWidth: true + color: MoneroComponents.Style.greyFontColor + font.family: MoneroComponents.Style.fontRegular.name + font.pixelSize: 14 * scaleRatio + horizontalAlignment: TextInput.AlignLeft + selectByMouse: false + wrapMode: Text.WordWrap; + textMargin: 0 * scaleRatio + leftPadding: 0 + topPadding: 0 + text: qsTr("Store this information safely to recover your wallet in the future.") + translationManager.emptyString + width: parent.width + readOnly: true + + // @TODO: Legacy. Remove after Qt 5.8. + // https://stackoverflow.com/questions/41990013 + MouseArea { + anchors.fill: parent + enabled: false + } + } + } + + Rectangle { + Layout.minimumWidth: 120 * scaleRatio + Layout.preferredWidth: showSeedText.width + (20 * scaleRatio) + Layout.preferredHeight: parent.height + color: "transparent" + + Rectangle{ + width: parent.width + height: 24 * scaleRatio + radius: 2 * scaleRatio + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + color: MoneroComponents.Style.buttonBackgroundColorDisabled + + Text { + id: showSeedText + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + color: MoneroComponents.Style.defaultFontColor + font.family: MoneroComponents.Style.fontRegular.name + font.pixelSize: 14 * scaleRatio + font.bold: true + text: qsTr("Show seed") + translationManager.emptyString + } + + MouseArea { + cursorShape: Qt.PointingHandCursor + anchors.fill: parent + onClicked: { + Utils.showSeedPage(); + } + } + } + } + } + + Rectangle { + // divider + Layout.preferredHeight: 1 * scaleRatio + Layout.fillWidth: true + Layout.topMargin: 8 * scaleRatio + Layout.bottomMargin: 8 * scaleRatio + color: MoneroComponents.Style.dividerColor + opacity: MoneroComponents.Style.dividerOpacity + } + + GridLayout { + Layout.fillWidth: true + Layout.preferredHeight: settingsWallet.itemHeight + columnSpacing: 0 + + ColumnLayout { + Layout.fillWidth: true + anchors.verticalCenter: parent.verticalCenter + spacing: 0 + + Text { + Layout.fillWidth: true + Layout.preferredHeight: 20 * scaleRatio + Layout.topMargin: 8 * scaleRatio + color: "white" + font.bold: true + font.family: MoneroComponents.Style.fontRegular.name + font.pixelSize: 16 * scaleRatio + text: qsTr("Rescan wallet balance") + translationManager.emptyString + } + + TextArea { + Layout.fillWidth: true + color: MoneroComponents.Style.greyFontColor + font.family: MoneroComponents.Style.fontRegular.name + font.pixelSize: 14 * scaleRatio + horizontalAlignment: TextInput.AlignLeft + selectByMouse: false + wrapMode: Text.WordWrap; + textMargin: 0 + leftPadding: 0 + topPadding: 0 + text: qsTr("Use this feature if you think the shown balance is not accurate.") + translationManager.emptyString + width: parent.width + readOnly: true + + // @TODO: Legacy. Remove after Qt 5.8. + // https://stackoverflow.com/questions/41990013 + MouseArea { + anchors.fill: parent + enabled: false + } + } + } + + Rectangle { + Layout.minimumWidth: 120 * scaleRatio + Layout.preferredWidth: rescanButtonText.width + (20 * scaleRatio) + Layout.preferredHeight: parent.height + color: "transparent" + + Rectangle{ + width: parent.width + + height: 24 * scaleRatio + radius: 2 * scaleRatio + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + color: MoneroComponents.Style.buttonBackgroundColorDisabled + + Text { + id: rescanButtonText + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + color: MoneroComponents.Style.defaultFontColor + font.family: MoneroComponents.Style.fontRegular.name + font.pixelSize: 14 * scaleRatio + font.bold: true + text: qsTr("Rescan") + translationManager.emptyString + } + + MouseArea { + cursorShape: Qt.PointingHandCursor + anchors.fill: parent + onClicked: { + if (!currentWallet.rescanSpent()) { + console.error("Error: ", currentWallet.errorString); + informationPopup.title = qsTr("Error") + translationManager.emptyString; + informationPopup.text = qsTr("Error: ") + currentWallet.errorString + informationPopup.icon = StandardIcon.Critical + informationPopup.onCloseCallback = null + informationPopup.open(); + } else { + informationPopup.title = qsTr("Information") + translationManager.emptyString + informationPopup.text = qsTr("Successfully rescanned spent outputs.") + translationManager.emptyString + informationPopup.icon = StandardIcon.Information + informationPopup.onCloseCallback = null + informationPopup.open(); + } + } + } + } + } + } + } + + Component.onCompleted: { + console.log('SettingsWallet loaded'); + } +} +