aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/qt/bitcoin.cpp4
-rw-r--r--src/qt/bitcoin.h2
-rw-r--r--src/qt/optionsmodel.cpp22
-rw-r--r--src/qt/optionsmodel.h3
4 files changed, 26 insertions, 5 deletions
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index adc19df935..f2e62040ae 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -282,6 +282,10 @@ void BitcoinApplication::parameterSetup()
m_node.initParameterInteraction();
}
+void BitcoinApplication::SetPrune(bool prune, bool force) {
+ optionsModel->SetPrune(prune, force);
+}
+
void BitcoinApplication::requestInitialize()
{
qDebug() << __func__ << ": Requesting initialize";
diff --git a/src/qt/bitcoin.h b/src/qt/bitcoin.h
index 3869193a3a..8c77fd8a7d 100644
--- a/src/qt/bitcoin.h
+++ b/src/qt/bitcoin.h
@@ -67,6 +67,8 @@ public:
void parameterSetup();
/// Create options model
void createOptionsModel(bool resetSettings);
+ /// Update prune value
+ void SetPrune(bool prune, bool force = false);
/// Create main window
void createWindow(const NetworkStyle *networkStyle);
/// Create splash screen
diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp
index f3974b1c85..d047a82475 100644
--- a/src/qt/optionsmodel.cpp
+++ b/src/qt/optionsmodel.cpp
@@ -92,11 +92,7 @@ void OptionsModel::Init(bool resetSettings)
settings.setValue("bPrune", false);
if (!settings.contains("nPruneSize"))
settings.setValue("nPruneSize", 2);
- // Convert prune size from GB to MiB:
- const uint64_t nPruneSizeMiB = (settings.value("nPruneSize").toInt() * GB_BYTES) >> 20;
- if (!m_node.softSetArg("-prune", settings.value("bPrune").toBool() ? std::to_string(nPruneSizeMiB) : "0")) {
- addOverriddenOption("-prune");
- }
+ SetPrune(settings.value("bPrune").toBool());
if (!settings.contains("nDatabaseCache"))
settings.setValue("nDatabaseCache", (qint64)nDefaultDbCache);
@@ -240,6 +236,22 @@ static const QString GetDefaultProxyAddress()
return QString("%1:%2").arg(DEFAULT_GUI_PROXY_HOST).arg(DEFAULT_GUI_PROXY_PORT);
}
+void OptionsModel::SetPrune(bool prune, bool force)
+{
+ QSettings settings;
+ settings.setValue("bPrune", prune);
+ // Convert prune size from GB to MiB:
+ const uint64_t nPruneSizeMiB = (settings.value("nPruneSize").toInt() * GB_BYTES) >> 20;
+ std::string prune_val = prune ? std::to_string(nPruneSizeMiB) : "0";
+ if (force) {
+ m_node.forceSetArg("-prune", prune_val);
+ return;
+ }
+ if (!m_node.softSetArg("-prune", prune_val)) {
+ addOverriddenOption("-prune");
+ }
+}
+
// read QSettings values and return them
QVariant OptionsModel::data(const QModelIndex & index, int role) const
{
diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h
index 1af3a72b92..b1231b7c7d 100644
--- a/src/qt/optionsmodel.h
+++ b/src/qt/optionsmodel.h
@@ -77,6 +77,9 @@ public:
bool getCoinControlFeatures() const { return fCoinControlFeatures; }
const QString& getOverriddenByCommandLine() { return strOverriddenByCommandLine; }
+ /* Explicit setters */
+ void SetPrune(bool prune, bool force = false);
+
/* Restart flag helper */
void setRestartRequired(bool fRequired);
bool isRestartRequired() const;