aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2012-04-04 04:36:09 -0700
committerWladimir J. van der Laan <laanwj@gmail.com>2012-04-04 04:36:09 -0700
commitcadae3588c5553b8c7ef76c14d07041f639fb926 (patch)
tree63132d9bb8ce79fdadf503e66eddf90235653774 /src
parentfc8c44e3d567a5a3cd1b373bd588015296a5a6f3 (diff)
parent853a4a81b33a5c636c296f136822016cc65ab698 (diff)
Merge pull request #1025 from Diapolo/GUI-BlockDL
modified block DL progressbar to be more informative and precise
Diffstat (limited to 'src')
-rw-r--r--src/qt/bitcoingui.cpp34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp
index cf4e43c5da..00bb5bd158 100644
--- a/src/qt/bitcoingui.cpp
+++ b/src/qt/bitcoingui.cpp
@@ -138,17 +138,20 @@ BitcoinGUI::BitcoinGUI(QWidget *parent):
frameBlocksLayout->addWidget(labelBlocksIcon);
frameBlocksLayout->addStretch();
- // Progress bar for blocks download
- progressBarLabel = new QLabel(tr("Synchronizing with network..."));
+ // Progress bar and label for blocks download
+ progressBarLabel = new QLabel();
progressBarLabel->setVisible(false);
progressBar = new QProgressBar();
- progressBar->setToolTip(tr("Block chain synchronization in progress"));
progressBar->setVisible(false);
statusBar()->addWidget(progressBarLabel);
statusBar()->addWidget(progressBar);
statusBar()->addPermanentWidget(frameBlocks);
+ // define OS independent progress bar style (has to be placed after addWidget(), otherwise we crash)
+ // we did this, because with some OSes default style, text on the progress bar is unreadable
+ 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);
// Clicking on a transaction on the overview page simply sends you to transaction history page
@@ -451,20 +454,31 @@ void BitcoinGUI::setNumConnections(int count)
void BitcoinGUI::setNumBlocks(int count)
{
- if(!clientModel)
+ // don't show / hide progressBar and it's label if we have no connection(s) to the network
+ if (!clientModel || clientModel->getNumConnections() == 0)
+ {
+ progressBarLabel->setVisible(false);
+ progressBar->setVisible(false);
+
return;
- int total = clientModel->getNumBlocksOfPeers();
+ }
+
+ int nTotalBlocks = clientModel->getNumBlocksOfPeers();
QString tooltip;
- if(count < total)
+ if(count < nTotalBlocks)
{
+ int nRemainingBlocks = nTotalBlocks - count;
+ float nPercentageDone = count / (nTotalBlocks * 0.01f);
+
if (clientModel->getStatusBarWarnings() == "")
{
- progressBarLabel->setVisible(true);
progressBarLabel->setText(tr("Synchronizing with network..."));
- progressBar->setVisible(true);
- progressBar->setMaximum(total);
+ progressBarLabel->setVisible(true);
+ progressBar->setFormat(tr("~%n block(s) remaining", "", nRemainingBlocks));
+ progressBar->setMaximum(nTotalBlocks);
progressBar->setValue(count);
+ progressBar->setVisible(true);
}
else
{
@@ -472,7 +486,7 @@ void BitcoinGUI::setNumBlocks(int count)
progressBarLabel->setVisible(true);
progressBar->setVisible(false);
}
- tooltip = tr("Downloaded %1 of %2 blocks of transaction history.").arg(count).arg(total);
+ tooltip = tr("Downloaded %1 of %2 blocks of transaction history (%3% done).").arg(count).arg(nTotalBlocks).arg(nPercentageDone, 0, 'f', 2);
}
else
{