aboutsummaryrefslogtreecommitdiff
path: root/src
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 /src
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.
Diffstat (limited to 'src')
-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.