5 #if defined(HAVE_CONFIG_H) 6 #include <config/bitcoin-config.h> 19 #include <validation.h> 21 #include <QNetworkProxy> 23 #include <QStringList> 30 : QAbstractListModel(parent) {
36 QString::fromStdString(option) +
"=" +
37 QString::fromStdString(
gArgs.
GetArg(option,
"")) +
" ";
56 if (!settings.contains(
"fHideTrayIcon")) {
57 settings.setValue(
"fHideTrayIcon",
false);
62 if (!settings.contains(
"fMinimizeToTray")) {
63 settings.setValue(
"fMinimizeToTray",
false);
68 if (!settings.contains(
"fMinimizeOnClose")) {
69 settings.setValue(
"fMinimizeOnClose",
false);
74 if (!settings.contains(
"nDisplayUnit")) {
79 if (!settings.contains(
"strThirdPartyTxUrls")) {
80 settings.setValue(
"strThirdPartyTxUrls",
"");
84 if (!settings.contains(
"fCoinControlFeatures")) {
85 settings.setValue(
"fCoinControlFeatures",
false);
88 settings.value(
"fCoinControlFeatures",
false).toBool();
100 if (!settings.contains(
"bPrune")) {
101 settings.setValue(
"bPrune",
false);
103 if (!settings.contains(
"nPruneSize")) {
108 if (!settings.contains(
"nDatabaseCache")) {
113 settings.value(
"nDatabaseCache").toString().toStdString())) {
117 if (!settings.contains(
"nThreadsScriptVerif")) {
122 settings.value(
"nThreadsScriptVerif").toString().toStdString())) {
126 if (!settings.contains(
"strDataDir")) {
132 if (!settings.contains(
"bSpendZeroConfChange")) {
133 settings.setValue(
"bSpendZeroConfChange",
true);
136 "-spendzeroconfchange",
137 settings.value(
"bSpendZeroConfChange").toBool())) {
143 if (!settings.contains(
"fUseUPnP")) {
150 if (!settings.contains(
"fListen")) {
157 if (!settings.contains(
"fUseProxy")) {
158 settings.setValue(
"fUseProxy",
false);
160 if (!settings.contains(
"addrProxy")) {
164 if (settings.value(
"fUseProxy").toBool() &&
166 "-proxy", settings.value(
"addrProxy").toString().toStdString())) {
168 }
else if (!settings.value(
"fUseProxy").toBool() &&
173 if (!settings.contains(
"fUseSeparateProxyTor")) {
174 settings.setValue(
"fUseSeparateProxyTor",
false);
176 if (!settings.contains(
"addrSeparateProxyTor")) {
180 if (settings.value(
"fUseSeparateProxyTor").toBool() &&
183 settings.value(
"addrSeparateProxyTor").toString().toStdString())) {
185 }
else if (!settings.value(
"fUseSeparateProxyTor").toBool() &&
191 if (!settings.contains(
"language")) {
192 settings.setValue(
"language",
"");
195 "-lang", settings.value(
"language").toString().toStdString())) {
199 language = settings.value(
"language").toString();
207 for (
const QString &key : src.allKeys()) {
208 dst.setValue(key, src.value(key));
214 qInfo() <<
"Backing up GUI settings to" 229 dataDir = settings.value(
"strDataDir", dataDir).toString();
235 settings.setValue(
"strDataDir", dataDir);
238 settings.setValue(
"fReset",
true);
261 if (!settings.contains(name)) {
265 QStringList ip_port =
267 if (ip_port.size() == 2) {
268 return {
true, ip_port.at(0), ip_port.at(1)};
276 settings.setValue(name, ip_port.
ip +
":" + ip_port.
port);
280 return QString(
"%1:%2")
287 settings.setValue(
"bPrune", prune);
288 const int64_t prune_target_mib =
290 std::string prune_val = prune ?
ToString(prune_target_mib) :
"0";
301 const bool prune = prune_target_gb > 0;
304 settings.setValue(
"nPruneSize", prune_target_gb);
311 if (role == Qt::EditRole) {
313 switch (index.row()) {
322 return settings.value(
"fUseUPnP");
331 return settings.value(
"fUseProxy",
false);
339 return settings.value(
"fUseSeparateProxyTor",
false);
347 return settings.value(
"bSpendZeroConfChange");
354 return settings.value(
"language");
358 return settings.value(
"bPrune");
360 return settings.value(
"nPruneSize");
362 return settings.value(
"nDatabaseCache");
364 return settings.value(
"nThreadsScriptVerif");
366 return settings.value(
"fListen");
377 bool successful =
true;
378 if (role == Qt::EditRole) {
380 switch (index.row()) {
394 settings.setValue(
"fUseUPnP", value.toBool());
404 if (settings.value(
"fUseProxy") != value) {
405 settings.setValue(
"fUseProxy", value.toBool());
411 if (!ip_port.is_set || ip_port.ip != value.toString()) {
412 ip_port.ip = value.toString();
419 if (!ip_port.is_set || ip_port.port != value.toString()) {
420 ip_port.port = value.toString();
428 if (settings.value(
"fUseSeparateProxyTor") != value) {
429 settings.setValue(
"fUseSeparateProxyTor", value.toBool());
436 if (!ip_port.is_set || ip_port.ip != value.toString()) {
437 ip_port.ip = value.toString();
445 if (!ip_port.is_set || ip_port.port != value.toString()) {
446 ip_port.port = value.toString();
454 if (settings.value(
"bSpendZeroConfChange") != value) {
455 settings.setValue(
"bSpendZeroConfChange", value);
466 settings.setValue(
"strThirdPartyTxUrls",
472 if (settings.value(
"language") != value) {
473 settings.setValue(
"language", value);
483 if (settings.value(
"bPrune") != value) {
484 settings.setValue(
"bPrune", value);
489 if (settings.value(
"nPruneSize") != value) {
490 settings.setValue(
"nPruneSize", value);
495 if (settings.value(
"nDatabaseCache") != value) {
496 settings.setValue(
"nDatabaseCache", value);
501 if (settings.value(
"nThreadsScriptVerif") != value) {
502 settings.setValue(
"nThreadsScriptVerif", value);
507 if (settings.value(
"fListen") != value) {
508 settings.setValue(
"fListen", value);
517 Q_EMIT dataChanged(index, index);
525 if (!value.isNull()) {
538 proxy.setType(QNetworkProxy::Socks5Proxy);
539 proxy.setHostName(QString::fromStdString(curProxy.
proxy.
ToStringIP()));
544 proxy.setType(QNetworkProxy::NoProxy);
552 return settings.setValue(
"fRestartRequired", fRequired);
557 return settings.value(
"fRestartRequired",
false).toBool();
565 static const char strSettingsVersionKey[] =
"nSettingsVersion";
566 int settingsVersion = settings.contains(strSettingsVersionKey)
567 ? settings.value(strSettingsVersionKey).toInt()
573 if (settingsVersion < 130000 && settings.contains(
"nDatabaseCache") &&
574 settings.value(
"nDatabaseCache").toLongLong() == 100) {
583 if (settings.contains(
"addrProxy") &&
584 settings.value(
"addrProxy").toString().endsWith(
"%2")) {
590 if (settings.contains(
"addrSeparateProxyTor") &&
591 settings.value(
"addrSeparateProxyTor").toString().endsWith(
"%2")) {
static const int DEFAULT_SCRIPTCHECK_THREADS
-par default (number of script-checking threads, 0 = auto)
unsigned short GetPort() const
static constexpr int DEFAULT_PRUNE_TARGET_GB
static void BackupSettings(const fs::path &filename, const QSettings &src)
Back up a QSettings to an ini-formatted file.
void addOverriddenOption(const std::string &option)
QStringList splitSkipEmptyParts(const QString &s, const QString &separator)
void hideTrayIconChanged(bool)
bool SoftSetBoolArg(const std::string &strArg, bool fValue)
Set a boolean argument if it doesn't already have a value.
bool getProxySettings(QNetworkProxy &proxy) const
static void CopySettings(QSettings &dst, const QSettings &src)
Helper function to copy contents from one QSettings to another.
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
void SetPruneTargetGB(int prune_target_gb, bool force=false)
static const bool DEFAULT_LISTEN
-listen default
bool GetStartOnSystemStartup()
void coinControlFeaturesChanged(bool)
void ForceSetArg(const std::string &strArg, const std::string &strValue)
static int64_t PruneGBtoMiB(int gb)
Convert displayed prune target GB to configured MiB.
bool SoftSetArg(const std::string &strArg, const std::string &strValue)
Set an argument if it doesn't already have a value.
bool isRestartRequired() const
interfaces::Node & node() const
std::string ToString(const T &t)
Locale-independent version of std::to_string.
int rowCount(const QModelIndex &parent=QModelIndex()) const override
void setDisplayUnit(const QVariant &value)
Updates current unit in memory, settings and emits displayUnitChanged(newUnit) signal.
OptionsModel(QObject *parent=nullptr, bool resetSettings=false)
void SetPruneEnabled(bool prune, bool force=false)
std::string ToStringIP() const
const fs::path & GetDataDir(bool fNetSpecific)
static constexpr int64_t DEFAULT_DB_CACHE_MB
-dbcache default (MiB)
const char * DEFAULT_GUI_PROXY_HOST
void Init(bool resetSettings=false)
void displayUnitChanged(int unit)
bool fCoinControlFeatures
virtual void mapPort(bool use_upnp)=0
Map port.
static constexpr int CLIENT_VERSION
bitcoind-res.rc includes this file, but it cannot cope with real c++ code.
void setRestartRequired(bool fRequired)
QString strThirdPartyTxUrls
std::string GetArg(const std::string &strArg, const std::string &strDefault) const
Return string argument or default value.
static const bool DEFAULT_UPNP
-upnp default
bool SetStartOnSystemStartup(bool fAutoStart)
QString getDefaultDataDirectory()
Determine default data directory for operating system.
QString boostPathToQString(const fs::path &path)
static ProxySetting GetProxySetting(QSettings &settings, const QString &name)
static const QString GetDefaultProxyAddress()
static constexpr unsigned short DEFAULT_GUI_PROXY_PORT
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
QString strOverriddenByCommandLine
static void SetProxySetting(QSettings &settings, const QString &name, const ProxySetting &ip_port)