polished code and fixed progress display (was very jerky at the end of a sync)

This commit is contained in:
Philip Kaufmann 2012-04-02 23:51:40 +02:00
parent e9de46c436
commit a7a69cd07a

View file

@ -148,10 +148,8 @@ BitcoinGUI::BitcoinGUI(QWidget *parent):
statusBar()->addWidget(progressBar); statusBar()->addWidget(progressBar);
statusBar()->addPermanentWidget(frameBlocks); statusBar()->addPermanentWidget(frameBlocks);
// define progress bar format
progressBar->setFormat(tr("~%m blocks remaining"));
// define OS independent progress bar style (has to be after addWidget(), otherwise we crash) // define OS independent progress bar style (has to be after addWidget(), otherwise we crash)
progressBar->setStyleSheet("QProgressBar { background-color: transparent; border: 1px solid grey; border-radius: 5px; text-align: center; } QProgressBar::chunk { background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #FF8000, stop: 1 orange); margin: 0px; }"); progressBar->setStyleSheet("QProgressBar { background-color: transparent; border: 1px solid grey; border-radius: 2px; padding: 1px; text-align: center; } QProgressBar::chunk { background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #FF8000, stop: 1 orange); margin: 0px; }");
syncIconMovie = new QMovie(":/movies/update_spinner", "mng", this); syncIconMovie = new QMovie(":/movies/update_spinner", "mng", this);
@ -464,21 +462,21 @@ void BitcoinGUI::setNumBlocks(int count)
return; return;
} }
int nTotal = clientModel->getNumBlocksOfPeers(); int nTotalBlocks = clientModel->getNumBlocksOfPeers();
QString tooltip; QString tooltip;
if(count < nTotal) if(count < nTotalBlocks)
{ {
int nCurMax = nTotal - count; int nRemainingBlocks = nTotalBlocks - count;
int nOnePercentCurMax = nCurMax / 100; int nPercentageDone = (count / ((nTotalBlocks / 100) + 0.5f));
int nPercentageDone = (count / (nTotal / 100));
if (clientModel->getStatusBarWarnings() == "") if (clientModel->getStatusBarWarnings() == "")
{ {
progressBarLabel->setText(tr("Synchronizing with network...")); progressBarLabel->setText(tr("Synchronizing with network..."));
progressBarLabel->setVisible(true); progressBarLabel->setVisible(true);
progressBar->setMaximum(nCurMax); progressBar->setFormat("~" + QString::number(nRemainingBlocks)+ tr(" blocks remaining"));
progressBar->setValue(nOnePercentCurMax * nPercentageDone); progressBar->setMaximum(nTotalBlocks);
progressBar->setValue(count);
progressBar->setVisible(true); progressBar->setVisible(true);
} }
else else
@ -487,7 +485,7 @@ void BitcoinGUI::setNumBlocks(int count)
progressBarLabel->setVisible(true); progressBarLabel->setVisible(true);
progressBar->setVisible(false); progressBar->setVisible(false);
} }
tooltip = tr("Downloaded %1 of %2 blocks of transaction history (%3% done).").arg(count).arg(nTotal).arg(nPercentageDone); tooltip = tr("Downloaded %1 of %2 blocks of transaction history (%3% done).").arg(count).arg(nTotalBlocks).arg(nPercentageDone);
} }
else else
{ {