Browse Source

[Qt] only update "amount of blocks left" when the header chain is in-sync

0.14
Jonas Schnelli 8 years ago
parent
commit
d8b062ef5e
No known key found for this signature in database
GPG Key ID: 29D4BCB6416F53EC
  1. 7
      src/qt/bitcoingui.cpp
  2. 10
      src/qt/clientmodel.cpp
  3. 4
      src/qt/clientmodel.h
  4. 3
      src/qt/forms/modaloverlay.ui
  5. 15
      src/qt/modaloverlay.cpp
  6. 2
      src/qt/modaloverlay.h

7
src/qt/bitcoingui.cpp

@ -500,7 +500,7 @@ void BitcoinGUI::setClientModel(ClientModel *clientModel) @@ -500,7 +500,7 @@ void BitcoinGUI::setClientModel(ClientModel *clientModel)
setTrayIconVisible(optionsModel->getHideTrayIcon());
}
modalOverlay->setKnownBestHeight(clientModel->getHeaderHeight());
modalOverlay->setKnownBestHeight(clientModel->getHeaderTipHeight(), QDateTime::fromTime_t(clientModel->getHeaderTipTime()));
} else {
// Disable possibility to show main window via action
toggleHideAction->setEnabled(false);
@ -718,7 +718,10 @@ void BitcoinGUI::setNumBlocks(int count, const QDateTime& blockDate, double nVer @@ -718,7 +718,10 @@ void BitcoinGUI::setNumBlocks(int count, const QDateTime& blockDate, double nVer
if (modalOverlay)
{
if (header)
modalOverlay->setKnownBestHeight(count);
{
/* use clientmodels getHeaderTipHeight and getHeaderTipTime because the NotifyHeaderTip signal does not fire when updating the best header */
modalOverlay->setKnownBestHeight(clientModel->getHeaderTipHeight(), QDateTime::fromTime_t(clientModel->getHeaderTipTime()));
}
else
modalOverlay->tipUpdate(count, blockDate, nVerificationProgress);
}

10
src/qt/clientmodel.cpp

@ -68,7 +68,7 @@ int ClientModel::getNumBlocks() const @@ -68,7 +68,7 @@ int ClientModel::getNumBlocks() const
return chainActive.Height();
}
int ClientModel::getHeaderHeight() const
int ClientModel::getHeaderTipHeight() const
{
LOCK(cs_main);
if (!pindexBestHeader)
@ -76,6 +76,14 @@ int ClientModel::getHeaderHeight() const @@ -76,6 +76,14 @@ int ClientModel::getHeaderHeight() const
return pindexBestHeader->nHeight;
}
int64_t ClientModel::getHeaderTipTime() const
{
LOCK(cs_main);
if (!pindexBestHeader)
return 0;
return pindexBestHeader->GetBlockTime();
}
quint64 ClientModel::getTotalBytesRecv() const
{
return CNode::GetTotalBytesRecv();

4
src/qt/clientmodel.h

@ -51,8 +51,8 @@ public: @@ -51,8 +51,8 @@ public:
//! Return number of connections, default is in- and outbound (total)
int getNumConnections(unsigned int flags = CONNECTIONS_ALL) const;
int getNumBlocks() const;
int getHeaderHeight() const;
int getHeaderTipHeight() const;
int64_t getHeaderTipTime() const;
//! Return number of transactions in the mempool
long getMempoolSize() const;
//! Return the dynamic memory usage of the mempool

3
src/qt/forms/modaloverlay.ui

@ -82,6 +82,9 @@ QLabel { color: rgb(40,40,40); }</string> @@ -82,6 +82,9 @@ QLabel { color: rgb(40,40,40); }</string>
</property>
<item>
<widget class="QPushButton" name="warningIcon">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string/>
</property>

15
src/qt/modaloverlay.cpp

@ -63,10 +63,17 @@ bool ModalOverlay::event(QEvent* ev) { @@ -63,10 +63,17 @@ bool ModalOverlay::event(QEvent* ev) {
return QWidget::event(ev);
}
void ModalOverlay::setKnownBestHeight(int count)
void ModalOverlay::setKnownBestHeight(int count, const QDateTime& blockDate)
{
if (count > bestBlockHeight)
bestBlockHeight = count;
/* only update the blockheight if the headerschain-tip is not older then 30 days */
int64_t now = QDateTime::currentDateTime().toTime_t();
int64_t btime = blockDate.toTime_t();
if (btime+3600*24*30 > now)
{
if (count > bestBlockHeight)
bestBlockHeight = count;
}
}
void ModalOverlay::tipUpdate(int count, const QDateTime& blockDate, double nVerificationProgress)
@ -122,6 +129,8 @@ void ModalOverlay::tipUpdate(int count, const QDateTime& blockDate, double nVeri @@ -122,6 +129,8 @@ void ModalOverlay::tipUpdate(int count, const QDateTime& blockDate, double nVeri
// show remaining amount of blocks
if (bestBlockHeight > 0)
ui->amountOfBlocksLeft->setText(QString::number(bestBlockHeight-count));
else
ui->expectedTimeLeft->setText(tr("Unknown. Syncing Headers..."));
}
void ModalOverlay::showHide(bool hide, bool userRequested)

2
src/qt/modaloverlay.h

@ -23,7 +23,7 @@ public: @@ -23,7 +23,7 @@ public:
public Q_SLOTS:
void tipUpdate(int count, const QDateTime& blockDate, double nVerificationProgress);
void setKnownBestHeight(int count);
void setKnownBestHeight(int count, const QDateTime& blockDate);
// will show or hide the modal layer
void showHide(bool hide = false, bool userRequested = false);

Loading…
Cancel
Save