From 4824a7d36cf47e766865e0fefe952ec860eb82dd Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Sun, 8 Dec 2019 17:18:15 +0200 Subject: [PATCH] gui: Add Intro::UpdateFreeSpaceLabel() If a new custom datadir has enough free space, the prune checkbox gets unchecked, unless -prune=NNN command-line option is provided. --- src/qt/intro.cpp | 31 +++++++++++++++++++------------ src/qt/intro.h | 2 ++ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/qt/intro.cpp b/src/qt/intro.cpp index a1a7c8ab8..cb7b13260 100644 --- a/src/qt/intro.cpp +++ b/src/qt/intro.cpp @@ -251,24 +251,31 @@ void Intro::setStatus(int status, const QString &message, quint64 bytesAvailable { ui->freeSpace->setText(""); } else { - QString freeString = tr("%n GB of free space available", "", bytesAvailable/GB_BYTES); - if (bytesAvailable < m_required_space_gb * GB_BYTES) { - freeString += " " + tr("(of %n GB needed)", "", m_required_space_gb); - ui->freeSpace->setStyleSheet("QLabel { color: #800000 }"); - ui->prune->setChecked(true); - } else if (bytesAvailable / GB_BYTES - m_required_space_gb < 10) { - freeString += " " + tr("(%n GB needed for full chain)", "", m_required_space_gb); - ui->freeSpace->setStyleSheet("QLabel { color: #999900 }"); - ui->prune->setChecked(true); - } else { - ui->freeSpace->setStyleSheet(""); + m_bytes_available = bytesAvailable; + if (ui->prune->isEnabled()) { + ui->prune->setChecked(m_bytes_available < (m_blockchain_size_gb + m_chain_state_size_gb + 10) * GB_BYTES); } - ui->freeSpace->setText(freeString + "."); + UpdateFreeSpaceLabel(); } /* Don't allow confirm in ERROR state */ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(status != FreespaceChecker::ST_ERROR); } +void Intro::UpdateFreeSpaceLabel() +{ + QString freeString = tr("%n GB of free space available", "", m_bytes_available / GB_BYTES); + if (m_bytes_available < m_required_space_gb * GB_BYTES) { + freeString += " " + tr("(of %n GB needed)", "", m_required_space_gb); + ui->freeSpace->setStyleSheet("QLabel { color: #800000 }"); + } else if (m_bytes_available / GB_BYTES - m_required_space_gb < 10) { + freeString += " " + tr("(%n GB needed for full chain)", "", m_required_space_gb); + ui->freeSpace->setStyleSheet("QLabel { color: #999900 }"); + } else { + ui->freeSpace->setStyleSheet(""); + } + ui->freeSpace->setText(freeString + "."); +} + void Intro::on_dataDirectory_textChanged(const QString &dataDirStr) { /* Disable OK button until check result comes in */ diff --git a/src/qt/intro.h b/src/qt/intro.h index b4fd39000..8375847cc 100644 --- a/src/qt/intro.h +++ b/src/qt/intro.h @@ -71,11 +71,13 @@ private: const int64_t m_chain_state_size_gb; //! Total required space (in GB) depending on user choice (prune or not prune). int64_t m_required_space_gb{0}; + uint64_t m_bytes_available{0}; void startThread(); void checkPath(const QString &dataDir); QString getPathToCheck(); void UpdatePruneLabels(int64_t prune_target_gb); + void UpdateFreeSpaceLabel(); friend class FreespaceChecker; };