Bitcoin Core 22.99.0
P2P Digital Currency
optionsmodel.h
Go to the documentation of this file.
1// Copyright (c) 2011-2020 The Bitcoin Core developers
2// Distributed under the MIT software license, see the accompanying
3// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5#ifndef BITCOIN_QT_OPTIONSMODEL_H
6#define BITCOIN_QT_OPTIONSMODEL_H
7
8#include <cstdint>
9#include <qt/guiconstants.h>
10
11#include <QAbstractListModel>
12
13#include <assert.h>
14
15namespace interfaces {
16class Node;
17}
18
19extern const char *DEFAULT_GUI_PROXY_HOST;
20static constexpr uint16_t DEFAULT_GUI_PROXY_PORT = 9050;
21
25static inline int PruneMiBtoGB(int64_t mib) { return (mib * 1024 * 1024 + GB_BYTES - 1) / GB_BYTES; }
26
30static inline int64_t PruneGBtoMiB(int gb) { return gb * GB_BYTES / 1024 / 1024; }
31
38class OptionsModel : public QAbstractListModel
39{
40 Q_OBJECT
41
42public:
43 explicit OptionsModel(QObject *parent = nullptr, bool resetSettings = false);
44
45 enum OptionID {
47 ShowTrayIcon, // bool
49 MapPortUPnP, // bool
52 ProxyUse, // bool
53 ProxyIP, // QString
54 ProxyPort, // int
55 ProxyUseTor, // bool
56 ProxyIPTor, // QString
58 DisplayUnit, // BitcoinUnits::Unit
59 ThirdPartyTxUrls, // QString
60 Language, // QString
65 Prune, // bool
66 PruneSize, // int
70 Listen, // bool
71 Server, // bool
73 };
74
75 void Init(bool resetSettings = false);
76 void Reset();
77
78 int rowCount(const QModelIndex & parent = QModelIndex()) const override;
79 QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override;
80 bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole) override;
82 void setDisplayUnit(const QVariant &value);
83
84 /* Explicit getters */
85 bool getShowTrayIcon() const { return m_show_tray_icon; }
86 bool getMinimizeToTray() const { return fMinimizeToTray; }
87 bool getMinimizeOnClose() const { return fMinimizeOnClose; }
88 int getDisplayUnit() const { return nDisplayUnit; }
89 QString getThirdPartyTxUrls() const { return strThirdPartyTxUrls; }
94
95 /* Explicit setters */
96 void SetPruneEnabled(bool prune, bool force = false);
97 void SetPruneTargetGB(int prune_target_gb, bool force = false);
98
99 /* Restart flag helper */
100 void setRestartRequired(bool fRequired);
101 bool isRestartRequired() const;
102
103 interfaces::Node& node() const { assert(m_node); return *m_node; }
105
106private:
108 /* Qt-only settings */
112 QString language;
118 /* settings that were overridden by command-line */
120
121 // Add option to list of GUI options overridden through command line/config file
122 void addOverriddenOption(const std::string &option);
123
124 // Check settings version and upgrade default values if required
125 void checkAndMigrate();
126Q_SIGNALS:
127 void displayUnitChanged(int unit);
129 void showTrayIconChanged(bool);
131};
132
133#endif // BITCOIN_QT_OPTIONSMODEL_H
Interface from Qt to configuration data structure for Bitcoin client.
Definition: optionsmodel.h:39
int getDisplayUnit() const
Definition: optionsmodel.h:88
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
QString strOverriddenByCommandLine
Definition: optionsmodel.h:119
bool m_use_embedded_monospaced_font
Definition: optionsmodel.h:115
bool isRestartRequired() const
void Init(bool resetSettings=false)
bool getUseEmbeddedMonospacedFont() const
Definition: optionsmodel.h:90
bool getCoinControlFeatures() const
Definition: optionsmodel.h:91
bool fCoinControlFeatures
Definition: optionsmodel.h:116
interfaces::Node * m_node
Definition: optionsmodel.h:107
interfaces::Node & node() const
Definition: optionsmodel.h:103
void setDisplayUnit(const QVariant &value)
Updates current unit in memory, settings and emits displayUnitChanged(newUnit) signal.
void coinControlFeaturesChanged(bool)
QString strThirdPartyTxUrls
Definition: optionsmodel.h:114
OptionsModel(QObject *parent=nullptr, bool resetSettings=false)
bool getSubFeeFromAmount() const
Definition: optionsmodel.h:92
int rowCount(const QModelIndex &parent=QModelIndex()) const override
bool m_sub_fee_from_amount
Definition: optionsmodel.h:117
void SetPruneTargetGB(int prune_target_gb, bool force=false)
@ UseEmbeddedMonospacedFont
Definition: optionsmodel.h:61
void SetPruneEnabled(bool prune, bool force=false)
void displayUnitChanged(int unit)
void showTrayIconChanged(bool)
bool getMinimizeToTray() const
Definition: optionsmodel.h:86
bool fMinimizeToTray
Definition: optionsmodel.h:110
bool getShowTrayIcon() const
Definition: optionsmodel.h:85
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
const QString & getOverriddenByCommandLine()
Definition: optionsmodel.h:93
bool getMinimizeOnClose() const
Definition: optionsmodel.h:87
void setNode(interfaces::Node &node)
Definition: optionsmodel.h:104
QString getThirdPartyTxUrls() const
Definition: optionsmodel.h:89
void checkAndMigrate()
QString language
Definition: optionsmodel.h:112
void addOverriddenOption(const std::string &option)
void useEmbeddedMonospacedFontChanged(bool)
bool fMinimizeOnClose
Definition: optionsmodel.h:111
void setRestartRequired(bool fRequired)
bool m_show_tray_icon
Definition: optionsmodel.h:109
Top-level interface for a bitcoin node (bitcoind process).
Definition: node.h:55
static constexpr uint64_t GB_BYTES
Definition: guiconstants.h:53
static int PruneMiBtoGB(int64_t mib)
Convert configured prune target MiB to displayed GB.
Definition: optionsmodel.h:25
static int64_t PruneGBtoMiB(int gb)
Convert displayed prune target GB to configured MiB.
Definition: optionsmodel.h:30
static constexpr uint16_t DEFAULT_GUI_PROXY_PORT
Definition: optionsmodel.h:20
const char * DEFAULT_GUI_PROXY_HOST
assert(!tx.IsCoinBase())