From a5b27bbc10d6a145152fc2629043c46ef4a9ca71 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Thu, 4 Dec 2014 16:44:43 +0100
Subject: Improved and simplified wallet functions and behaviour

---
 cmd/mist/assets/qml/views/wallet.qml | 19 ++++++++++++++-----
 cmd/mist/gui.go                      | 29 +++++++----------------------
 2 files changed, 21 insertions(+), 27 deletions(-)

(limited to 'cmd')

diff --git a/cmd/mist/assets/qml/views/wallet.qml b/cmd/mist/assets/qml/views/wallet.qml
index 9ffb1024d..ad7a11047 100644
--- a/cmd/mist/assets/qml/views/wallet.qml
+++ b/cmd/mist/assets/qml/views/wallet.qml
@@ -155,10 +155,14 @@ Rectangle {
 				model: ListModel {
 					id: txModel
 					Component.onCompleted: {
-						var filter = ethx.watch({latest: -1, from: eth.key().address});
-						filter.changed(addTxs)
-
-						addTxs(filter.messages())
+						var me = eth.key().address;
+						var filterTo = ethx.watch({latest: -1, to: me});
+						var filterFrom = ethx.watch({latest: -1, from: me});
+						filterTo.changed(addTxs)
+						filterFrom.changed(addTxs)
+
+						addTxs(filterTo.messages())
+						addTxs(filterFrom.messages())
 					}
 
 					function addTxs(messages) {
@@ -167,7 +171,12 @@ Rectangle {
 						for(var i = 0; i < messages.length; i++) {
 							var message = messages.get(i);
 							var to = eth.lookupName(message.to);
-							var from = eth.lookupName(message.from);
+							var from;
+							if(message.from.length == 0) {
+								from = "- MINED -";
+							} else {
+								from = eth.lookupName(message.from);
+							}
 							txModel.insert(0, {num: txModel.count, from: from, to: to, value: eth.numberToHuman(message.value)})
 						}
 					}
diff --git a/cmd/mist/gui.go b/cmd/mist/gui.go
index e58e349d1..6a28b48f9 100644
--- a/cmd/mist/gui.go
+++ b/cmd/mist/gui.go
@@ -404,7 +404,6 @@ func (gui *Gui) update() {
 
 	state := gui.eth.BlockManager().TransState()
 
-	unconfirmedFunds := new(big.Int)
 	gui.win.Root().Call("setWalletValue", fmt.Sprintf("%v", ethutil.CurrencyToString(state.GetAccount(gui.address()).Balance())))
 
 	lastBlockLabel := gui.getObjectByName("lastBlockLabel")
@@ -438,15 +437,15 @@ func (gui *Gui) update() {
 
 				case core.TxPreEvent:
 					tx := ev.Tx
-					object := state.GetAccount(gui.address())
 
-					if bytes.Compare(tx.Sender(), gui.address()) == 0 {
-						unconfirmedFunds.Sub(unconfirmedFunds, tx.Value)
-					} else if bytes.Compare(tx.Recipient, gui.address()) == 0 {
-						unconfirmedFunds.Add(unconfirmedFunds, tx.Value)
-					}
+					tstate := gui.eth.BlockManager().TransState()
+					cstate := gui.eth.BlockManager().CurrentState()
 
-					gui.setWalletValue(object.Balance(), unconfirmedFunds)
+					taccount := tstate.GetAccount(gui.address())
+					caccount := cstate.GetAccount(gui.address())
+					unconfirmedFunds := new(big.Int).Sub(taccount.Balance(), caccount.Balance())
+
+					gui.setWalletValue(taccount.Balance(), unconfirmedFunds)
 					gui.insertTransaction("pre", tx)
 
 				case core.TxPostEvent:
@@ -456,32 +455,18 @@ func (gui *Gui) update() {
 					if bytes.Compare(tx.Sender(), gui.address()) == 0 {
 						object.SubAmount(tx.Value)
 
-						//gui.getObjectByName("transactionView").Call("addTx", xeth.NewJSTx(tx), "send")
 						gui.txDb.Put(tx.Hash(), tx.RlpEncode())
 					} else if bytes.Compare(tx.Recipient, gui.address()) == 0 {
 						object.AddAmount(tx.Value)
 
-						//gui.getObjectByName("transactionView").Call("addTx", xeth.NewJSTx(tx), "recv")
 						gui.txDb.Put(tx.Hash(), tx.RlpEncode())
 					}
 
 					gui.setWalletValue(object.Balance(), nil)
 					state.UpdateStateObject(object)
 
-				// case object:
-				// 	gui.loadAddressBook()
-
 				case eth.PeerListEvent:
 					gui.setPeerInfo()
-
-					/*
-						case miner.Event:
-							if ev.Type == miner.Started {
-								gui.miner = ev.Miner
-							} else {
-								gui.miner = nil
-							}
-					*/
 				}
 
 			case <-peerUpdateTicker.C:
-- 
cgit v1.2.3