diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml index c783cde83..afb210bec 100644 --- a/ethereal/assets/qml/wallet.qml +++ b/ethereal/assets/qml/wallet.qml @@ -419,6 +419,17 @@ ApplicationWindow { } } + ProgressBar { + id: syncProgressIndicator + visible: false + objectName: "syncProgressIndicator" + y: 3 + width: 140 + indeterminate: true + anchors.right: peerLabel.left + anchors.rightMargin: 5 + } + Label { y: 7 anchors.right: peerImage.left @@ -443,6 +454,7 @@ ApplicationWindow { Window { id: popup visible: false + flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint property var block width: root.width height: 300 @@ -577,6 +589,7 @@ ApplicationWindow { Window { id: addPeerWin + flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint visible: false minimumWidth: 230 maximumWidth: 230 @@ -743,6 +756,7 @@ ApplicationWindow { // ****************************************** Window { id: peerWindow + flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint height: 200 width: 700 Rectangle { diff --git a/ethereal/gui.go b/ethereal/gui.go index 39677c38f..f777f64f7 100644 --- a/ethereal/gui.go +++ b/ethereal/gui.go @@ -266,14 +266,18 @@ func (gui *Gui) setWalletValue(amount, unconfirmedFunds *big.Int) { func (gui *Gui) update() { reactor := gui.eth.Reactor() - blockChan := make(chan ethutil.React, 1) - txChan := make(chan ethutil.React, 1) - objectChan := make(chan ethutil.React, 1) - peerChan := make(chan ethutil.React, 1) + var ( + blockChan = make(chan ethutil.React, 1) + txChan = make(chan ethutil.React, 1) + objectChan = make(chan ethutil.React, 1) + peerChan = make(chan ethutil.React, 1) + chainSyncChan = make(chan ethutil.React, 1) + ) reactor.Subscribe("newBlock", blockChan) reactor.Subscribe("newTx:pre", txChan) reactor.Subscribe("newTx:post", txChan) + reactor.Subscribe("chainSync", chainSyncChan) nameReg := ethpub.EthereumConfig(gui.eth.StateManager()).NameReg() if nameReg != nil { @@ -287,6 +291,7 @@ func (gui *Gui) update() { unconfirmedFunds := new(big.Int) gui.win.Root().Call("setWalletValue", fmt.Sprintf("%v", ethutil.CurrencyToString(state.GetAccount(gui.address()).Amount))) + gui.win.Root().ObjectByName("syncProgressIndicator").Set("visible", !gui.eth.IsUpToDate()) for { select { @@ -328,6 +333,10 @@ func (gui *Gui) update() { state.UpdateStateObject(object) } + case msg := <-chainSyncChan: + sync := msg.Resource.(bool) + gui.win.Root().ObjectByName("syncProgressIndicator").Set("visible", sync) + case <-objectChan: gui.loadAddressBook() case <-peerChan: