156 lines
4.5 KiB
QML
156 lines
4.5 KiB
QML
|
import QtQuick 2.0
|
||
|
import Ethereum 1.0
|
||
|
|
||
|
// Which ones do we actually need?
|
||
|
import QtQuick.Controls 1.0;
|
||
|
import QtQuick.Layouts 1.0;
|
||
|
import QtQuick.Dialogs 1.0;
|
||
|
import QtQuick.Window 2.1;
|
||
|
import QtQuick.Controls.Styles 1.1
|
||
|
import QtQuick.Dialogs 1.1
|
||
|
|
||
|
ApplicationWindow {
|
||
|
id: wizardRoot
|
||
|
width: 500
|
||
|
height: 400
|
||
|
title: "Ethereal first run setup"
|
||
|
|
||
|
Column {
|
||
|
spacing: 5
|
||
|
anchors.leftMargin: 10
|
||
|
anchors.left: parent.left
|
||
|
|
||
|
Text {
|
||
|
visible: true
|
||
|
text: "<h2>Ethereal setup</h2>"
|
||
|
}
|
||
|
|
||
|
Column {
|
||
|
id: restoreColumn
|
||
|
spacing: 5
|
||
|
Text {
|
||
|
visible: true
|
||
|
font.pointSize: 14
|
||
|
text: "Restore your Ethereum account"
|
||
|
id: restoreLabel
|
||
|
}
|
||
|
|
||
|
TextField {
|
||
|
id: txPrivKey
|
||
|
width: 480
|
||
|
placeholderText: "Private key or mnemonic words"
|
||
|
focus: true
|
||
|
onTextChanged: {
|
||
|
if(this.text.length == 64){
|
||
|
detailLabel.text = "Private (hex) key detected."
|
||
|
actionButton.enabled = true
|
||
|
}
|
||
|
else if(this.text.split(" ").length == 24){
|
||
|
detailLabel.text = "Mnemonic key detected."
|
||
|
actionButton.enabled = true
|
||
|
}else{
|
||
|
detailLabel.text = ""
|
||
|
actionButton.enabled = false
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
Row {
|
||
|
spacing: 10
|
||
|
Button {
|
||
|
id: actionButton
|
||
|
text: "Restore"
|
||
|
enabled: false
|
||
|
onClicked: {
|
||
|
var success = lib.importAndSetPrivKey(txPrivKey.text)
|
||
|
if(success){
|
||
|
importedDetails.visible = true
|
||
|
restoreColumn.visible = false
|
||
|
newKey.visible = false
|
||
|
wizardRoot.height = 120
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
Text {
|
||
|
id: detailLabel
|
||
|
font.pointSize: 12
|
||
|
anchors.topMargin: 10
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
Column {
|
||
|
id: importedDetails
|
||
|
visible: false
|
||
|
Text {
|
||
|
text: "<b>Your account has been imported. Please close the application and restart it again to let the changes take effect.</b>"
|
||
|
wrapMode: Text.WordWrap
|
||
|
width: 460
|
||
|
}
|
||
|
}
|
||
|
Column {
|
||
|
spacing: 5
|
||
|
id: newDetailsColumn
|
||
|
visible: false
|
||
|
Text {
|
||
|
font.pointSize: 14
|
||
|
text: "Your account details"
|
||
|
}
|
||
|
Label {
|
||
|
text: "Address"
|
||
|
}
|
||
|
TextField {
|
||
|
id: addressInput
|
||
|
readOnly:true
|
||
|
width: 480
|
||
|
}
|
||
|
Label {
|
||
|
text: "Private key"
|
||
|
}
|
||
|
TextField {
|
||
|
id: privkeyInput
|
||
|
readOnly:true
|
||
|
width: 480
|
||
|
}
|
||
|
Label {
|
||
|
text: "Mnemonic words"
|
||
|
}
|
||
|
TextField {
|
||
|
id: mnemonicInput
|
||
|
readOnly:true
|
||
|
width: 480
|
||
|
}
|
||
|
Label {
|
||
|
text: "<b>A new account has been created. Please take the time to write down the <i>24 words</i>. You can use those to restore your account at a later date.</b>"
|
||
|
wrapMode: Text.WordWrap
|
||
|
width: 480
|
||
|
}
|
||
|
Label {
|
||
|
text: "Please restart the application once you have completed the steps above."
|
||
|
wrapMode: Text.WordWrap
|
||
|
width: 480
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
Button {
|
||
|
anchors.right: parent.right
|
||
|
anchors.bottom: parent.bottom
|
||
|
anchors.rightMargin: 10
|
||
|
anchors.bottomMargin: 10
|
||
|
id: newKey
|
||
|
text: "I don't have an account yet"
|
||
|
onClicked: {
|
||
|
var res = lib.createAndSetPrivKey()
|
||
|
mnemonicInput.text = res[0]
|
||
|
addressInput.text = res[1]
|
||
|
privkeyInput.text = res[2]
|
||
|
|
||
|
// Hide restore
|
||
|
restoreColumn.visible = false
|
||
|
|
||
|
// Show new details
|
||
|
newDetailsColumn.visible = true
|
||
|
newKey.visible = false
|
||
|
}
|
||
|
}
|
||
|
}
|