aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHennadii Stepanov <32963518+hebasto@users.noreply.github.com>2019-11-12 13:23:09 +0200
committerHennadii Stepanov <32963518+hebasto@users.noreply.github.com>2020-01-08 17:21:34 +0200
commite35e4b2ba052c9a533626286026dbe0a2d546c5b (patch)
treef1da9cbddeb6fd0f81c4f21b4b08d435563e702f
parent295211e668290d7741eb0fd46223087c21fc7c59 (diff)
downloadbitcoin-e35e4b2ba052c9a533626286026dbe0a2d546c5b.tar.xz
util: Add PruneMiBtoGB() function
Now the text of prune QCheckBox shows the space in GB instead of thousands MiB, which is consistent with other parts of the GUI.
-rw-r--r--src/qt/intro.cpp17
-rw-r--r--src/qt/optionsmodel.h6
2 files changed, 15 insertions, 8 deletions
diff --git a/src/qt/intro.cpp b/src/qt/intro.cpp
index f064556ae5..183c2fcfb6 100644
--- a/src/qt/intro.cpp
+++ b/src/qt/intro.cpp
@@ -12,6 +12,7 @@
#include <qt/guiconstants.h>
#include <qt/guiutil.h>
+#include <qt/optionsmodel.h>
#include <interfaces/node.h>
#include <util/system.h>
@@ -23,7 +24,7 @@
#include <cmath>
/* Total required space (in GB) depending on user choice (prune, not prune) */
-static uint64_t requiredSpace;
+static int64_t requiredSpace;
/* Check free space asynchronously to prevent hanging the UI thread.
@@ -130,18 +131,18 @@ Intro::Intro(QWidget *parent, uint64_t blockchain_size, uint64_t chain_state_siz
);
ui->lblExplanation2->setText(ui->lblExplanation2->text().arg(PACKAGE_NAME));
- uint64_t pruneTarget = std::max<int64_t>(0, gArgs.GetArg("-prune", 0));
- if (pruneTarget > 1) { // -prune=1 means enabled, above that it's a size in MB
+ int64_t prune_target_mib = std::max<int64_t>(0, gArgs.GetArg("-prune", 0));
+ if (prune_target_mib > 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(pruneTarget ? pruneTarget / 1000 : DEFAULT_PRUNE_TARGET_GB));
+ const int prune_target_gb = PruneMiBtoGB(prune_target_mib);
+ ui->prune->setText(tr("Discard blocks after verification, except most recent %1 GB (prune)").arg(prune_target_gb ? prune_target_gb : DEFAULT_PRUNE_TARGET_GB));
requiredSpace = m_blockchain_size;
QString storageRequiresMsg = tr("At least %1 GB of data will be stored in this directory, and it will grow over time.");
- if (pruneTarget) {
- uint64_t prunedGBs = std::ceil(pruneTarget * 1024 * 1024.0 / GB_BYTES);
- if (prunedGBs <= requiredSpace) {
- requiredSpace = prunedGBs;
+ if (prune_target_gb) {
+ if (prune_target_gb <= requiredSpace) {
+ requiredSpace = prune_target_gb;
storageRequiresMsg = tr("Approximately %1 GB of data will be stored in this directory.");
}
ui->lblExplanation3->setVisible(true);
diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h
index 6f5c8b8c5c..9751deadc4 100644
--- a/src/qt/optionsmodel.h
+++ b/src/qt/optionsmodel.h
@@ -6,6 +6,7 @@
#define BITCOIN_QT_OPTIONSMODEL_H
#include <amount.h>
+#include <qt/guiconstants.h>
#include <QAbstractListModel>
@@ -16,6 +17,11 @@ class Node;
extern const char *DEFAULT_GUI_PROXY_HOST;
static constexpr unsigned short DEFAULT_GUI_PROXY_PORT = 9050;
+/**
+ * Convert configured prune target MiB to displayed GB. Round up to avoid underestimating max disk usage.
+ */
+static inline int PruneMiBtoGB(int64_t mib) { return (mib * 1024 * 1024 + GB_BYTES - 1) / GB_BYTES; }
+
/** Interface from Qt to configuration data structure for Bitcoin client.
To Qt, the options are presented as a list with the different options
laid out vertically.