Skip to content

Commit 6674e27

Browse files
committed
qml: Add "-prune" settings to OptionsQmlModel class
Github-Pull: #207 Rebased-From: 93f78f8
1 parent 72745b5 commit 6674e27

File tree

3 files changed

+55
-0
lines changed

3 files changed

+55
-0
lines changed

src/qml/BitcoinApp/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,6 @@ target_link_libraries(bitcoin_qml
6161
PUBLIC
6262
Qt6::Widgets
6363
Qt6::Quick
64+
PRIVATE
65+
univalue
6466
)

src/qml/BitcoinApp/options_model.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,43 @@
44

55
#include <qml/BitcoinApp/options_model.h>
66

7+
#include <common/args.h>
8+
#include <common/settings.h>
79
#include <interfaces/node.h>
10+
#include <qt/guiconstants.h>
11+
#include <qt/optionsmodel.h>
12+
#include <univalue.h>
13+
14+
#include <cassert>
815

916
OptionsQmlModel::OptionsQmlModel(interfaces::Node& node)
1017
: m_node{node}
1118
{
19+
int64_t prune_value{SettingToInt(m_node.getPersistentSetting("prune"), 0)};
20+
m_prune = (prune_value > 1);
21+
m_prune_size_gb = m_prune ? PruneMiBtoGB(prune_value) : DEFAULT_PRUNE_TARGET_GB;
22+
}
23+
24+
void OptionsQmlModel::setPrune(bool new_prune)
25+
{
26+
if (new_prune != m_prune) {
27+
m_prune = new_prune;
28+
m_node.updateRwSetting("prune", pruneSetting());
29+
Q_EMIT pruneChanged(new_prune);
30+
}
31+
}
32+
33+
void OptionsQmlModel::setPruneSizeGB(int new_prune_size_gb)
34+
{
35+
if (new_prune_size_gb != m_prune_size_gb) {
36+
m_prune_size_gb = new_prune_size_gb;
37+
m_node.updateRwSetting("prune", pruneSetting());
38+
Q_EMIT pruneSizeGBChanged(new_prune_size_gb);
39+
}
40+
}
41+
42+
common::SettingsValue OptionsQmlModel::pruneSetting() const
43+
{
44+
assert(!m_prune || m_prune_size_gb >= 1);
45+
return m_prune ? PruneGBtoMiB(m_prune_size_gb) : 0;
1246
}

src/qml/BitcoinApp/options_model.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
#ifndef BITCOIN_QML_OPTIONS_MODEL_H
66
#define BITCOIN_QML_OPTIONS_MODEL_H
77

8+
#include <common/settings.h>
9+
810
#include <QObject>
911

1012
namespace interfaces {
@@ -15,12 +17,29 @@ class Node;
1517
class OptionsQmlModel : public QObject
1618
{
1719
Q_OBJECT
20+
Q_PROPERTY(bool prune READ prune WRITE setPrune NOTIFY pruneChanged)
21+
Q_PROPERTY(int pruneSizeGB READ pruneSizeGB WRITE setPruneSizeGB NOTIFY pruneSizeGBChanged)
1822

1923
public:
2024
explicit OptionsQmlModel(interfaces::Node& node);
2125

26+
bool prune() const { return m_prune; }
27+
void setPrune(bool new_prune);
28+
int pruneSizeGB() const { return m_prune_size_gb; }
29+
void setPruneSizeGB(int new_prune_size);
30+
31+
Q_SIGNALS:
32+
void pruneChanged(bool new_prune);
33+
void pruneSizeGBChanged(int new_prune_size_gb);
34+
2235
private:
2336
interfaces::Node& m_node;
37+
38+
// Properties that are exposed to QML.
39+
bool m_prune;
40+
int m_prune_size_gb;
41+
42+
common::SettingsValue pruneSetting() const;
2443
};
2544

2645
#endif // BITCOIN_QML_OPTIONS_MODEL_H

0 commit comments

Comments
 (0)