|
|
@ -82,30 +82,28 @@ void ModalOverlay::tipUpdate(int count, const QDateTime& blockDate, double nVeri |
|
|
|
blockProcessTime.push_front(qMakePair(currentDate.toMSecsSinceEpoch(), nVerificationProgress)); |
|
|
|
blockProcessTime.push_front(qMakePair(currentDate.toMSecsSinceEpoch(), nVerificationProgress)); |
|
|
|
|
|
|
|
|
|
|
|
// show progress speed if we have more then one sample
|
|
|
|
// show progress speed if we have more then one sample
|
|
|
|
if (blockProcessTime.size() >= 2) |
|
|
|
if (blockProcessTime.size() >= 2) { |
|
|
|
{ |
|
|
|
|
|
|
|
double progressStart = blockProcessTime[0].second; |
|
|
|
|
|
|
|
double progressDelta = 0; |
|
|
|
double progressDelta = 0; |
|
|
|
double progressPerHour = 0; |
|
|
|
double progressPerHour = 0; |
|
|
|
qint64 timeDelta = 0; |
|
|
|
qint64 timeDelta = 0; |
|
|
|
qint64 remainingMSecs = 0; |
|
|
|
qint64 remainingMSecs = 0; |
|
|
|
double remainingProgress = 1.0 - nVerificationProgress; |
|
|
|
double remainingProgress = 1.0 - nVerificationProgress; |
|
|
|
for (int i = 1; i < blockProcessTime.size(); i++) |
|
|
|
for (int i = 1; i < blockProcessTime.size(); i++) { |
|
|
|
{ |
|
|
|
|
|
|
|
QPair<qint64, double> sample = blockProcessTime[i]; |
|
|
|
QPair<qint64, double> sample = blockProcessTime[i]; |
|
|
|
|
|
|
|
|
|
|
|
// take first sample after 500 seconds or last available one
|
|
|
|
// take first sample after 500 seconds or last available one
|
|
|
|
if (sample.first < (currentDate.toMSecsSinceEpoch() - 500 * 1000) || i == blockProcessTime.size() - 1) { |
|
|
|
if (sample.first < (currentDate.toMSecsSinceEpoch() - 500 * 1000) || i == blockProcessTime.size() - 1) { |
|
|
|
progressDelta = progressStart-sample.second; |
|
|
|
progressDelta = blockProcessTime[0].second - sample.second; |
|
|
|
timeDelta = blockProcessTime[0].first - sample.first; |
|
|
|
timeDelta = blockProcessTime[0].first - sample.first; |
|
|
|
progressPerHour = progressDelta/(double)timeDelta*1000*3600; |
|
|
|
progressPerHour = progressDelta / (double) timeDelta * 1000 * 3600; |
|
|
|
remainingMSecs = (progressDelta > 0) ? remainingProgress / progressDelta * timeDelta : -1; |
|
|
|
remainingMSecs = (progressDelta > 0) ? remainingProgress / progressDelta * timeDelta : -1; |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// show progress increase per hour
|
|
|
|
// show progress increase per hour
|
|
|
|
ui->progressIncreasePerH->setText(QString::number(progressPerHour*100, 'f', 2)+"%"); |
|
|
|
ui->progressIncreasePerH->setText(QString::number(progressPerHour * 100, 'f', 2)+"%"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// show expected remaining time
|
|
|
|
if(remainingMSecs >= 0) { |
|
|
|
if(remainingMSecs >= 0) { |
|
|
|
ui->expectedTimeLeft->setText(GUIUtil::formatNiceTimeOffset(remainingMSecs / 1000.0)); |
|
|
|
ui->expectedTimeLeft->setText(GUIUtil::formatNiceTimeOffset(remainingMSecs / 1000.0)); |
|
|
|
} else { |
|
|
|
} else { |
|
|
@ -113,8 +111,9 @@ void ModalOverlay::tipUpdate(int count, const QDateTime& blockDate, double nVeri |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static const int MAX_SAMPLES = 5000; |
|
|
|
static const int MAX_SAMPLES = 5000; |
|
|
|
if (blockProcessTime.count() > MAX_SAMPLES) |
|
|
|
if (blockProcessTime.count() > MAX_SAMPLES) { |
|
|
|
blockProcessTime.remove(MAX_SAMPLES, blockProcessTime.count()-MAX_SAMPLES); |
|
|
|
blockProcessTime.remove(MAX_SAMPLES, blockProcessTime.count() - MAX_SAMPLES); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// show the last block date
|
|
|
|
// show the last block date
|
|
|
|