aboutsummaryrefslogtreecommitdiff
path: root/wizard/WizardHome.qml
diff options
context:
space:
mode:
authordsc <xmrdsc@protonmail.com>2019-01-14 01:02:44 +0100
committerdsc <xmrdsc@protonmail.com>2019-02-22 03:05:27 +0100
commitf329a710295deed3c15f2acff9a519c0a70e98e1 (patch)
tree95d2b1f6b8c31826a561d74d33368c1e9ef85d42 /wizard/WizardHome.qml
parent333f4aaf83bd64de02b07a56d86bbf90363e403b (diff)
downloadmonzero-gui-f329a710295deed3c15f2acff9a519c0a70e98e1.tar.gz
monzero-gui-f329a710295deed3c15f2acff9a519c0a70e98e1.tar.xz
monzero-gui-f329a710295deed3c15f2acff9a519c0a70e98e1.zip
Wizard redesign
Diffstat (limited to 'wizard/WizardHome.qml')
-rw-r--r--wizard/WizardHome.qml250
1 files changed, 250 insertions, 0 deletions
diff --git a/wizard/WizardHome.qml b/wizard/WizardHome.qml
new file mode 100644
index 00000000..71b67ee2
--- /dev/null
+++ b/wizard/WizardHome.qml
@@ -0,0 +1,250 @@
+// Copyright (c) 2014-2019, 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.7
+import QtQuick.Dialogs 1.2
+import QtQuick.Layouts 1.2
+import QtQuick.Controls 2.0
+import moneroComponents.NetworkType 1.0
+
+import "../components" as MoneroComponents
+
+Rectangle {
+ id: wizardHome
+ color: "transparent"
+
+ property string viewName: "wizardHome"
+
+ ColumnLayout {
+ Layout.alignment: Qt.AlignHCenter;
+ width: parent.width - 100
+ Layout.fillWidth: true
+ anchors.horizontalCenter: parent.horizontalCenter;
+
+ spacing: 10 * scaleRatio
+
+ ColumnLayout {
+ Layout.fillWidth: true
+ Layout.topMargin: wizardController.wizardSubViewTopMargin
+ Layout.maximumWidth: wizardController.wizardSubViewWidth
+ Layout.alignment: Qt.AlignHCenter
+ spacing: 0 * scaleRatio
+
+ WizardHeader {
+ Layout.bottomMargin: 20 * scaleRatio
+ title: qsTr("Welcome to Monero.") + translationManager.emptyString
+ subtitle: ""
+ }
+
+ WizardMenuItem {
+ headerText: qsTr("Create a new wallet") + translationManager.emptyString
+ bodyText: qsTr("Choose this option if this is your first time using Monero.") + translationManager.emptyString
+ imageIcon: "../images/create-wallet.png"
+
+ onMenuClicked: {
+ wizardController.restart();
+ wizardController.createWallet();
+ wizardStateView.state = "wizardCreateWallet1"
+ }
+ }
+
+ Rectangle {
+ Layout.preferredHeight: 1
+ Layout.topMargin: 3 * scaleRatio
+ Layout.bottomMargin: 3 * scaleRatio
+ Layout.fillWidth: true
+ color: MoneroComponents.Style.dividerColor
+ opacity: MoneroComponents.Style.dividerOpacity
+ }
+
+ WizardMenuItem {
+ headerText: qsTr("Create a new wallet from hardware") + translationManager.emptyString
+ bodyText: qsTr("Connect your hardware wallet to create a new Monero wallet.") + translationManager.emptyString
+ imageIcon: "../images/restore-wallet-from-hardware.png"
+
+ onMenuClicked: {
+ wizardController.restart();
+ wizardStateView.state = "wizardCreateDevice1"
+ }
+ }
+
+ Rectangle {
+ Layout.preferredHeight: 1
+ Layout.topMargin: 3 * scaleRatio
+ Layout.bottomMargin: 3 * scaleRatio
+ Layout.fillWidth: true
+ color: MoneroComponents.Style.dividerColor
+ opacity: MoneroComponents.Style.dividerOpacity
+ }
+
+ WizardMenuItem {
+ headerText: qsTr("Open a wallet from file") + translationManager.emptyString
+ bodyText: qsTr("Import an existing .keys wallet file from your computer.") + translationManager.emptyString
+ imageIcon: "../images/open-wallet-from-file.png"
+
+ onMenuClicked: {
+ wizardStateView.state = "wizardOpenWallet1"
+ }
+ }
+
+ Rectangle {
+ Layout.preferredHeight: 1
+ Layout.topMargin: 3 * scaleRatio
+ Layout.bottomMargin: 3 * scaleRatio
+ Layout.fillWidth: true
+ color: MoneroComponents.Style.dividerColor
+ opacity: MoneroComponents.Style.dividerOpacity
+ }
+
+ WizardMenuItem {
+ headerText: qsTr("Restore wallet from keys or mnemonic seed") + translationManager.emptyString
+ bodyText: qsTr("Enter your private keys or 25-word mnemonic seed to restore your wallet.") + translationManager.emptyString
+ imageIcon: "../images/restore-wallet.png"
+
+ onMenuClicked: {
+ wizardController.restart();
+ wizardController.createWallet();
+ wizardStateView.state = "wizardRestoreWallet1"
+ }
+ }
+
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.topMargin: 16 * scaleRatio
+ spacing: 20 * scaleRatio
+
+ MoneroComponents.StandardButton {
+ small: true
+ text: qsTr("Change wallet mode") + translationManager.emptyString
+
+ onClicked: {
+ wizardController.wizardState = 'wizardModeSelection';
+ }
+ }
+
+ MoneroComponents.StandardButton {
+ visible: !persistentSettings.customDecorations
+ small: true
+ text: qsTr("Change language") + translationManager.emptyString
+
+ onClicked: {
+ wizardController.skipModeSelection = true;
+ wizardController.wizardState = 'wizardLanguage';
+ languageSidebar.open();
+ }
+ }
+ }
+
+ MoneroComponents.CheckBox2 {
+ id: showAdvancedCheckbox
+ Layout.topMargin: 30 * scaleRatio
+ Layout.fillWidth: true
+ fontSize: 15 * scaleRatio
+ checked: false
+ text: qsTr("Advanced options") + translationManager.emptyString
+ visible: appWindow.walletMode >= 2
+ }
+
+ ListModel {
+ id: networkTypeModel
+ // @TODO: try real enums
+ ListElement {column1: "Mainnet"; column2: ""; nettype: "mainnet"}
+ ListElement {column1: "Testnet"; column2: ""; nettype: "testnet"}
+ ListElement {column1: "Stagenet"; column2: ""; nettype: "stagenet"}
+ }
+
+ GridLayout {
+ visible: showAdvancedCheckbox.checked && appWindow.walletMode >= 2
+ columns: 4
+ columnSpacing: 20
+
+ MoneroComponents.StandardDropdown {
+ id: networkTypeDropdown
+ dataModel: networkTypeModel
+ Layout.fillWidth: true
+ Layout.topMargin: 41
+ shadowReleasedColor: "#FF4304"
+ shadowPressedColor: "#B32D00"
+ releasedColor: "#363636"
+ pressedColor: "#202020"
+
+ onChanged: {
+ var item = dataModel.get(currentIndex).nettype.toLowerCase();
+ if(item === "mainnet") {
+ persistentSettings.nettype = NetworkType.MAINNET
+ } else if(item === "stagenet"){
+ persistentSettings.nettype = NetworkType.STAGENET
+ } else if(item === "testnet"){
+ persistentSettings.nettype = NetworkType.TESTNET
+ }
+ }
+ }
+
+ MoneroComponents.LineEdit {
+ id: kdfRoundsText
+ Layout.fillWidth: true
+
+ labelText: qsTr("Number of KDF rounds:") + translationManager.emptyString
+ labelFontSize: 14 * scaleRatio
+ placeholderFontSize: 16 * scaleRatio
+ placeholderText: "0"
+ validator: IntValidator { bottom: 1 }
+ text: persistentSettings.kdfRounds ? persistentSettings.kdfRounds : "1"
+ onTextChanged: {
+ console.log('x');
+ kdfRoundsText.text = persistentSettings.kdfRounds = parseInt(kdfRoundsText.text) >= 1 ? parseInt(kdfRoundsText.text) : 1;
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+ }
+
+ Item {
+ Layout.fillWidth: true
+ }
+ }
+ }
+ }
+
+ Behavior on opacity {
+ NumberAnimation {
+ duration: 200;
+ easing.type: Easing.InCubic;
+ }
+ }
+
+ Component.onCompleted: {
+ networkTypeDropdown.currentIndex = persistentSettings.nettype;
+ networkTypeDropdown.update();
+ }
+
+ function onPageCompleted(){
+ wizardController.walletOptionsIsRecoveringFromDevice = false;
+ }
+}