|
|
@ -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
|
|
|
|