separate progress bars for daemon and wallet

This commit is contained in:
Jaquee 2018-03-15 16:35:47 +01:00
parent 9038bb3803
commit 37cb0061ee
3 changed files with 26 additions and 42 deletions

View file

@ -39,6 +39,7 @@ Rectangle {
property alias balanceText: balanceText.text property alias balanceText: balanceText.text
property alias networkStatus : networkStatus property alias networkStatus : networkStatus
property alias progressBar : progressBar property alias progressBar : progressBar
property alias daemonProgressBar : daemonProgressBar
property alias minutesToUnlockTxt: unlockedBalanceLabel.text property alias minutesToUnlockTxt: unlockedBalanceLabel.text
signal dashboardClicked() signal dashboardClicked()
@ -541,8 +542,20 @@ Rectangle {
id: progressBar id: progressBar
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
anchors.bottom: daemonProgressBar.top
height: 35 * scaleRatio
syncType: qsTr("Wallet")
visible: networkStatus.connected
}
ProgressBar {
id: daemonProgressBar
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
height: 35 * scaleRatio height: 35 * scaleRatio
syncType: qsTr("Daemon")
visible: networkStatus.connected
} }
} // menuRect } // menuRect

View file

@ -32,7 +32,8 @@ import moneroComponents.Wallet 1.0
Rectangle { Rectangle {
id: item id: item
property int fillLevel: 0 property int fillLevel: 0
visible: false property string syncType // Wallet or Daemon
property string syncText: qsTr("%1 blocks remaining: ").arg(syncType)
color: "#1C1C1C" color: "#1C1C1C"
function updateProgress(currentBlock,targetBlock, blocksToSync, statusTxt){ function updateProgress(currentBlock,targetBlock, blocksToSync, statusTxt){
@ -44,24 +45,19 @@ Rectangle {
} }
if(targetBlock > 0) { if(targetBlock > 0) {
var remaining = targetBlock - currentBlock var remaining = (currentBlock < targetBlock) ? targetBlock - currentBlock : 0
// wallet sync var progressLevel = (blocksToSync > 0) ? (100*(blocksToSync - remaining)/blocksToSync).toFixed(0) : 100
if(blocksToSync > 0)
var progressLevel = (100*(blocksToSync - remaining)/blocksToSync).toFixed(0);
// Daemon sync
else
var progressLevel = (100*(currentBlock/targetBlock)).toFixed(0);
fillLevel = progressLevel fillLevel = progressLevel
if(typeof statusTxt != "undefined" && statusTxt != "") { if(typeof statusTxt != "undefined" && statusTxt != "") {
progressText.text = statusTxt + (" %1").arg(remaining.toFixed(0)); progressText.text = statusTxt;
} else { } else {
progressText.text = qsTr("Blocks remaining: %1").arg(remaining.toFixed(0)); progressText.text = syncText + remaining.toFixed(0);
} }
progressBar.visible = currentBlock < targetBlock
} }
if(remaining == 0 && (typeof statusTxt == "undefined" || statusTxt == ""))
progressText.text = qsTr("%1 is synchronized").arg(syncType)
} }
Item { Item {
@ -106,7 +102,7 @@ Rectangle {
font.family: "Arial" font.family: "Arial"
font.pixelSize: 12 * scaleRatio font.pixelSize: 12 * scaleRatio
color: "#000" color: "#000"
text: qsTr("Synchronizing blocks") text: qsTr("Synchronizing %1").arg(syncType)
height:18 * scaleRatio height:18 * scaleRatio
} }
} }

View file

@ -320,7 +320,6 @@ ApplicationWindow {
console.log("Wallet connection status changed " + status) console.log("Wallet connection status changed " + status)
middlePanel.updateStatus(); middlePanel.updateStatus();
leftPanel.networkStatus.connected = status leftPanel.networkStatus.connected = status
leftPanel.progressBar.visible = (status === Wallet.ConnectionStatus_Connected) && !daemonSynced
// Update fee multiplier dropdown on transfer page // Update fee multiplier dropdown on transfer page
middlePanel.transferView.updatePriorityDropdown(); middlePanel.transferView.updatePriorityDropdown();
@ -414,38 +413,14 @@ ApplicationWindow {
// targetBlock = currentBlock = 1 before network connection is established. // targetBlock = currentBlock = 1 before network connection is established.
daemonSynced = dCurrentBlock >= dTargetBlock && dTargetBlock != 1 daemonSynced = dCurrentBlock >= dTargetBlock && dTargetBlock != 1
// Update daemon sync progress // Update daemon sync progress
leftPanel.progressBar.updateProgress(dCurrentBlock,dTargetBlock); leftPanel.daemonProgressBar.updateProgress(dCurrentBlock,dTargetBlock);
leftPanel.progressBar.visible = !daemonSynced && currentWallet.connected() !== Wallet.ConnectionStatus_Disconnected if(!daemonSynced)
leftPanel.progressBar.updateProgress(0,dTargetBlock, dTargetBlock, qsTr("Waiting for daemon to sync"));
// Update wallet sync progress // Update wallet sync progress
updateSyncing((currentWallet.connected() !== Wallet.ConnectionStatus_Disconnected) && !daemonSynced) updateSyncing((currentWallet.connected() !== Wallet.ConnectionStatus_Disconnected) && !daemonSynced)
// Update transfer page status // Update transfer page status
middlePanel.updateStatus(); middlePanel.updateStatus();
// Use remote node while local daemon is syncing
if (persistentSettings.useRemoteNode) {
var localNodeConnected = walletManager.connected;
var localNodeSynced = localNodeConnected && walletManager.localDaemonSynced()
if (!currentWallet.connected() || !localNodeSynced) {
console.log("Using remote node while local node is syncing")
// Connect to remote node if not already connected
if(!remoteNodeConnected) {
connectRemoteNode();
}
//update local daemon sync progress bar
if(localNodeConnected) {
leftPanel.progressBar.updateProgress(walletManager.blockchainHeight(),walletManager.blockchainTargetHeight(), 0, qsTr("Remaining blocks (local node):"));
leftPanel.progressBar.visible = true
} else if (!persistentSettings.useRemoteNode && !startLocalNodeCancelled) {
daemonManagerDialog.open()
}
// local daemon is synced - use it!
} else if (localNodeSynced && remoteNodeConnected) {
disconnectRemoteNode();
}
}
// Refresh is succesfull if blockchain height > 1 // Refresh is succesfull if blockchain height > 1
if (currentWallet.blockChainHeight() > 1){ if (currentWallet.blockChainHeight() > 1){