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..0c1519de 100644 --- a/components/ProgressBar.qml +++ b/components/ProgressBar.qml @@ -37,11 +37,24 @@ Item { visible: false //clip: true - function updateProgress(currentBlock,targetBlock){ + function updateProgress(currentBlock,targetBlock, blocksToSync){ + if(targetBlock == 1) { + fillLevel = 0 + progressText.text = qsTr("Establishing connection..."); + progressBar.visible = true + return + } + if(targetBlock > 0) { - var progressLevel = ((currentBlock/targetBlock) * 100).toFixed(0); + var remaining = targetBlock - currentBlock + // wallet sync + if(blocksToSync > 0) + var progressLevel = (100*(blocksToSync - remaining)/blocksToSync).toFixed(0); + // Daemon sync + else + var progressLevel = (100*(currentBlock/targetBlock)).toFixed(0); fillLevel = progressLevel - progressText.text = qsTr("Synchronizing blocks %1/%2").arg(currentBlock.toFixed(0)).arg(targetBlock.toFixed(0)); + progressText.text = qsTr("Blocks remaining: %1").arg(remaining.toFixed(0)); progressBar.visible = currentBlock < targetBlock } } diff --git a/main.qml b/main.qml index 843c43b4..91de9efd 100644 --- a/main.qml +++ b/main.qml @@ -66,6 +66,7 @@ ApplicationWindow { property bool foundNewBlock: false property int timeToUnlock: 0 property bool qrScannerEnabled: builtWithScanner && (QtMultimedia.availableCameras.length > 0) + property int blocksToSync: 1 // true if wallet ever synchronized property bool walletInitialized : false @@ -351,10 +352,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 @@ -408,7 +409,12 @@ ApplicationWindow { function onWalletNewBlock(blockHeight, targetHeight) { // Update progress bar - leftPanel.progressBar.updateProgress(blockHeight,targetHeight); + var remaining = targetHeight - blockHeight; + if(blocksToSync < remaining) { + blocksToSync = remaining; + } + + leftPanel.progressBar.updateProgress(blockHeight,targetHeight, blocksToSync); foundNewBlock = true; } diff --git a/src/daemon/DaemonManager.cpp b/src/daemon/DaemonManager.cpp index e1e89f61..0820b462 100644 --- a/src/daemon/DaemonManager.cpp +++ b/src/daemon/DaemonManager.cpp @@ -44,7 +44,7 @@ bool DaemonManager::start(const QString &flags, bool testnet) arguments << str; } - arguments << "--updates" << "disabled"; + arguments << "--check-updates" << "disabled"; qDebug() << "starting monerod " + m_monerod; qDebug() << "With command line arguments " << arguments; 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();