From 5768b18a3b1cfcb1229e5f0236d75da4e9b65dcd Mon Sep 17 00:00:00 2001 From: Maran Date: Fri, 11 Apr 2014 15:18:38 -0400 Subject: [PATCH] Refactored simple send to use states --- ethereal/assets/qml/wallet.qml | 391 ++++++++++++++++++--------------- 1 file changed, 211 insertions(+), 180 deletions(-) diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml index 2c8d1f2413..1a14697e6a 100644 --- a/ethereal/assets/qml/wallet.qml +++ b/ethereal/assets/qml/wallet.qml @@ -30,27 +30,27 @@ ApplicationWindow { MenuItem { text: "Test test" shortcut: "Ctrl+t" - onTriggered: { - var win - function finishedLoading(){ - console.log("Trigged") - win = wizard.createObject(root) - } - console.log("Loading wizard") - - var wizard = Qt.createComponent("first_run.qml") - if(wizard.status== Component.Ready){ - console.log("Component is ready") - finishedLoading() - }else if( wizard.status == Component.Error){ - console.log("Error loading component:", wizard.errorString()) - } - else{ - wizard.statusChanged.connect(finishedLoading) - console.log("Component is NOT ready") - win = wizard.createObject(root) - } - } + onTriggered: { + var win + function finishedLoading(){ + console.log("Trigged") + win = wizard.createObject(root) + } + console.log("Loading wizard") + + var wizard = Qt.createComponent("first_run.qml") + if(wizard.status== Component.Ready){ + console.log("Component is ready") + finishedLoading() + }else if( wizard.status == Component.Error){ + console.log("Error loading component:", wizard.errorString()) + } + else{ + wizard.statusChanged.connect(finishedLoading) + console.log("Component is NOT ready") + win = wizard.createObject(root) + } + } } } @@ -187,52 +187,89 @@ ApplicationWindow { anchors.bottomMargin: 5 id: newTransactionTab Component.onCompleted:{ - addTab("Send ether", newTransaction) + addTab("Simple send", newTransaction) addTab("Create contract", newContract) } } Component { id: newTransaction Column { + id: simpleSendColumn + states: [ + State{ + name: "ERROR" + }, + State { + name: "DONE" + PropertyChanges { target: txSimpleValue; visible:false} + PropertyChanges { target: txSimpleRecipient; visible:false} + PropertyChanges { target:newSimpleTxButton; visible:false} + + PropertyChanges { target: txSimpleResult; visible:true} + PropertyChanges { target: txSimpleOutput; visible:true} + PropertyChanges { target:newSimpleTxButton; visible:true} + }, + State { + name: "SETUP" + PropertyChanges { target: txSimpleValue; visible:true; text: ""} + PropertyChanges { target: txSimpleRecipient; visible:true; text: ""} + PropertyChanges { target: txSimpleButton; visible:true} + PropertyChanges { target:newSimpleTxButton; visible:false} + } + ] spacing: 5 anchors.leftMargin: 5 anchors.topMargin: 5 anchors.top: parent.top anchors.left: parent.left + + function checkFormState(){ + if(txSimpleRecipient.text.length == 40 && txSimpleValue.text.length > 0) { + txSimpleButton.state = "READY" + }else{ + txSimpleButton.state = "NOTREADY" + } + } + TextField { id: txSimpleRecipient placeholderText: "Recipient address" Layout.fillWidth: true - validator: RegExpValidator { regExp: /[a-f0-9]{40}/ } + validator: RegExpValidator { regExp: /[a-f0-9]{40}/ } width: 530 + onTextChanged: { checkFormState() } } TextField { id: txSimpleValue placeholderText: "Amount" anchors.rightMargin: 5 validator: IntValidator { } + onTextChanged: { checkFormState() } } Button { id: txSimpleButton + states: [ + State { + name: "READY" + PropertyChanges { target: txSimpleButton; enabled: true} + }, + State { + name: "NOTREADY" + PropertyChanges { target: txSimpleButton; enabled: false} + } + ] text: "Send" + enabled: false onClicked: { //this.enabled = false var res = eth.createTx(txSimpleRecipient.text, txSimpleValue.text,"","","") if(res[1]) { txSimpleResult.text = "There has been an error broadcasting your transaction:" + res[1].error() - txSimpleResult.visible = true } else { txSimpleResult.text = "Your transaction has been broadcasted over the network.\nYour transaction id is:" txSimpleOutput.text = res[0] - txSimpleOutput.visible = true - txSimpleResult.visible = true - txSimpleValue.visible = false - txSimpleRecipient.visible = false - txSimpleValue.text = "" - txSimpleRecipient.text = "" - txSimpleRecipient.focus = true - newSimpleTxButton.visible = true - this.visible = false + this.visible = false + simpleSendColumn.state = "DONE" } } } @@ -247,18 +284,12 @@ ApplicationWindow { width: 530 } Button { - id: newSimpleTxButton + id: newSimpleTxButton visible: false text: "Create an other transaction" onClicked: { this.visible = false - txSimpleResult.text = "" - txSimpleOutput.text = "" - txSimpleResult.visible = false - txSimpleOutput.visible = false - txSimpleValue.visible = true - txSimpleRecipient.visible = true - txSimpleButton.visible = true + simpleSendColumn.state = "SETUP" } } } @@ -266,49 +297,49 @@ ApplicationWindow { Component { id: newContract Column { - id: mainContractColumn - function contractFormReady(){ - if(codeView.text.length > 0 && txValue.text.length > 0 && txGas.text.length > 0 && txGasPrice.length > 0) { - txButton.state = "READY" - }else{ - txButton.state = "NOTREADY" - } - } - states: [ - State{ - name: "ERROR" - PropertyChanges { target: txResult; visible:true} - PropertyChanges { target: codeView; visible:true} - }, - State { - name: "DONE" - PropertyChanges { target: txValue; visible:false} - PropertyChanges { target: txGas; visible:false} - PropertyChanges { target: txGasPrice; visible:false} - PropertyChanges { target: codeView; visible:false} - PropertyChanges { target: txButton; visible:false} - PropertyChanges { target: txDataLabel; visible:false} - - PropertyChanges { target: txResult; visible:true} - PropertyChanges { target: txOutput; visible:true} - PropertyChanges { target: newTxButton; visible:true} - }, - State { - name: "SETUP" - PropertyChanges { target: txValue; visible:true; text: ""} - PropertyChanges { target: txGas; visible:true; text: ""} - PropertyChanges { target: txGasPrice; visible:true; text: ""} - PropertyChanges { target: codeView; visible:true; text: ""} - PropertyChanges { target: txButton; visible:true} - PropertyChanges { target: txDataLabel; visible:true} - - PropertyChanges { target: txResult; visible:false} - PropertyChanges { target: txOutput; visible:false} - PropertyChanges { target: newTxButton; visible:false} - } - ] + id: mainContractColumn + function contractFormReady(){ + if(codeView.text.length > 0 && txValue.text.length > 0 && txGas.text.length > 0 && txGasPrice.length > 0) { + txButton.state = "READY" + }else{ + txButton.state = "NOTREADY" + } + } + states: [ + State{ + name: "ERROR" + PropertyChanges { target: txResult; visible:true} + PropertyChanges { target: codeView; visible:true} + }, + State { + name: "DONE" + PropertyChanges { target: txValue; visible:false} + PropertyChanges { target: txGas; visible:false} + PropertyChanges { target: txGasPrice; visible:false} + PropertyChanges { target: codeView; visible:false} + PropertyChanges { target: txButton; visible:false} + PropertyChanges { target: txDataLabel; visible:false} + + PropertyChanges { target: txResult; visible:true} + PropertyChanges { target: txOutput; visible:true} + PropertyChanges { target: newTxButton; visible:true} + }, + State { + name: "SETUP" + PropertyChanges { target: txValue; visible:true; text: ""} + PropertyChanges { target: txGas; visible:true; text: ""} + PropertyChanges { target: txGasPrice; visible:true; text: ""} + PropertyChanges { target: codeView; visible:true; text: ""} + PropertyChanges { target: txButton; visible:true} + PropertyChanges { target: txDataLabel; visible:true} + + PropertyChanges { target: txResult; visible:false} + PropertyChanges { target: txOutput; visible:false} + PropertyChanges { target: newTxButton; visible:false} + } + ] width: 400 - spacing: 5 + spacing: 5 anchors.left: parent.left anchors.top: parent.top anchors.leftMargin: 5 @@ -319,31 +350,31 @@ ApplicationWindow { width: 200 placeholderText: "Amount" validator: IntValidator { } - onTextChanged: { - contractFormReady() - } + onTextChanged: { + contractFormReady() + } } TextField { id: txGas width: 200 validator: IntValidator { } placeholderText: "Gas" - onTextChanged: { - contractFormReady() - } + onTextChanged: { + contractFormReady() + } } TextField { id: txGasPrice width: 200 placeholderText: "Gas price" validator: IntValidator { } - onTextChanged: { - contractFormReady() - } + onTextChanged: { + contractFormReady() + } } Label { - id: txDataLabel + id: txDataLabel text: "Transaction data" } @@ -352,58 +383,58 @@ ApplicationWindow { anchors.topMargin: 5 Layout.fillWidth: true width: parent.width /2 - onTextChanged: { - contractFormReady() - } + onTextChanged: { + contractFormReady() + } } Button { id: txButton - states: [ - State { - name: "READY" - PropertyChanges { target: txButton; enabled: true} - }, - State { - name: "NOTREADY" - PropertyChanges { target: txButton; enabled:false} - } - ] + states: [ + State { + name: "READY" + PropertyChanges { target: txButton; enabled: true} + }, + State { + name: "NOTREADY" + PropertyChanges { target: txButton; enabled:false} + } + ] text: "Send" - enabled: false + enabled: false onClicked: { //this.enabled = false var res = eth.createTx("", txValue.text, txGas.text, txGasPrice.text, codeView.text) if(res[1]) { - txResult.text = "Your contract could not be send over the network:\n" - txResult.text += res[1].error() - txResult.text += "" - mainContractColumn.state = "ERROR" + txResult.text = "Your contract could not be send over the network:\n" + txResult.text += res[1].error() + txResult.text += "" + mainContractColumn.state = "ERROR" } else { - txResult.text = "Your contract has been submitted:\n" - txOutput.text = res[0] - mainContractColumn.state = "DONE" + txResult.text = "Your contract has been submitted:\n" + txOutput.text = res[0] + mainContractColumn.state = "DONE" } } } - Text { - id: txResult - visible: false - } + Text { + id: txResult + visible: false + } TextField { id: txOutput visible: false width: 530 } Button { - id: newTxButton + id: newTxButton visible: false text: "Create an other contract" onClicked: { this.visible = false - txResult.text = "" - txOutput.text = "" - mainContractColumn.state = "SETUP" + txResult.text = "" + txOutput.text = "" + mainContractColumn.state = "SETUP" } } @@ -461,26 +492,26 @@ ApplicationWindow { } /* - signal addPlugin(string name) - Component { - id: pluginWindow - Rectangle { - anchors.fill: parent - Label { - id: pluginTitle - anchors.centerIn: parent - text: "Hello world" - } - Component.onCompleted: setView(this) - } - } - - onAddPlugin: { - var pluginWin = pluginWindow.createObject(mainView) - console.log(pluginWin) - pluginWin.pluginTitle.text = "Test" - } - */ + signal addPlugin(string name) + Component { + id: pluginWindow + Rectangle { + anchors.fill: parent + Label { + id: pluginTitle + anchors.centerIn: parent + text: "Hello world" + } + Component.onCompleted: setView(this) + } + } + + onAddPlugin: { + var pluginWin = pluginWindow.createObject(mainView) + console.log(pluginWin) + pluginWin.pluginTitle.text = "Test" + } + */ } } @@ -665,52 +696,52 @@ ApplicationWindow { function setAsm(asm) { //for(var i = 0; i < asm.length; i++) { - asmModel.append({asm: asm}) - //} - } - function clearAsm() { - asmModel.clear() - } + asmModel.append({asm: asm}) + //} + } + function clearAsm() { + asmModel.clear() + } - function setMem(mem) { - memModel.append({num: mem.num, value: mem.value}) - } - function clearMem(){ - memModel.clear() - } + function setMem(mem) { + memModel.append({num: mem.num, value: mem.value}) + } + function clearMem(){ + memModel.clear() + } - function setStack(stack) { - stackModel.append({value: stack}) - } + function setStack(stack) { + stackModel.append({value: stack}) + } - function clearStack() { - stackModel.clear() - } + function clearStack() { + stackModel.clear() + } - function loadPlugin(name) { - console.log("Loading plugin" + name) - mainView.addPlugin(name) - } + function loadPlugin(name) { + console.log("Loading plugin" + name) + mainView.addPlugin(name) + } - function setWalletValue(value) { - walletValueLabel.text = value - } + function setWalletValue(value) { + walletValueLabel.text = value + } - function addTx(tx) { - txModel.insert(0, {hash: tx.hash, address: tx.address, value: tx.value}) - } + function addTx(tx) { + txModel.insert(0, {hash: tx.hash, address: tx.address, value: tx.value}) + } - function addBlock(block) { - blockModel.insert(0, {number: block.number, hash: block.hash}) - } + function addBlock(block) { + blockModel.insert(0, {number: block.number, hash: block.hash}) + } - function addLog(str) { - if(str.len != 0) { - logModel.append({description: str}) + function addLog(str) { + if(str.len != 0) { + logModel.append({description: str}) + } } - } - function setPeers(text) { - peerLabel.text = text + function setPeers(text) { + peerLabel.text = text + } } -}