From 2d6ddf043e547838b584402e439d547fa76f3809 Mon Sep 17 00:00:00 2001 From: Jaquee Date: Fri, 24 Feb 2017 18:07:46 +0100 Subject: [PATCH] Improved blockchain sync status ui --- components/NetworkStatusItem.qml | 5 ++++- components/ProgressBar.qml | 7 +++++++ main.qml | 4 ++-- src/libwalletqt/Wallet.cpp | 4 ++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/components/NetworkStatusItem.qml b/components/NetworkStatusItem.qml index 6667b974..7b0187b4 100644 --- a/components/NetworkStatusItem.qml +++ b/components/NetworkStatusItem.qml @@ -48,8 +48,11 @@ Row { } function getConnectionStatusString(status) { - if (status == Wallet.ConnectionStatus_Connected) + if (status == Wallet.ConnectionStatus_Connected) { + if(!appWindow.daemonSynced) + return qsTr("Synchronizing") return qsTr("Connected") + } if (status == Wallet.ConnectionStatus_WrongVersion) return qsTr("Wrong version") if (status == Wallet.ConnectionStatus_Disconnected) diff --git a/components/ProgressBar.qml b/components/ProgressBar.qml index ec53ec61..8462bbf5 100644 --- a/components/ProgressBar.qml +++ b/components/ProgressBar.qml @@ -38,6 +38,13 @@ Item { //clip: true function updateProgress(currentBlock,targetBlock){ + if(targetBlock == 1) { + fillLevel = 0 + progressText.text = qsTr("Establishing connection..."); + progressBar.visible = true + return + } + if(targetBlock > 0) { var progressLevel = ((currentBlock/targetBlock) * 100).toFixed(0); fillLevel = progressLevel diff --git a/main.qml b/main.qml index 843c43b4..4dd72776 100644 --- a/main.qml +++ b/main.qml @@ -351,10 +351,10 @@ ApplicationWindow { // Check daemon status var dCurrentBlock = currentWallet.daemonBlockChainHeight(); var dTargetBlock = currentWallet.daemonBlockChainTargetHeight(); - // Daemon fully synced // TODO: implement onDaemonSynced or similar in wallet API and don't start refresh thread before daemon is synced - daemonSynced = dCurrentBlock >= dTargetBlock + // targetBlock = currentBlock = 1 before network connection is established. + daemonSynced = dCurrentBlock >= dTargetBlock && dTargetBlock != 1 // Update daemon sync progress leftPanel.progressBar.updateProgress(dCurrentBlock,dTargetBlock); leftPanel.progressBar.visible = !daemonSynced && currentWallet.connected() !== Wallet.ConnectionStatus_Disconnected diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index 8913d4c3..77b35d06 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -21,7 +21,7 @@ namespace { static const int DAEMON_BLOCKCHAIN_HEIGHT_CACHE_TTL_SECONDS = 5; - static const int DAEMON_BLOCKCHAIN_TARGET_HEIGHT_CACHE_TTL_SECONDS = 60; + static const int DAEMON_BLOCKCHAIN_TARGET_HEIGHT_CACHE_TTL_SECONDS = 30; static const int WALLET_CONNECTION_STATUS_CACHE_TTL_SECONDS = 5; } @@ -262,7 +262,7 @@ quint64 Wallet::daemonBlockChainHeight() const quint64 Wallet::daemonBlockChainTargetHeight() const { - if (m_daemonBlockChainTargetHeight == 0 + if (m_daemonBlockChainTargetHeight <= 1 || m_daemonBlockChainTargetHeightTime.elapsed() / 1000 > m_daemonBlockChainTargetHeightTtl) { m_daemonBlockChainTargetHeight = m_walletImpl->daemonBlockChainTargetHeight();