1919#include < txdb.h> // for -dbcache defaults
2020#include < util/string.h>
2121#include < validation.h> // For DEFAULT_SCRIPTCHECK_THREADS
22+ #include < wallet/wallet.h> // For DEFAULT_SPEND_ZEROCONF_CHANGE
2223
2324#include < QDebug>
2425#include < QLatin1Char>
@@ -38,6 +39,8 @@ static const char* SettingName(OptionsModel::OptionID option)
3839 switch (option) {
3940 case OptionsModel::DatabaseCache: return " dbcache" ;
4041 case OptionsModel::ThreadsScriptVerif: return " par" ;
42+ case OptionsModel::SpendZeroConfChange: return " spendzeroconfchange" ;
43+ case OptionsModel::ExternalSignerPath: return " signer" ;
4144 default : throw std::logic_error (strprintf (" GUI option %i has no corresponding node setting." , option));
4245 }
4346}
@@ -125,7 +128,7 @@ bool OptionsModel::Init(bilingual_str& error)
125128
126129 // These are shared with the core or have a command-line parameter
127130 // and we want command-line parameters to overwrite the GUI settings.
128- for (OptionID option : {DatabaseCache, ThreadsScriptVerif}) {
131+ for (OptionID option : {DatabaseCache, ThreadsScriptVerif, SpendZeroConfChange, ExternalSignerPath }) {
129132 std::string setting = SettingName (option);
130133 if (node ().isSettingIgnored (setting)) addOverriddenOption (" -" + setting);
131134 try {
@@ -155,18 +158,6 @@ bool OptionsModel::Init(bilingual_str& error)
155158
156159 // Wallet
157160#ifdef ENABLE_WALLET
158- if (!settings.contains (" bSpendZeroConfChange" ))
159- settings.setValue (" bSpendZeroConfChange" , true );
160- if (!gArgs .SoftSetBoolArg (" -spendzeroconfchange" , settings.value (" bSpendZeroConfChange" ).toBool ()))
161- addOverriddenOption (" -spendzeroconfchange" );
162-
163- if (!settings.contains (" external_signer_path" ))
164- settings.setValue (" external_signer_path" , " " );
165-
166- if (!gArgs .SoftSetArg (" -signer" , settings.value (" external_signer_path" ).toString ().toStdString ())) {
167- addOverriddenOption (" -signer" );
168- }
169-
170161 if (!settings.contains (" SubFeeFromAmount" )) {
171162 settings.setValue (" SubFeeFromAmount" , false );
172163 }
@@ -430,9 +421,9 @@ QVariant OptionsModel::getOption(OptionID option) const
430421
431422#ifdef ENABLE_WALLET
432423 case SpendZeroConfChange:
433- return settings. value ( " bSpendZeroConfChange " );
424+ return SettingToBool ( setting (), wallet::DEFAULT_SPEND_ZEROCONF_CHANGE );
434425 case ExternalSignerPath:
435- return settings. value ( " external_signer_path " );
426+ return QString::fromStdString ( SettingToString ( setting (), " " ) );
436427 case SubFeeFromAmount:
437428 return m_sub_fee_from_amount;
438429#endif
@@ -551,14 +542,14 @@ bool OptionsModel::setOption(OptionID option, const QVariant& value)
551542
552543#ifdef ENABLE_WALLET
553544 case SpendZeroConfChange:
554- if (settings. value ( " bSpendZeroConfChange " ) != value ) {
555- settings. setValue ( " bSpendZeroConfChange " , value);
545+ if (changed () ) {
546+ update ( value. toBool () );
556547 setRestartRequired (true );
557548 }
558549 break ;
559550 case ExternalSignerPath:
560- if (settings. value ( " external_signer_path " ) != value. toString ()) {
561- settings. setValue ( " external_signer_path " , value.toString ());
551+ if (changed ()) {
552+ update ( value.toString (). toStdString ());
562553 setRestartRequired (true );
563554 }
564555 break ;
@@ -703,4 +694,8 @@ void OptionsModel::checkAndMigrate()
703694
704695 migrate_setting (DatabaseCache, " nDatabaseCache" );
705696 migrate_setting (ThreadsScriptVerif, " nThreadsScriptVerif" );
697+ #ifdef ENABLE_WALLET
698+ migrate_setting (SpendZeroConfChange, " bSpendZeroConfChange" );
699+ migrate_setting (ExternalSignerPath, " external_signer_path" );
700+ #endif
706701}
0 commit comments