5 #if defined(HAVE_CONFIG_H)
6 #include "config/bitcoin-config.h"
16 #include "validation.h"
27 #include <QNetworkProxy>
29 #include <QStringList>
32 QAbstractListModel(parent)
58 if (!settings.contains(
"fHideTrayIcon"))
59 settings.setValue(
"fHideTrayIcon",
false);
63 if (!settings.contains(
"fMinimizeToTray"))
64 settings.setValue(
"fMinimizeToTray",
false);
67 if (!settings.contains(
"fMinimizeOnClose"))
68 settings.setValue(
"fMinimizeOnClose",
false);
72 if (!settings.contains(
"nDisplayUnit"))
76 if (!settings.contains(
"strThirdPartyTxUrls"))
77 settings.setValue(
"strThirdPartyTxUrls",
"https://dogechain.info/tx/%s|https://chain.so/tx/DOGE/%s");
80 if (!settings.contains(
"fCoinControlFeatures"))
81 settings.setValue(
"fCoinControlFeatures",
false);
93 if (!settings.contains(
"nDatabaseCache"))
94 settings.setValue(
"nDatabaseCache", (qint64)nDefaultDbCache);
95 if (!
SoftSetArg(
"-dbcache", settings.value(
"nDatabaseCache").toString().toStdString()))
98 if (!settings.contains(
"nThreadsScriptVerif"))
99 settings.setValue(
"nThreadsScriptVerif", DEFAULT_SCRIPTCHECK_THREADS);
100 if (!
SoftSetArg(
"-par", settings.value(
"nThreadsScriptVerif").toString().toStdString()))
103 if (!settings.contains(
"strDataDir"))
108 if (!settings.contains(
"bSpendZeroConfChange"))
109 settings.setValue(
"bSpendZeroConfChange",
true);
110 if (!
SoftSetBoolArg(
"-spendzeroconfchange", settings.value(
"bSpendZeroConfChange").toBool()))
115 if (!settings.contains(
"fUseUPnP"))
116 settings.setValue(
"fUseUPnP", DEFAULT_UPNP);
117 if (!
SoftSetBoolArg(
"-upnp", settings.value(
"fUseUPnP").toBool()))
120 if (!settings.contains(
"fListen"))
121 settings.setValue(
"fListen", DEFAULT_LISTEN);
122 if (!
SoftSetBoolArg(
"-listen", settings.value(
"fListen").toBool()))
125 if (!settings.contains(
"fUseProxy"))
126 settings.setValue(
"fUseProxy",
false);
127 if (!settings.contains(
"addrProxy"))
128 settings.setValue(
"addrProxy",
"127.0.0.1:9050");
130 if (settings.value(
"fUseProxy").toBool() && !
SoftSetArg(
"-proxy", settings.value(
"addrProxy").toString().toStdString()))
132 else if(!settings.value(
"fUseProxy").toBool() && !
GetArg(
"-proxy",
"").empty())
135 if (!settings.contains(
"fUseSeparateProxyTor"))
136 settings.setValue(
"fUseSeparateProxyTor",
false);
137 if (!settings.contains(
"addrSeparateProxyTor"))
138 settings.setValue(
"addrSeparateProxyTor",
"127.0.0.1:9050");
140 if (settings.value(
"fUseSeparateProxyTor").toBool() && !
SoftSetArg(
"-onion", settings.value(
"addrSeparateProxyTor").toString().toStdString()))
142 else if(!settings.value(
"fUseSeparateProxyTor").toBool() && !
GetArg(
"-onion",
"").empty())
146 if (!settings.contains(
"language"))
147 settings.setValue(
"language",
"");
148 if (!
SoftSetArg(
"-lang", settings.value(
"language").toString().toStdString()))
151 language = settings.value(
"language").toString();
160 dataDir = settings.value(
"strDataDir", dataDir).toString();
166 settings.setValue(
"strDataDir", dataDir);
169 settings.setValue(
"fReset",
true);
184 if(role == Qt::EditRole)
197 return settings.value(
"fUseUPnP");
206 return settings.value(
"fUseProxy",
false);
209 QStringList strlIpPort = settings.value(
"addrProxy").toString().split(
":", QString::SkipEmptyParts);
210 return strlIpPort.at(0);
214 QStringList strlIpPort = settings.value(
"addrProxy").toString().split(
":", QString::SkipEmptyParts);
215 return strlIpPort.at(1);
220 return settings.value(
"fUseSeparateProxyTor",
false);
223 QStringList strlIpPort = settings.value(
"addrSeparateProxyTor").toString().split(
":", QString::SkipEmptyParts);
224 return strlIpPort.at(0);
228 QStringList strlIpPort = settings.value(
"addrSeparateProxyTor").toString().split(
":", QString::SkipEmptyParts);
229 return strlIpPort.at(1);
234 return settings.value(
"bSpendZeroConfChange");
241 return settings.value(
"language");
245 return settings.value(
"nDatabaseCache");
247 return settings.value(
"nThreadsScriptVerif");
249 return settings.value(
"fListen");
260 bool successful =
true;
261 if(role == Qt::EditRole)
279 settings.setValue(
"fUseUPnP", value.toBool());
289 if (settings.value(
"fUseProxy") != value) {
290 settings.setValue(
"fUseProxy", value.toBool());
296 QStringList strlIpPort = settings.value(
"addrProxy").toString().split(
":", QString::SkipEmptyParts);
298 if (!settings.contains(
"addrProxy") || strlIpPort.at(0) != value.toString()) {
300 QString strNewValue = value.toString() +
":" + strlIpPort.at(1);
301 settings.setValue(
"addrProxy", strNewValue);
308 QStringList strlIpPort = settings.value(
"addrProxy").toString().split(
":", QString::SkipEmptyParts);
310 if (!settings.contains(
"addrProxy") || strlIpPort.at(1) != value.toString()) {
312 QString strNewValue = strlIpPort.at(0) +
":" + value.toString();
313 settings.setValue(
"addrProxy", strNewValue);
321 if (settings.value(
"fUseSeparateProxyTor") != value) {
322 settings.setValue(
"fUseSeparateProxyTor", value.toBool());
328 QStringList strlIpPort = settings.value(
"addrSeparateProxyTor").toString().split(
":", QString::SkipEmptyParts);
330 if (!settings.contains(
"addrSeparateProxyTor") || strlIpPort.at(0) != value.toString()) {
332 QString strNewValue = value.toString() +
":" + strlIpPort.at(1);
333 settings.setValue(
"addrSeparateProxyTor", strNewValue);
340 QStringList strlIpPort = settings.value(
"addrSeparateProxyTor").toString().split(
":", QString::SkipEmptyParts);
342 if (!settings.contains(
"addrSeparateProxyTor") || strlIpPort.at(1) != value.toString()) {
344 QString strNewValue = strlIpPort.at(0) +
":" + value.toString();
345 settings.setValue(
"addrSeparateProxyTor", strNewValue);
353 if (settings.value(
"bSpendZeroConfChange") != value) {
354 settings.setValue(
"bSpendZeroConfChange", value);
370 if (settings.value(
"language") != value) {
371 settings.setValue(
"language", value);
381 if (settings.value(
"nDatabaseCache") != value) {
382 settings.setValue(
"nDatabaseCache", value);
387 if (settings.value(
"nThreadsScriptVerif") != value) {
388 settings.setValue(
"nThreadsScriptVerif", value);
393 if (settings.value(
"fListen") != value) {
394 settings.setValue(
"fListen", value);
403 Q_EMIT dataChanged(index, index);
426 proxy.setType(QNetworkProxy::Socks5Proxy);
427 proxy.setHostName(QString::fromStdString(curProxy.
proxy.
ToStringIP()));
433 proxy.setType(QNetworkProxy::NoProxy);
441 return settings.setValue(
"fRestartRequired", fRequired);
447 return settings.value(
"fRestartRequired",
false).toBool();
455 static const char strSettingsVersionKey[] =
"nSettingsVersion";
456 int settingsVersion = settings.contains(strSettingsVersionKey) ? settings.value(strSettingsVersionKey).toInt() : 0;
457 if (settingsVersion < CLIENT_VERSION)
462 if (settingsVersion < 130000 && settings.contains(
"nDatabaseCache") && settings.value(
"nDatabaseCache").toLongLong() == 100)
463 settings.setValue(
"nDatabaseCache", (qint64)nDefaultDbCache);
465 settings.setValue(strSettingsVersionKey, CLIENT_VERSION);
std::string ToStringIP() const
unsigned short GetPort() const
static QString getDefaultDataDirectory()
Determine default data directory for operating system.
QString strOverriddenByCommandLine
bool getProxySettings(QNetworkProxy &proxy) const
void Init(bool resetSettings=false)
bool fCoinControlFeatures
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
void setDisplayUnit(const QVariant &value)
Updates current unit in memory, settings and emits displayUnitChanged(newUnit) signal.
void coinControlFeaturesChanged(bool)
QString strThirdPartyTxUrls
void displayUnitChanged(int unit)
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const
int rowCount(const QModelIndex &parent=QModelIndex()) const
OptionsModel(QObject *parent=0, bool resetSettings=false)
void addOverriddenOption(const std::string &option)
void setRestartRequired(bool fRequired)
void hideTrayIconChanged(bool)
bool SetStartOnSystemStartup(bool fAutoStart)
bool GetStartOnSystemStartup()
bool GetProxy(enum Network net, proxyType &proxyInfoOut)
std::string GetArg(const std::string &strArg, const std::string &strDefault)
Return string argument or default value.
bool SoftSetArg(const std::string &strArg, const std::string &strValue)
Set an argument if it doesn't already have a value.
bool SoftSetBoolArg(const std::string &strArg, bool fValue)
Set a boolean argument if it doesn't already have a value.