From 5768b18a3b1cfcb1229e5f0236d75da4e9b65dcd Mon Sep 17 00:00:00 2001
From: Maran <maran.hidskes@gmail.com>
Date: Fri, 11 Apr 2014 15:18:38 -0400
Subject: Refactored simple send to use states

---
 ethereal/assets/qml/wallet.qml | 391 ++++++++++++++++++++++-------------------
 1 file changed, 211 insertions(+), 180 deletions(-)

(limited to 'ethereal/assets/qml/wallet.qml')

diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml
index 2c8d1f241..1a14697e6 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 <b>could not</b> be send over the network:\n<b>"
-                  txResult.text += res[1].error()
-                  txResult.text += "</b>"
-                  mainContractColumn.state = "ERROR"
+									txResult.text = "Your contract <b>could not</b> be send over the network:\n<b>"
+									txResult.text += res[1].error()
+									txResult.text += "</b>"
+									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
+		}
 	}
-}
-- 
cgit v1.2.3