diff options
author | Luke Dashjr <luke-jr+git@utopios.org> | 2020-04-21 21:14:11 +0000 |
---|---|---|
committer | Luke Dashjr <luke-jr+git@utopios.org> | 2020-11-19 03:31:12 +0000 |
commit | e2dcd957fa206a28404ff824fb764b8889705fb2 (patch) | |
tree | f6feb981eef3ca8344bb0314575de3c029749237 | |
parent | f2e5a6b54fa38b10d822609939b8108bd8fe041b (diff) | |
download | bitcoin-e2dcd957fa206a28404ff824fb764b8889705fb2.tar.xz |
GUI/Intro: Rework UI flow to let the user set prune size in GBs
-rw-r--r-- | src/qt/forms/intro.ui | 46 | ||||
-rw-r--r-- | src/qt/intro.cpp | 12 | ||||
-rw-r--r-- | src/qt/intro.h | 2 |
3 files changed, 47 insertions, 13 deletions
diff --git a/src/qt/forms/intro.ui b/src/qt/forms/intro.ui index f27a4ebe44..db1b567049 100644 --- a/src/qt/forms/intro.ui +++ b/src/qt/forms/intro.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>674</width> - <height>415</height> + <height>447</height> </rect> </property> <property name="windowTitle"> @@ -201,6 +201,40 @@ </layout> </item> <item> + <layout class="QHBoxLayout" name="pruneOptLayout"> + <item> + <widget class="QCheckBox" name="prune"> + <property name="text"> + <string>Limit block chain storage to</string> + </property> + <property name="toolTip"> + <string>Reverting this setting requires re-downloading the entire blockchain. It is faster to download the full chain first and prune it later. Disables some advanced features.</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="pruneGB"> + <property name="suffix"> + <string> GB</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> <widget class="QLabel" name="lblExplanation1"> <property name="text"> <string>When you click OK, %1 will begin to download and process the full %4 block chain (%2GB) starting with the earliest transactions in %3 when %4 initially launched.</string> @@ -211,16 +245,6 @@ </widget> </item> <item> - <widget class="QCheckBox" name="prune"> - <property name="toolTip"> - <string>Reverting this setting requires re-downloading the entire blockchain. It is faster to download the full chain first and prune it later. Disables some advanced features.</string> - </property> - <property name="text"> - <string></string> - </property> - </widget> - </item> - <item> <widget class="QLabel" name="lblExplanation2"> <property name="text"> <string>This initial synchronisation is very demanding, and may expose hardware problems with your computer that had previously gone unnoticed. Each time you run %1, it will continue downloading where it left off.</string> diff --git a/src/qt/intro.cpp b/src/qt/intro.cpp index 61fb1463b9..e91722795c 100644 --- a/src/qt/intro.cpp +++ b/src/qt/intro.cpp @@ -17,6 +17,7 @@ #include <interfaces/node.h> #include <util/system.h> +#include <validation.h> #include <QFileDialog> #include <QSettings> @@ -139,17 +140,25 @@ Intro::Intro(QWidget *parent, int64_t blockchain_size_gb, int64_t chain_state_si ); ui->lblExplanation2->setText(ui->lblExplanation2->text().arg(PACKAGE_NAME)); + const int min_prune_target_GB = std::ceil(MIN_DISK_SPACE_FOR_BLOCK_FILES / 1e9); + ui->pruneGB->setRange(min_prune_target_GB, std::numeric_limits<int>::max()); if (gArgs.GetArg("-prune", 0) > 1) { // -prune=1 means enabled, above that it's a size in MiB ui->prune->setChecked(true); ui->prune->setEnabled(false); } - ui->prune->setText(tr("Discard blocks after verification, except most recent %1 GB (prune)").arg(m_prune_target_gb)); + ui->pruneGB->setValue(m_prune_target_gb); + ui->pruneGB->setToolTip(ui->prune->toolTip()); UpdatePruneLabels(ui->prune->isChecked()); connect(ui->prune, &QCheckBox::toggled, [this](bool prune_checked) { UpdatePruneLabels(prune_checked); UpdateFreeSpaceLabel(); }); + connect(ui->pruneGB, QOverload<int>::of(&QSpinBox::valueChanged), [this](int prune_GB) { + m_prune_target_gb = prune_GB; + UpdatePruneLabels(ui->prune->isChecked()); + UpdateFreeSpaceLabel(); + }); startThread(); } @@ -371,6 +380,7 @@ void Intro::UpdatePruneLabels(bool prune_checked) storageRequiresMsg = tr("Approximately %1 GB of data will be stored in this directory."); } ui->lblExplanation3->setVisible(prune_checked); + ui->pruneGB->setEnabled(prune_checked); ui->sizeWarningLabel->setText( tr("%1 will download and store a copy of the Bitcoin block chain.").arg(PACKAGE_NAME) + " " + storageRequiresMsg.arg(m_required_space_gb) + " " + diff --git a/src/qt/intro.h b/src/qt/intro.h index bf7dad6ffb..88fe2b722d 100644 --- a/src/qt/intro.h +++ b/src/qt/intro.h @@ -73,7 +73,7 @@ private: //! 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}; - const int64_t m_prune_target_gb; + int64_t m_prune_target_gb; void startThread(); void checkPath(const QString &dataDir); |