diff --git a/src/qt/modaloverlay.h b/src/qt/modaloverlay.h --- a/src/qt/modaloverlay.h +++ b/src/qt/modaloverlay.h @@ -46,6 +46,7 @@ QVector> blockProcessTime; bool layerIsVisible; bool userClosed; + void UpdateHeaderSyncLabel(); }; #endif // BITCOIN_QT_MODALOVERLAY_H diff --git a/src/qt/modaloverlay.cpp b/src/qt/modaloverlay.cpp --- a/src/qt/modaloverlay.cpp +++ b/src/qt/modaloverlay.cpp @@ -65,6 +65,7 @@ if (count > bestHeaderHeight) { bestHeaderHeight = count; bestHeaderDate = blockDate; + UpdateHeaderSyncLabel(); } } @@ -143,12 +144,22 @@ ui->numberOfBlocksLeft->setText( QString::number(bestHeaderHeight - count)); } else { - ui->numberOfBlocksLeft->setText( - tr("Unknown. Syncing Headers (%1)...").arg(bestHeaderHeight)); + UpdateHeaderSyncLabel(); ui->expectedTimeLeft->setText(tr("Unknown...")); } } +void ModalOverlay::UpdateHeaderSyncLabel() { + int est_headers_left = bestHeaderDate.secsTo(QDateTime::currentDateTime()) / + Params().GetConsensus().nPowTargetSpacing; + ui->numberOfBlocksLeft->setText( + tr("Unknown. Syncing Headers (%1, %2%)...") + .arg(bestHeaderHeight) + .arg(QString::number(100.0 / (bestHeaderHeight + est_headers_left) * + bestHeaderHeight, + 'f', 1))); +} + void ModalOverlay::toggleVisibility() { showHide(layerIsVisible, true); if (!layerIsVisible) {