diff --git a/interface/resources/qml/hifi/commerce/wallet/AccountHome.qml b/interface/resources/qml/hifi/commerce/wallet/AccountHome.qml new file mode 100644 index 0000000000..77ab48a351 --- /dev/null +++ b/interface/resources/qml/hifi/commerce/wallet/AccountHome.qml @@ -0,0 +1,105 @@ +// +// AccountHome.qml +// qml/hifi/commerce/wallet +// +// AccountHome +// +// Created by Zach Fox on 2017-08-18 +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +import Hifi 1.0 as Hifi +import QtQuick 2.5 +import QtQuick.Controls 1.4 +import "../../../styles-uit" +import "../../../controls-uit" as HifiControlsUit +import "../../../controls" as HifiControls + +// references XXX from root context + +Item { + HifiConstants { id: hifi; } + + id: root; + + Hifi.QmlCommerce { + id: commerce; + } + + Connections { + target: GlobalServices + onMyUsernameChanged: { + usernameText.text = Account.username; + } + } + + // Security Image + Image { + id: passphrasePageSecurityImage; + // Anchors + anchors.top: parent.top; + anchors.left: parent.left; + height: 75; + width: height; + fillMode: Image.PreserveAspectFit; + mipmap: true; + } + + // Username Text + RalewayRegular { + id: usernameText; + text: Account.username; + // Text size + size: 24; + // Style + color: hifi.colors.faintGray; + elide: Text.ElideRight; + // Anchors + anchors.top: passphrasePageSecurityImage.top; + anchors.bottom: passphrasePageSecurityImage.bottom; + anchors.left: passphrasePageSecurityImage.right; + anchors.leftMargin: 16; + anchors.right: hfcBalanceContainer.left; + } + + Rectangle { + id: hfcBalanceContainer; + anchors.right: parent.right; + anchors.verticalCenter: passphrasePageSecurityImage.verticalCenter; + width: 175; + height: 45; + } + + // + // FUNCTION DEFINITIONS START + // + function setSecurityImage(imagePath) { + passphrasePageSecurityImage.source = imagePath; + } + // + // Function Name: fromScript() + // + // Relevant Variables: + // None + // + // Arguments: + // message: The message sent from the JavaScript. + // Messages are in format "{method, params}", like json-rpc. + // + // Description: + // Called when a message is received from a script. + // + function fromScript(message) { + switch (message.method) { + default: + console.log('Unrecognized message from wallet.js:', JSON.stringify(message)); + } + } + signal sendSignalToWallet(var msg); + // + // FUNCTION DEFINITIONS END + // +} diff --git a/interface/resources/qml/hifi/commerce/wallet/NotSetUp.qml b/interface/resources/qml/hifi/commerce/wallet/NotSetUp.qml new file mode 100644 index 0000000000..3efb592ba1 --- /dev/null +++ b/interface/resources/qml/hifi/commerce/wallet/NotSetUp.qml @@ -0,0 +1,127 @@ +// +// NotSetUp.qml +// qml/hifi/commerce/wallet +// +// NotSetUp +// +// Created by Zach Fox on 2017-08-18 +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +import Hifi 1.0 as Hifi +import QtQuick 2.5 +import QtQuick.Controls 1.4 +import "../../../styles-uit" +import "../../../controls-uit" as HifiControlsUit +import "../../../controls" as HifiControls + +// references XXX from root context + +Item { + HifiConstants { id: hifi; } + + id: root; + Hifi.QmlCommerce { + id: commerce; + } + + // + // TAB CONTENTS START + // + + // Text below title bar + RalewaySemiBold { + id: notSetUpText; + text: "Your Wallet Account Has Not Been Set Up"; + // Text size + size: 22; + // Anchors + anchors.top: parent.top; + anchors.topMargin: 100; + anchors.left: parent.left; + anchors.leftMargin: 16; + anchors.right: parent.right; + anchors.rightMargin: 16; + height: 50; + width: paintedWidth; + // Style + color: hifi.colors.faintGray; + wrapMode: Text.WordWrap; + // Alignment + horizontalAlignment: Text.AlignHCenter; + verticalAlignment: Text.AlignVCenter; + } + + // Explanitory text + RalewayRegular { + text: "To buy and sell items in High Fidelity Coin (HFC), you first need " + + "to set up your wallet.
You do not need to submit a credit card or personal information to set up your wallet."; + // Text size + size: 18; + // Anchors + anchors.top: notSetUpText.bottom; + anchors.topMargin: 16; + anchors.left: parent.left; + anchors.leftMargin: 30; + anchors.right: parent.right; + anchors.rightMargin: 30; + height: 100; + width: paintedWidth; + // Style + color: hifi.colors.faintGray; + wrapMode: Text.WordWrap; + // Alignment + horizontalAlignment: Text.AlignHCenter; + verticalAlignment: Text.AlignVCenter; + } + + // "Set Up" button + HifiControlsUit.Button { + color: hifi.buttons.black; + colorScheme: hifi.colorSchemes.dark; + anchors.bottom: parent.bottom; + anchors.bottomMargin: 150; + anchors.horizontalCenter: parent.horizontalCenter; + width: parent.width/2; + height: 50; + text: "Set Up My Wallet"; + onClicked: { + sendSignalToWallet({method: 'setUpClicked'}); + } + } + + + // + // TAB CONTENTS END + // + + // + // FUNCTION DEFINITIONS START + // + // + // Function Name: fromScript() + // + // Relevant Variables: + // None + // + // Arguments: + // message: The message sent from the JavaScript. + // Messages are in format "{method, params}", like json-rpc. + // + // Description: + // Called when a message is received from a script. + // + function fromScript(message) { + switch (message.method) { + default: + console.log('Unrecognized message from wallet.js:', JSON.stringify(message)); + } + } + signal sendSignalToWallet(var msg); + // + // FUNCTION DEFINITIONS END + // +} diff --git a/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml b/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml new file mode 100644 index 0000000000..6fe1605cda --- /dev/null +++ b/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml @@ -0,0 +1,149 @@ +// +// PassphraseSelection.qml +// qml/hifi/commerce/wallet +// +// PassphraseSelection +// +// Created by Zach Fox on 2017-08-18 +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +import Hifi 1.0 as Hifi +import QtQuick 2.5 +import QtQuick.Controls 1.4 +import "../../../styles-uit" +import "../../../controls-uit" as HifiControlsUit +import "../../../controls" as HifiControls + +// references XXX from root context + +Item { + HifiConstants { id: hifi; } + + id: root; + + Hifi.QmlCommerce { + id: commerce; + } + + HifiControlsUit.TextField { + id: passphraseField; + anchors.top: parent.top; + anchors.topMargin: 30; + anchors.left: parent.left; + anchors.leftMargin: 16; + anchors.right: parent.right; + anchors.rightMargin: 16; + height: 50; + echoMode: TextInput.Password; + placeholderText: "passphrase"; + } + HifiControlsUit.TextField { + id: passphraseFieldAgain; + anchors.top: passphraseField.bottom; + anchors.topMargin: 10; + anchors.left: parent.left; + anchors.leftMargin: 16; + anchors.right: parent.right; + anchors.rightMargin: 16; + height: 50; + echoMode: TextInput.Password; + placeholderText: "re-enter passphrase"; + } + // Error text below TextFields + RalewaySemiBold { + id: errorText; + text: ""; + // Text size + size: 16; + // Anchors + anchors.top: passphraseFieldAgain.bottom; + anchors.topMargin: 0; + anchors.left: parent.left; + anchors.leftMargin: 16; + anchors.right: parent.right; + anchors.rightMargin: 16; + height: 30; + // Style + color: hifi.colors.redHighlight; + // Alignment + horizontalAlignment: Text.AlignHLeft; + verticalAlignment: Text.AlignVCenter; + } + + // Text below TextFields + RalewaySemiBold { + id: passwordReqs; + text: "Passphrase must be at least 4 characters"; + // Text size + size: 16; + // Anchors + anchors.top: passphraseFieldAgain.bottom; + anchors.topMargin: 16; + anchors.left: parent.left; + anchors.leftMargin: 16; + anchors.right: parent.right; + anchors.rightMargin: 16; + height: 30; + // Style + color: hifi.colors.faintGray; + // Alignment + horizontalAlignment: Text.AlignHLeft; + verticalAlignment: Text.AlignVCenter; + } + + // Show passphrase text + HifiControlsUit.CheckBox { + id: showPassphrase; + colorScheme: hifi.colorSchemes.dark; + anchors.left: parent.left; + anchors.leftMargin: 16; + anchors.top: passwordReqs.bottom; + anchors.topMargin: 16; + height: 30; + text: "Show passphrase as plain text"; + boxSize: 24; + onClicked: { + passphraseField.echoMode = checked ? TextInput.Normal : TextInput.Password; + passphraseFieldAgain.echoMode = checked ? TextInput.Normal : TextInput.Password; + } + } + + // Text below checkbox + RalewayRegular { + text: "Your passphrase is used to encrypt your private keys. Please write it down. If it is lost, you will not be able to recover it."; + // Text size + size: 16; + // Anchors + anchors.top: showPassphrase.bottom; + anchors.topMargin: 16; + anchors.left: parent.left; + anchors.leftMargin: 16; + anchors.right: parent.right; + anchors.rightMargin: 16; + height: paintedHeight; + // Style + color: hifi.colors.faintGray; + wrapMode: Text.WordWrap; + // Alignment + horizontalAlignment: Text.AlignHLeft; + verticalAlignment: Text.AlignVCenter; + } + + function validateAndSubmitPassphrase() { + if (passphraseField.text.length < 4) { + errorText.text = "Passphrase too short." + return false; + } else if (passphraseField.text !== passphraseFieldAgain.text) { + errorText.text = "Passphrases don't match." + return false; + } else { + errorText.text = ""; + commerce.setPassphrase(passphraseField.text); + return true; + } + } +} diff --git a/interface/resources/qml/hifi/commerce/wallet/SecurityImageModel.qml b/interface/resources/qml/hifi/commerce/wallet/SecurityImageModel.qml index 1be249fb45..b49f16857b 100644 --- a/interface/resources/qml/hifi/commerce/wallet/SecurityImageModel.qml +++ b/interface/resources/qml/hifi/commerce/wallet/SecurityImageModel.qml @@ -39,4 +39,8 @@ ListModel { sourcePath: "images/06gingerbread.jpg" securityImageEnumValue: 6; } + + function getImagePathFromImageID(imageID) { + return (imageID ? root.get(imageID - 1).sourcePath : ""); + } } diff --git a/interface/resources/qml/hifi/commerce/wallet/SecurityImageSelection.qml b/interface/resources/qml/hifi/commerce/wallet/SecurityImageSelection.qml index 4086f868fb..e066102aec 100644 --- a/interface/resources/qml/hifi/commerce/wallet/SecurityImageSelection.qml +++ b/interface/resources/qml/hifi/commerce/wallet/SecurityImageSelection.qml @@ -92,7 +92,7 @@ Item { signal sendToScript(var message); function getImagePathFromImageID(imageID) { - return (imageID ? gridModel.get(imageID - 1).sourcePath : ""); + return (imageID ? gridModel.getImagePathFromImageID(imageID) : ""); } function getSelectedImageIndex() { diff --git a/interface/resources/qml/hifi/commerce/wallet/Wallet.qml b/interface/resources/qml/hifi/commerce/wallet/Wallet.qml index d8ca2e2c94..a48b759466 100644 --- a/interface/resources/qml/hifi/commerce/wallet/Wallet.qml +++ b/interface/resources/qml/hifi/commerce/wallet/Wallet.qml @@ -24,6 +24,7 @@ Rectangle { HifiConstants { id: hifi; } id: root; + property string activeView: "notSetUp"; // Style color: hifi.colors.baseGray; Hifi.QmlCommerce { @@ -35,11 +36,40 @@ Rectangle { hfcBalanceText.text = balance; } } + + onSecurityImageResult: { + if (imageID !== 0) { // "If security image is set up" + accountHome.setSecurityImage(securityImageModel.getImagePathFromImageID(imageID)); + } else if (root.lastPage === "securityImage") { + // ERROR! Invalid security image. + securityImageContainer.visible = true; + choosePassphraseContainer.visible = false; + } + } } + + SecurityImageModel { + id: securityImageModel; + } + Connections { target: walletSetupLightbox; onSendSignalToWallet: { - sendToScript(msg); + if (msg.method === 'walletSetup_cancelClicked') { + walletSetupLightbox.visible = false; + } else if (msg.method === 'walletSetup_finished') { + root.activeView = "accountHome"; + } else { + sendToScript(msg); + } + } + } + Connections { + target: notSetUp; + onSendSignalToWallet: { + if (msg.method === 'setUpClicked') { + walletSetupLightbox.visible = true; + } } } @@ -53,6 +83,7 @@ Rectangle { } WalletSetupLightbox { id: walletSetupLightbox; + visible: false; z: 999; anchors.centerIn: walletSetupLightboxContainer; width: walletSetupLightboxContainer.width - 50; @@ -84,7 +115,7 @@ Rectangle { anchors.bottom: parent.bottom; width: paintedWidth; // Style - color: hifi.colors.lightGrayText; + color: hifi.colors.faintGray; // Alignment horizontalAlignment: Text.AlignHLeft; verticalAlignment: Text.AlignVCenter; @@ -104,7 +135,27 @@ Rectangle { // // TAB CONTENTS START // + NotSetUp { + id: notSetUp; + visible: root.activeView === "notSetUp"; + anchors.top: titleBarContainer.bottom; + anchors.bottom: tabButtonsContainer.top; + anchors.left: parent.left; + anchors.right: parent.right; + } + AccountHome { + id: accountHome; + visible: root.activeView === "accountHome"; + anchors.top: titleBarContainer.bottom; + anchors.topMargin: 16; + anchors.bottom: tabButtonsContainer.top; + anchors.bottomMargin: 16; + anchors.left: parent.left; + anchors.leftMargin: 16; + anchors.right: parent.right; + anchors.rightMargin: 16; + } // @@ -134,6 +185,7 @@ Rectangle { // "ACCOUNT HOME" tab button Rectangle { id: accountHomeButtonContainer; + visible: !notSetUp.visible; color: hifi.colors.black; anchors.top: parent.top; anchors.left: parent.left; @@ -149,7 +201,7 @@ Rectangle { anchors.leftMargin: 4; anchors.rightMargin: 4; // Style - color: hifi.colors.lightGrayText; + color: hifi.colors.faintGray; wrapMode: Text.WordWrap; // Alignment horizontalAlignment: Text.AlignHCenter; @@ -160,6 +212,7 @@ Rectangle { anchors.fill: parent; hoverEnabled: enabled; onClicked: { + root.activeView = "accountHome"; } onEntered: parent.color = hifi.colors.blueHighlight; onExited: parent.color = hifi.colors.black; @@ -169,6 +222,7 @@ Rectangle { // "SEND MONEY" tab button Rectangle { id: sendMoneyButtonContainer; + visible: !notSetUp.visible; color: hifi.colors.black; anchors.top: parent.top; anchors.left: accountHomeButtonContainer.right; @@ -184,7 +238,7 @@ Rectangle { anchors.leftMargin: 4; anchors.rightMargin: 4; // Style - color: hifi.colors.lightGrayText; + color: hifi.colors.faintGray; wrapMode: Text.WordWrap; // Alignment horizontalAlignment: Text.AlignHCenter; @@ -195,6 +249,7 @@ Rectangle { anchors.fill: parent; hoverEnabled: enabled; onClicked: { + root.activeView = "sendMoney"; } onEntered: parent.color = hifi.colors.blueHighlight; onExited: parent.color = hifi.colors.black; @@ -204,6 +259,7 @@ Rectangle { // "SECURITY" tab button Rectangle { id: securityButtonContainer; + visible: !notSetUp.visible; color: hifi.colors.black; anchors.top: parent.top; anchors.left: sendMoneyButtonContainer.right; @@ -219,7 +275,7 @@ Rectangle { anchors.leftMargin: 4; anchors.rightMargin: 4; // Style - color: hifi.colors.lightGrayText; + color: hifi.colors.faintGray; wrapMode: Text.WordWrap; // Alignment horizontalAlignment: Text.AlignHCenter; @@ -230,6 +286,7 @@ Rectangle { anchors.fill: parent; hoverEnabled: enabled; onClicked: { + root.activeView = "security"; } onEntered: parent.color = hifi.colors.blueHighlight; onExited: parent.color = hifi.colors.black; @@ -239,6 +296,7 @@ Rectangle { // "HELP" tab button Rectangle { id: helpButtonContainer; + visible: !notSetUp.visible; color: hifi.colors.black; anchors.top: parent.top; anchors.left: securityButtonContainer.right; @@ -254,7 +312,7 @@ Rectangle { anchors.leftMargin: 4; anchors.rightMargin: 4; // Style - color: hifi.colors.lightGrayText; + color: hifi.colors.faintGray; wrapMode: Text.WordWrap; // Alignment horizontalAlignment: Text.AlignHCenter; @@ -265,6 +323,7 @@ Rectangle { anchors.fill: parent; hoverEnabled: enabled; onClicked: { + root.activeView = "help"; } onEntered: parent.color = hifi.colors.blueHighlight; onExited: parent.color = hifi.colors.black; diff --git a/interface/resources/qml/hifi/commerce/wallet/WalletSetupLightbox.qml b/interface/resources/qml/hifi/commerce/wallet/WalletSetupLightbox.qml index 2ac782e042..3f319d7a6c 100644 --- a/interface/resources/qml/hifi/commerce/wallet/WalletSetupLightbox.qml +++ b/interface/resources/qml/hifi/commerce/wallet/WalletSetupLightbox.qml @@ -26,7 +26,7 @@ Rectangle { id: root; property string lastPage: "login"; // Style - color: "white"; + color: hifi.colors.baseGray; Hifi.QmlCommerce { id: commerce; @@ -43,10 +43,6 @@ Rectangle { if (imageID !== 0) { // "If security image is set up" passphrasePageSecurityImage.source = securityImageSelection.getImagePathFromImageID(imageID); keysReadyPageSecurityImage.source = securityImageSelection.getImagePathFromImageID(imageID); - if (root.lastPage === "login") { - securityImageContainer.visible = false; - choosePassphraseContainer.visible = true; - } } else if (root.lastPage === "securityImage") { // ERROR! Invalid security image. securityImageContainer.visible = true; @@ -98,7 +94,7 @@ Rectangle { anchors.bottom: parent.bottom; width: paintedWidth; // Style - color: hifi.colors.darkGray; + color: hifi.colors.faintGray; // Alignment horizontalAlignment: Text.AlignHLeft; verticalAlignment: Text.AlignVCenter; @@ -119,7 +115,7 @@ Rectangle { anchors.rightMargin: 16; height: 50; // Style - color: hifi.colors.darkGray; + color: hifi.colors.faintGray; // Alignment horizontalAlignment: Text.AlignHLeft; verticalAlignment: Text.AlignVCenter; @@ -140,7 +136,7 @@ Rectangle { anchors.rightMargin: 16; height: 50; // Style - color: hifi.colors.darkGray; + color: hifi.colors.faintGray; wrapMode: Text.WordWrap; // Alignment horizontalAlignment: Text.AlignHLeft; @@ -230,7 +226,7 @@ Rectangle { anchors.bottom: parent.bottom; width: paintedWidth; // Style - color: hifi.colors.darkGray; + color: hifi.colors.faintGray; // Alignment horizontalAlignment: Text.AlignHLeft; verticalAlignment: Text.AlignVCenter; @@ -250,7 +246,7 @@ Rectangle { height: 50; width: paintedWidth; // Style - color: hifi.colors.darkGray; + color: hifi.colors.faintGray; // Alignment horizontalAlignment: Text.AlignHLeft; verticalAlignment: Text.AlignVCenter; @@ -269,7 +265,7 @@ Rectangle { // Text below security images RalewayRegular { - text: "Your security picture shows you that the service asking for your passphrase is authorized. You can change your secure picture at any time."; + text: "Your security picture shows you that the service asking for your passphrase is authorized. You can change your secure picture at any time."; // Text size size: 18; // Anchors @@ -281,7 +277,7 @@ Rectangle { anchors.rightMargin: 16; height: paintedHeight; // Style - color: hifi.colors.darkGray; + color: hifi.colors.faintGray; wrapMode: Text.WordWrap; // Alignment horizontalAlignment: Text.AlignHLeft; @@ -375,7 +371,7 @@ Rectangle { anchors.bottom: parent.bottom; width: paintedWidth; // Style - color: hifi.colors.darkGray; + color: hifi.colors.faintGray; // Alignment horizontalAlignment: Text.AlignHLeft; verticalAlignment: Text.AlignVCenter; @@ -396,118 +392,24 @@ Rectangle { anchors.rightMargin: 16; height: 50; // Style - color: hifi.colors.darkGray; + color: hifi.colors.faintGray; // Alignment horizontalAlignment: Text.AlignHLeft; verticalAlignment: Text.AlignVCenter; } - HifiControlsUit.TextField { - id: passphraseField; + PassphraseSelection { + id: passphraseSelection; anchors.top: passphraseTitleHelper.bottom; anchors.topMargin: 30; anchors.left: parent.left; - anchors.leftMargin: 16; anchors.right: parent.right; - anchors.rightMargin: 16; - height: 50; - echoMode: TextInput.Password; - placeholderText: "passphrase"; - } - HifiControlsUit.TextField { - id: passphraseFieldAgain; - anchors.top: passphraseField.bottom; - anchors.topMargin: 10; - anchors.left: parent.left; - anchors.leftMargin: 16; - anchors.right: parent.right; - anchors.rightMargin: 16; - height: 50; - echoMode: TextInput.Password; - placeholderText: "re-enter passphrase"; - } - // Error text below TextFields - RalewaySemiBold { - id: errorText; - text: ""; - // Text size - size: 16; - // Anchors - anchors.top: passphraseFieldAgain.bottom; - anchors.topMargin: 0; - anchors.left: parent.left; - anchors.leftMargin: 16; - anchors.right: parent.right; - anchors.rightMargin: 16; - height: 30; - // Style - color: hifi.colors.redHighlight; - // Alignment - horizontalAlignment: Text.AlignHLeft; - verticalAlignment: Text.AlignVCenter; - } - - // Text below TextFields - RalewaySemiBold { - id: passwordReqs; - text: "Passphrase must be at least 4 characters"; - // Text size - size: 16; - // Anchors - anchors.top: passphraseFieldAgain.bottom; - anchors.topMargin: 16; - anchors.left: parent.left; - anchors.leftMargin: 16; - anchors.right: parent.right; - anchors.rightMargin: 16; - height: 30; - // Style - color: hifi.colors.darkGray; - // Alignment - horizontalAlignment: Text.AlignHLeft; - verticalAlignment: Text.AlignVCenter; - } - - // Show passphrase text - HifiControlsUit.CheckBox { - id: showPassphrase; - colorScheme: hifi.colorSchemes.dark; - anchors.left: parent.left; - anchors.leftMargin: 16; - anchors.top: passwordReqs.bottom; - anchors.topMargin: 16; - height: 30; - text: "Show passphrase as plain text"; - boxSize: 24; - onClicked: { - passphraseField.echoMode = checked ? TextInput.Normal : TextInput.Password; - passphraseFieldAgain.echoMode = checked ? TextInput.Normal : TextInput.Password; - } - } - - // Text below checkbox - RalewayRegular { - text: "Your passphrase is used to encrypt your private keys. Please write it down. If it is lost, you will not be able to recover it."; - // Text size - size: 16; - // Anchors - anchors.top: showPassphrase.bottom; - anchors.topMargin: 16; - anchors.left: parent.left; - anchors.leftMargin: 16; - anchors.right: parent.right; - anchors.rightMargin: 16; - height: paintedHeight; - // Style - color: hifi.colors.darkGray; - wrapMode: Text.WordWrap; - // Alignment - horizontalAlignment: Text.AlignHLeft; - verticalAlignment: Text.AlignVCenter; + anchors.bottom: passphraseNavBar.top; } // Navigation Bar Item { + id: passphraseNavBar; // Size width: parent.width; height: 100; @@ -563,14 +465,8 @@ Rectangle { width: 100; text: "Next"; onClicked: { - if (passphraseField.text.length < 4) { - errorText.text = "Passphrase too short." - } else if (passphraseField.text !== passphraseFieldAgain.text) { - errorText.text = "Passphrases don't match." - } else { - errorText.text = "" + if (passphraseSelection.validateAndSubmitPassphrase()) { root.lastPage = "passphrase"; - commerce.setPassphrase(passphraseField.text); choosePassphraseContainer.visible = false; privateKeysReadyContainer.visible = true; } @@ -612,7 +508,7 @@ Rectangle { anchors.bottom: parent.bottom; width: paintedWidth; // Style - color: hifi.colors.darkGray; + color: hifi.colors.faintGray; // Alignment horizontalAlignment: Text.AlignHLeft; verticalAlignment: Text.AlignVCenter; @@ -633,7 +529,7 @@ Rectangle { anchors.rightMargin: 16; height: 50; // Style - color: hifi.colors.darkGray; + color: hifi.colors.faintGray; // Alignment horizontalAlignment: Text.AlignHLeft; verticalAlignment: Text.AlignVCenter; @@ -656,7 +552,7 @@ Rectangle { anchors.rightMargin: 16; height: paintedHeight; // Style - color: hifi.colors.darkGray; + color: hifi.colors.faintGray; wrapMode: Text.WordWrap; // Alignment horizontalAlignment: Text.AlignHLeft; @@ -699,6 +595,7 @@ Rectangle { text: "Finish"; onClicked: { root.visible = false; + sendSignalToWallet({method: 'walletSetup_finished'}); } } }