From 4881353efef81acc6ddbaaecd4ba89f012b3e87e Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Wed, 10 Apr 2013 15:45:49 +0200 Subject: rework ClientModel::getBlockSource() + BitcoinGUI::setNumBlocks() - updates ClientModel::getBlockSource() to return all available states and sorts enum BlockSource in order of usage cases (none default, then reindex, import and network) - updates BitcoinGUI::setNumBlocks() to better use getBlockSource() and also adds a message, when we have NO block source available --- src/qt/bitcoingui.cpp | 38 ++++++++++++++++---------------------- src/qt/clientmodel.cpp | 7 +++++-- src/qt/clientmodel.h | 4 ++-- 3 files changed, 23 insertions(+), 26 deletions(-) (limited to 'src/qt') diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 27272e69e1..542000993e 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -514,31 +514,26 @@ void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks) // Prevent orphan statusbar messages (e.g. hover Quit in main menu, wait until chain-sync starts -> garbelled text) statusBar()->clearMessage(); - // don't show / hide progress bar and its label if we have no connection to the network - enum BlockSource blockSource = clientModel ? clientModel->getBlockSource() : BLOCK_SOURCE_NONE; - if (blockSource == BLOCK_SOURCE_NONE || (blockSource == BLOCK_SOURCE_NETWORK && clientModel->getNumConnections() == 0)) - { - progressBarLabel->setVisible(false); - progressBar->setVisible(false); - - return; + // Acquire current block source + enum BlockSource blockSource = clientModel->getBlockSource(); + switch (blockSource) { + case BLOCK_SOURCE_NETWORK: + progressBarLabel->setText(tr("Synchronizing with network...")); + break; + case BLOCK_SOURCE_DISK: + progressBarLabel->setText(tr("Importing blocks from disk...")); + break; + case BLOCK_SOURCE_REINDEX: + progressBarLabel->setText(tr("Reindexing blocks on disk...")); + break; + case BLOCK_SOURCE_NONE: + // Case: not Importing, not Reindexing and no network connection + progressBarLabel->setText(tr("No block source available...")); + break; } QString tooltip; - QString importText; - switch (blockSource) { - case BLOCK_SOURCE_NONE: - case BLOCK_SOURCE_NETWORK: - importText = tr("Synchronizing with network..."); - break; - case BLOCK_SOURCE_DISK: - importText = tr("Importing blocks from disk..."); - break; - case BLOCK_SOURCE_REINDEX: - importText = tr("Reindexing blocks on disk..."); - } - QDateTime lastBlockDate = clientModel->getLastBlockDate(); QDateTime currentDate = QDateTime::currentDateTime(); int secs = lastBlockDate.secsTo(currentDate); @@ -580,7 +575,6 @@ void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks) timeBehindText = tr("%n week(s)","",secs/(7*24*60*60)); } - progressBarLabel->setText(importText); progressBarLabel->setVisible(true); progressBar->setFormat(tr("%1 behind").arg(timeBehindText)); progressBar->setMaximum(1000000000); diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp index c17c602b50..e8d99a8d45 100644 --- a/src/qt/clientmodel.cpp +++ b/src/qt/clientmodel.cpp @@ -122,9 +122,12 @@ enum BlockSource ClientModel::getBlockSource() const { if (fReindex) return BLOCK_SOURCE_REINDEX; - if (fImporting) + else if (fImporting) return BLOCK_SOURCE_DISK; - return BLOCK_SOURCE_NETWORK; + else if (getNumConnections() > 0) + return BLOCK_SOURCE_NETWORK; + + return BLOCK_SOURCE_NONE; } int ClientModel::getNumBlocksOfPeers() const diff --git a/src/qt/clientmodel.h b/src/qt/clientmodel.h index 904bff1886..f9d491aa50 100644 --- a/src/qt/clientmodel.h +++ b/src/qt/clientmodel.h @@ -15,9 +15,9 @@ QT_END_NAMESPACE enum BlockSource { BLOCK_SOURCE_NONE, - BLOCK_SOURCE_NETWORK, + BLOCK_SOURCE_REINDEX, BLOCK_SOURCE_DISK, - BLOCK_SOURCE_REINDEX + BLOCK_SOURCE_NETWORK }; /** Model for Bitcoin network client. */ -- cgit v1.2.3