X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fqt%2Foptionsmodel.cpp;h=07a20727eee82ded0e879dde494799c69be019be;hb=24b2f2d42d10153c24ccef4a14ba57ad24aac183;hp=756fe61ecd0fe598a8052b19bdfe2ccfd721d1a8;hpb=84a4a7763f386934da90e2bd1e355b70023fa9ca;p=novacoin.git diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp index 756fe61..07a2072 100644 --- a/src/qt/optionsmodel.cpp +++ b/src/qt/optionsmodel.cpp @@ -24,6 +24,7 @@ bool static ApplyProxySettings() } if (nSocksVersion && !addrProxy.IsValid()) return false; + if (!IsLimited(NET_IPV4)) SetProxy(NET_IPV4, addrProxy, nSocksVersion); if (nSocksVersion > 4) { @@ -31,8 +32,27 @@ bool static ApplyProxySettings() if (!IsLimited(NET_IPV6)) SetProxy(NET_IPV6, addrProxy, nSocksVersion); #endif - SetNameProxy(addrProxy, nSocksVersion); } + + SetNameProxy(addrProxy, nSocksVersion); + + return true; +} + +bool static ApplyTorSettings() +{ + QSettings settings; + CService addrTor(settings.value("addrTor", "127.0.0.1:9050").toString().toStdString()); + if (!settings.value("fUseTor", false).toBool()) { + addrTor = CService(); + return false; + } + if (!addrTor.IsValid()) + return false; + + SetProxy(NET_TOR, addrTor, 5); + SetReachable(NET_TOR); + return true; } @@ -43,8 +63,16 @@ void OptionsModel::Init() // These are Qt-only settings: nDisplayUnit = settings.value("nDisplayUnit", BitcoinUnits::BTC).toInt(); bDisplayAddresses = settings.value("bDisplayAddresses", false).toBool(); + if (!settings.contains("strThirdPartyTxUrls")) { + if(fTestNet) + settings.setValue("strThirdPartyTxUrls", ""); + else + settings.setValue("strThirdPartyTxUrls", "https://bitinfocharts.com/novacoin/tx/%s|https://coinplorer.com/NVC/Transactions/%s|https://explorer.novaco.in/tx/%s|https://bchain.info/NVC/tx/%s"); + } + strThirdPartyTxUrls = settings.value("strThirdPartyTxUrls", "https://bitinfocharts.com/novacoin/tx/%s|https://coinplorer.com/NVC/Transactions/%s|https://explorer.novaco.in/tx/%s|https://bchain.info/NVC/tx/%s").toString(); fMinimizeToTray = settings.value("fMinimizeToTray", false).toBool(); fMinimizeOnClose = settings.value("fMinimizeOnClose", false).toBool(); + fCoinControlFeatures = settings.value("fCoinControlFeatures", false).toBool(); nTransactionFee = settings.value("nTransactionFee").toLongLong(); language = settings.value("language", "").toString(); @@ -52,10 +80,19 @@ void OptionsModel::Init() // command-line options to override the GUI settings: if (settings.contains("fUseUPnP")) SoftSetBoolArg("-upnp", settings.value("fUseUPnP").toBool()); - if (settings.contains("addrProxy") && settings.value("fUseProxy").toBool()) - SoftSetArg("-proxy", settings.value("addrProxy").toString().toStdString()); - if (settings.contains("nSocksVersion") && settings.value("fUseProxy").toBool()) - SoftSetArg("-socks", settings.value("nSocksVersion").toString().toStdString()); + if ( !(settings.value("fTorOnly").toBool() && settings.contains("addrTor")) ) { + if (settings.contains("addrProxy") && settings.value("fUseProxy").toBool()) + SoftSetArg("-proxy", settings.value("addrProxy").toString().toStdString()); + if (settings.contains("nSocksVersion") && settings.value("fUseProxy").toBool()) + SoftSetArg("-socks", settings.value("nSocksVersion").toString().toStdString()); + } + + if (settings.contains("addrTor") && settings.value("fUseTor").toBool()) { + SoftSetArg("-tor", settings.value("addrTor").toString().toStdString()); + if (settings.value("fTorOnly").toBool()) + SoftSetArg("-onlynet", "tor"); + } + if (settings.contains("detachDB")) SoftSetBoolArg("-detachdb", settings.value("detachDB").toBool()); if (!language.isEmpty()) @@ -72,7 +109,7 @@ bool OptionsModel::Upgrade() settings.setValue("bImportFinished", true); // Move settings from old wallet.dat (if any): - CWalletDB walletdb("wallet.dat"); + CWalletDB walletdb(strWalletFileName); QList intOptions; intOptions << "nDisplayUnit" << "nTransactionFee"; @@ -86,7 +123,7 @@ bool OptionsModel::Upgrade() } } QList boolOptions; - boolOptions << "bDisplayAddresses" << "fMinimizeToTray" << "fMinimizeOnClose" << "fUseProxy" << "fUseUPnP"; + boolOptions << "bDisplayAddresses" << "fMinimizeToTray" << "fMinimizeOnClose" << "fUseProxy" << "fUseTor" << "fTorOnly" << "fUseUPnP"; foreach(QString key, boolOptions) { bool value = false; @@ -98,24 +135,38 @@ bool OptionsModel::Upgrade() } try { - CAddress addrProxyAddress; + CAddress addrProxyAddress, addrTorAddress; if (walletdb.ReadSetting("addrProxy", addrProxyAddress)) { settings.setValue("addrProxy", addrProxyAddress.ToStringIPPort().c_str()); walletdb.EraseSetting("addrProxy"); } + + if (walletdb.ReadSetting("addrTor", addrTorAddress)) + { + settings.setValue("addrTor", addrTorAddress.ToStringIPPort().c_str()); + walletdb.EraseSetting("addrTor"); + } } catch (std::ios_base::failure &e) { // 0.6.0rc1 saved this as a CService, which causes failure when parsing as a CAddress - CService addrProxy; + CService addrProxy, addrTor; if (walletdb.ReadSetting("addrProxy", addrProxy)) { settings.setValue("addrProxy", addrProxy.ToStringIPPort().c_str()); walletdb.EraseSetting("addrProxy"); } + + if (walletdb.ReadSetting("addrTor", addrTor)) + { + settings.setValue("addrTor", addrTor.ToStringIPPort().c_str()); + walletdb.EraseSetting("addrTor"); + } } + ApplyProxySettings(); + ApplyTorSettings(); Init(); return true; @@ -160,16 +211,38 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const } case ProxySocksVersion: return settings.value("nSocksVersion", 5); + case TorUse: + return settings.value("fUseTor", false); + case TorIP: { + proxyType proxy; + if (GetProxy(NET_TOR, proxy)) + return QVariant(QString::fromStdString(proxy.first.ToStringIP())); + else + return QVariant(QString::fromStdString("127.0.0.1")); + } + case TorPort: { + proxyType proxy; + if (GetProxy(NET_TOR, proxy)) + return QVariant(proxy.first.GetPort()); + else + return QVariant(9050); + } + case TorOnly: + return settings.value("fTorOnly", false); case Fee: - return QVariant(nTransactionFee); + return QVariant(static_cast(nTransactionFee)); case DisplayUnit: return QVariant(nDisplayUnit); case DisplayAddresses: return QVariant(bDisplayAddresses); + case ThirdPartyTxUrls: + return QVariant(strThirdPartyTxUrls); case DetachDatabases: return QVariant(bitdb.GetDetach()); case Language: return settings.value("language", ""); + case CoinControlFeatures: + return QVariant(fCoinControlFeatures); default: return QVariant(); } @@ -236,9 +309,41 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in successful = ApplyProxySettings(); } break; + case TorUse: { + settings.setValue("fUseTor", value.toBool()); + ApplyTorSettings(); + } + break; + case TorIP: { + proxyType proxy; + proxy.first = CService("127.0.0.1", 9050); + GetProxy(NET_IPV4, proxy); + + CNetAddr addr(value.toString().toStdString()); + proxy.first.SetIP(addr); + settings.setValue("addrTor", proxy.first.ToStringIPPort().c_str()); + successful = ApplyTorSettings(); + } + break; + case TorPort: { + proxyType proxy; + proxy.first = CService("127.0.0.1", 9050); + GetProxy(NET_IPV4, proxy); + + proxy.first.SetPort(value.toInt()); + settings.setValue("addrTor", proxy.first.ToStringIPPort().c_str()); + successful = ApplyTorSettings(); + } + break; + case TorOnly: { + settings.setValue("fTorOnly", value.toBool()); + ApplyTorSettings(); + } + break; case Fee: nTransactionFee = value.toLongLong(); - settings.setValue("nTransactionFee", nTransactionFee); + settings.setValue("nTransactionFee", static_cast(nTransactionFee)); + emit transactionFeeChanged(nTransactionFee); break; case DisplayUnit: nDisplayUnit = value.toInt(); @@ -255,9 +360,21 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in settings.setValue("detachDB", fDetachDB); } break; + case ThirdPartyTxUrls: + if (strThirdPartyTxUrls != value.toString()) { + strThirdPartyTxUrls = value.toString(); + settings.setValue("strThirdPartyTxUrls", strThirdPartyTxUrls); + } + break; case Language: settings.setValue("language", value); break; + case CoinControlFeatures: { + fCoinControlFeatures = value.toBool(); + settings.setValue("fCoinControlFeatures", fCoinControlFeatures); + emit coinControlFeaturesChanged(fCoinControlFeatures); + } + break; default: break; } @@ -272,6 +389,11 @@ qint64 OptionsModel::getTransactionFee() return nTransactionFee; } +bool OptionsModel::getCoinControlFeatures() +{ + return fCoinControlFeatures; +} + bool OptionsModel::getMinimizeToTray() { return fMinimizeToTray;