Changeset View
Changeset View
Standalone View
Standalone View
src/qt/optionsmodel.cpp
// Copyright (c) 2011-2016 The Bitcoin Core developers | // Copyright (c) 2011-2016 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#if defined(HAVE_CONFIG_H) | #if defined(HAVE_CONFIG_H) | ||||
#include "config/bitcoin-config.h" | #include "config/bitcoin-config.h" | ||||
#endif | #endif | ||||
#include "optionsmodel.h" | #include "optionsmodel.h" | ||||
#include "bitcoinunits.h" | #include "bitcoinunits.h" | ||||
#include "guiutil.h" | #include "guiutil.h" | ||||
#include "amount.h" | #include "amount.h" | ||||
#include "init.h" | #include "interface/node.h" | ||||
#include "intro.h" | #include "intro.h" | ||||
#include "net.h" | #include "net.h" | ||||
#include "netbase.h" | #include "netbase.h" | ||||
#include "txdb.h" // for -dbcache defaults | #include "txdb.h" // for -dbcache defaults | ||||
#include "validation.h" // For DEFAULT_SCRIPTCHECK_THREADS | #include "validation.h" // For DEFAULT_SCRIPTCHECK_THREADS | ||||
#ifdef ENABLE_WALLET | |||||
#include "wallet/wallet.h" | |||||
#include "wallet/walletdb.h" | |||||
#endif | |||||
#include <QNetworkProxy> | #include <QNetworkProxy> | ||||
#include <QSettings> | #include <QSettings> | ||||
#include <QStringList> | #include <QStringList> | ||||
const char *DEFAULT_GUI_PROXY_HOST = "127.0.0.1"; | const char *DEFAULT_GUI_PROXY_HOST = "127.0.0.1"; | ||||
OptionsModel::OptionsModel(QObject *parent, bool resetSettings) | OptionsModel::OptionsModel(interface::Node &node, QObject *parent, | ||||
: QAbstractListModel(parent) { | bool resetSettings) | ||||
: QAbstractListModel(parent), m_node(node) { | |||||
Init(resetSettings); | Init(resetSettings); | ||||
} | } | ||||
void OptionsModel::addOverriddenOption(const std::string &option) { | void OptionsModel::addOverriddenOption(const std::string &option) { | ||||
strOverriddenByCommandLine += | strOverriddenByCommandLine += | ||||
QString::fromStdString(option) + "=" + | QString::fromStdString(option) + "=" + | ||||
QString::fromStdString(gArgs.GetArg(option, "")) + " "; | QString::fromStdString(gArgs.GetArg(option, "")) + " "; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | void OptionsModel::Init(bool resetSettings) { | ||||
// If gArgs.SoftSetArg() or gArgs.SoftSetBoolArg() return false we were | // If gArgs.SoftSetArg() or gArgs.SoftSetBoolArg() return false we were | ||||
// overridden | // overridden | ||||
// by command-line and show this in the UI. | // by command-line and show this in the UI. | ||||
// Main | // Main | ||||
if (!settings.contains("nDatabaseCache")) { | if (!settings.contains("nDatabaseCache")) { | ||||
settings.setValue("nDatabaseCache", (qint64)nDefaultDbCache); | settings.setValue("nDatabaseCache", (qint64)nDefaultDbCache); | ||||
} | } | ||||
if (!gArgs.SoftSetArg( | if (!m_node.softSetArg( | ||||
"-dbcache", | "-dbcache", | ||||
settings.value("nDatabaseCache").toString().toStdString())) { | settings.value("nDatabaseCache").toString().toStdString())) { | ||||
addOverriddenOption("-dbcache"); | addOverriddenOption("-dbcache"); | ||||
} | } | ||||
if (!settings.contains("nThreadsScriptVerif")) { | if (!settings.contains("nThreadsScriptVerif")) { | ||||
settings.setValue("nThreadsScriptVerif", DEFAULT_SCRIPTCHECK_THREADS); | settings.setValue("nThreadsScriptVerif", DEFAULT_SCRIPTCHECK_THREADS); | ||||
} | } | ||||
if (!gArgs.SoftSetArg( | if (!m_node.softSetArg( | ||||
"-par", | "-par", | ||||
settings.value("nThreadsScriptVerif").toString().toStdString())) { | settings.value("nThreadsScriptVerif").toString().toStdString())) { | ||||
addOverriddenOption("-par"); | addOverriddenOption("-par"); | ||||
} | } | ||||
if (!settings.contains("strDataDir")) { | if (!settings.contains("strDataDir")) { | ||||
settings.setValue("strDataDir", Intro::getDefaultDataDirectory()); | settings.setValue("strDataDir", Intro::getDefaultDataDirectory()); | ||||
} | } | ||||
// Wallet | // Wallet | ||||
#ifdef ENABLE_WALLET | #ifdef ENABLE_WALLET | ||||
if (!settings.contains("bSpendZeroConfChange")) { | if (!settings.contains("bSpendZeroConfChange")) { | ||||
settings.setValue("bSpendZeroConfChange", true); | settings.setValue("bSpendZeroConfChange", true); | ||||
} | } | ||||
if (!gArgs.SoftSetBoolArg( | if (!m_node.softSetBoolArg( | ||||
"-spendzeroconfchange", | "-spendzeroconfchange", | ||||
settings.value("bSpendZeroConfChange").toBool())) { | settings.value("bSpendZeroConfChange").toBool())) { | ||||
addOverriddenOption("-spendzeroconfchange"); | addOverriddenOption("-spendzeroconfchange"); | ||||
} | } | ||||
#endif | #endif | ||||
// Network | // Network | ||||
if (!settings.contains("fUseUPnP")) { | if (!settings.contains("fUseUPnP")) { | ||||
settings.setValue("fUseUPnP", DEFAULT_UPNP); | settings.setValue("fUseUPnP", DEFAULT_UPNP); | ||||
} | } | ||||
if (!gArgs.SoftSetBoolArg("-upnp", settings.value("fUseUPnP").toBool())) { | if (!m_node.softSetBoolArg("-upnp", settings.value("fUseUPnP").toBool())) { | ||||
addOverriddenOption("-upnp"); | addOverriddenOption("-upnp"); | ||||
} | } | ||||
if (!settings.contains("fListen")) { | if (!settings.contains("fListen")) { | ||||
settings.setValue("fListen", DEFAULT_LISTEN); | settings.setValue("fListen", DEFAULT_LISTEN); | ||||
} | } | ||||
if (!gArgs.SoftSetBoolArg("-listen", settings.value("fListen").toBool())) { | if (!m_node.softSetBoolArg("-listen", settings.value("fListen").toBool())) { | ||||
addOverriddenOption("-listen"); | addOverriddenOption("-listen"); | ||||
} | } | ||||
if (!settings.contains("fUseProxy")) { | if (!settings.contains("fUseProxy")) { | ||||
settings.setValue("fUseProxy", false); | settings.setValue("fUseProxy", false); | ||||
} | } | ||||
if (!settings.contains("addrProxy")) { | if (!settings.contains("addrProxy")) { | ||||
settings.setValue("addrProxy", | settings.setValue("addrProxy", | ||||
QString("%1:%2").arg(DEFAULT_GUI_PROXY_HOST, | QString("%1:%2").arg(DEFAULT_GUI_PROXY_HOST, | ||||
DEFAULT_GUI_PROXY_PORT)); | DEFAULT_GUI_PROXY_PORT)); | ||||
} | } | ||||
// Only try to set -proxy, if user has enabled fUseProxy | // Only try to set -proxy, if user has enabled fUseProxy | ||||
if (settings.value("fUseProxy").toBool() && | if (settings.value("fUseProxy").toBool() && | ||||
!gArgs.SoftSetArg( | !m_node.softSetArg( | ||||
"-proxy", settings.value("addrProxy").toString().toStdString())) { | "-proxy", settings.value("addrProxy").toString().toStdString())) { | ||||
addOverriddenOption("-proxy"); | addOverriddenOption("-proxy"); | ||||
} else if (!settings.value("fUseProxy").toBool() && | } else if (!settings.value("fUseProxy").toBool() && | ||||
!gArgs.GetArg("-proxy", "").empty()) { | !gArgs.GetArg("-proxy", "").empty()) { | ||||
addOverriddenOption("-proxy"); | addOverriddenOption("-proxy"); | ||||
} | } | ||||
if (!settings.contains("fUseSeparateProxyTor")) { | if (!settings.contains("fUseSeparateProxyTor")) { | ||||
settings.setValue("fUseSeparateProxyTor", false); | settings.setValue("fUseSeparateProxyTor", false); | ||||
} | } | ||||
if (!settings.contains("addrSeparateProxyTor")) { | if (!settings.contains("addrSeparateProxyTor")) { | ||||
settings.setValue("addrSeparateProxyTor", | settings.setValue("addrSeparateProxyTor", | ||||
QString("%1:%2").arg(DEFAULT_GUI_PROXY_HOST, | QString("%1:%2").arg(DEFAULT_GUI_PROXY_HOST, | ||||
DEFAULT_GUI_PROXY_PORT)); | DEFAULT_GUI_PROXY_PORT)); | ||||
} | } | ||||
// Only try to set -onion, if user has enabled fUseSeparateProxyTor | // Only try to set -onion, if user has enabled fUseSeparateProxyTor | ||||
if (settings.value("fUseSeparateProxyTor").toBool() && | if (settings.value("fUseSeparateProxyTor").toBool() && | ||||
!gArgs.SoftSetArg( | !m_node.softSetArg( | ||||
"-onion", | "-onion", | ||||
settings.value("addrSeparateProxyTor").toString().toStdString())) { | settings.value("addrSeparateProxyTor").toString().toStdString())) { | ||||
addOverriddenOption("-onion"); | addOverriddenOption("-onion"); | ||||
} else if (!settings.value("fUseSeparateProxyTor").toBool() && | } else if (!settings.value("fUseSeparateProxyTor").toBool() && | ||||
!gArgs.GetArg("-onion", "").empty()) { | !gArgs.GetArg("-onion", "").empty()) { | ||||
addOverriddenOption("-onion"); | addOverriddenOption("-onion"); | ||||
} | } | ||||
// Display | // Display | ||||
if (!settings.contains("language")) { | if (!settings.contains("language")) { | ||||
settings.setValue("language", ""); | settings.setValue("language", ""); | ||||
} | } | ||||
if (!gArgs.SoftSetArg( | if (!m_node.softSetArg( | ||||
"-lang", settings.value("language").toString().toStdString())) { | "-lang", settings.value("language").toString().toStdString())) { | ||||
addOverriddenOption("-lang"); | addOverriddenOption("-lang"); | ||||
} | } | ||||
language = settings.value("language").toString(); | language = settings.value("language").toString(); | ||||
} | } | ||||
void OptionsModel::Reset() { | void OptionsModel::Reset() { | ||||
▲ Show 20 Lines • Show All 128 Lines • ▼ Show 20 Lines | if (role == Qt::EditRole) { | ||||
Q_EMIT hideTrayIconChanged(fHideTrayIcon); | Q_EMIT hideTrayIconChanged(fHideTrayIcon); | ||||
break; | break; | ||||
case MinimizeToTray: | case MinimizeToTray: | ||||
fMinimizeToTray = value.toBool(); | fMinimizeToTray = value.toBool(); | ||||
settings.setValue("fMinimizeToTray", fMinimizeToTray); | settings.setValue("fMinimizeToTray", fMinimizeToTray); | ||||
break; | break; | ||||
case MapPortUPnP: // core option - can be changed on-the-fly | case MapPortUPnP: // core option - can be changed on-the-fly | ||||
settings.setValue("fUseUPnP", value.toBool()); | settings.setValue("fUseUPnP", value.toBool()); | ||||
if (value.toBool()) { | m_node.mapPort(value.toBool()); | ||||
StartMapPort(); | |||||
} else { | |||||
InterruptMapPort(); | |||||
StopMapPort(); | |||||
} | |||||
break; | break; | ||||
case MinimizeOnClose: | case MinimizeOnClose: | ||||
fMinimizeOnClose = value.toBool(); | fMinimizeOnClose = value.toBool(); | ||||
settings.setValue("fMinimizeOnClose", fMinimizeOnClose); | settings.setValue("fMinimizeOnClose", fMinimizeOnClose); | ||||
break; | break; | ||||
// default proxy | // default proxy | ||||
case ProxyUse: | case ProxyUse: | ||||
▲ Show 20 Lines • Show All 113 Lines • ▼ Show 20 Lines | if (!value.isNull()) { | ||||
Q_EMIT displayUnitChanged(nDisplayUnit); | Q_EMIT displayUnitChanged(nDisplayUnit); | ||||
} | } | ||||
} | } | ||||
bool OptionsModel::getProxySettings(QNetworkProxy &proxy) const { | bool OptionsModel::getProxySettings(QNetworkProxy &proxy) const { | ||||
// Directly query current base proxy, because | // Directly query current base proxy, because | ||||
// GUI settings can be overridden with -proxy. | // GUI settings can be overridden with -proxy. | ||||
proxyType curProxy; | proxyType curProxy; | ||||
if (GetProxy(NET_IPV4, curProxy)) { | if (m_node.getProxy(NET_IPV4, curProxy)) { | ||||
proxy.setType(QNetworkProxy::Socks5Proxy); | proxy.setType(QNetworkProxy::Socks5Proxy); | ||||
proxy.setHostName(QString::fromStdString(curProxy.proxy.ToStringIP())); | proxy.setHostName(QString::fromStdString(curProxy.proxy.ToStringIP())); | ||||
proxy.setPort(curProxy.proxy.GetPort()); | proxy.setPort(curProxy.proxy.GetPort()); | ||||
return true; | return true; | ||||
} else | } else | ||||
proxy.setType(QNetworkProxy::NoProxy); | proxy.setType(QNetworkProxy::NoProxy); | ||||
Show All 33 Lines |