Migrate -lang setting from QSettings to settings.json

This commit is contained in:
Ryan Ofsky 2019-04-29 15:29:00 -04:00
parent 9a016a3c07
commit 504b06b1de
2 changed files with 8 additions and 15 deletions

View File

@ -896,7 +896,7 @@
<item> <item>
<widget class="QLabel" name="overriddenByCommandLineInfoLabel"> <widget class="QLabel" name="overriddenByCommandLineInfoLabel">
<property name="text"> <property name="text">
<string>Options set in this dialog are overridden by the command line or in the configuration file:</string> <string>Options set in this dialog are overridden by the command line:</string>
</property> </property>
<property name="textFormat"> <property name="textFormat">
<enum>Qt::PlainText</enum> <enum>Qt::PlainText</enum>

View File

@ -53,6 +53,7 @@ static const char* SettingName(OptionsModel::OptionID option)
case OptionsModel::ProxyIPTor: return "onion"; case OptionsModel::ProxyIPTor: return "onion";
case OptionsModel::ProxyPortTor: return "onion"; case OptionsModel::ProxyPortTor: return "onion";
case OptionsModel::ProxyUseTor: return "onion"; case OptionsModel::ProxyUseTor: return "onion";
case OptionsModel::Language: return "lang";
default: throw std::logic_error(strprintf("GUI option %i has no corresponding node setting.", option)); default: throw std::logic_error(strprintf("GUI option %i has no corresponding node setting.", option));
} }
} }
@ -137,6 +138,7 @@ bool OptionsModel::Init(bilingual_str& error)
ProxySetting onion = ParseProxyString(SettingToString(node().getPersistentSetting("onion"), GetDefaultProxyAddress().toStdString())); ProxySetting onion = ParseProxyString(SettingToString(node().getPersistentSetting("onion"), GetDefaultProxyAddress().toStdString()));
m_onion_ip = onion.ip; m_onion_ip = onion.ip;
m_onion_port = onion.port; m_onion_port = onion.port;
language = QString::fromStdString(SettingToString(node().getPersistentSetting("lang"), ""));
checkAndMigrate(); checkAndMigrate();
@ -190,7 +192,7 @@ bool OptionsModel::Init(bilingual_str& error)
// These are shared with the core or have a command-line parameter // These are shared with the core or have a command-line parameter
// and we want command-line parameters to overwrite the GUI settings. // and we want command-line parameters to overwrite the GUI settings.
for (OptionID option : {DatabaseCache, ThreadsScriptVerif, SpendZeroConfChange, ExternalSignerPath, MapPortUPnP, for (OptionID option : {DatabaseCache, ThreadsScriptVerif, SpendZeroConfChange, ExternalSignerPath, MapPortUPnP,
MapPortNatpmp, Listen, Server, Prune, ProxyUse, ProxyUseTor}) { MapPortNatpmp, Listen, Server, Prune, ProxyUse, ProxyUseTor, Language}) {
std::string setting = SettingName(option); std::string setting = SettingName(option);
if (node().isSettingIgnored(setting)) addOverriddenOption("-" + setting); if (node().isSettingIgnored(setting)) addOverriddenOption("-" + setting);
try { try {
@ -205,9 +207,6 @@ bool OptionsModel::Init(bilingual_str& error)
} }
// If setting doesn't exist create it with defaults. // If setting doesn't exist create it with defaults.
//
// If gArgs.SoftSetArg() or gArgs.SoftSetBoolArg() return false we were overridden
// by command-line and show this in the UI.
// Main // Main
if (!settings.contains("strDataDir")) if (!settings.contains("strDataDir"))
@ -222,13 +221,6 @@ bool OptionsModel::Init(bilingual_str& error)
#endif #endif
// Display // Display
if (!settings.contains("language"))
settings.setValue("language", "");
if (!gArgs.SoftSetArg("-lang", settings.value("language").toString().toStdString()))
addOverriddenOption("-lang");
language = settings.value("language").toString();
if (!settings.contains("UseEmbeddedMonospacedFont")) { if (!settings.contains("UseEmbeddedMonospacedFont")) {
settings.setValue("UseEmbeddedMonospacedFont", "true"); settings.setValue("UseEmbeddedMonospacedFont", "true");
} }
@ -421,7 +413,7 @@ QVariant OptionsModel::getOption(OptionID option) const
case ThirdPartyTxUrls: case ThirdPartyTxUrls:
return strThirdPartyTxUrls; return strThirdPartyTxUrls;
case Language: case Language:
return settings.value("language"); return QString::fromStdString(SettingToString(setting(), ""));
case UseEmbeddedMonospacedFont: case UseEmbeddedMonospacedFont:
return m_use_embedded_monospaced_font; return m_use_embedded_monospaced_font;
case CoinControlFeatures: case CoinControlFeatures:
@ -564,8 +556,8 @@ bool OptionsModel::setOption(OptionID option, const QVariant& value)
} }
break; break;
case Language: case Language:
if (settings.value("language") != value) { if (changed()) {
settings.setValue("language", value); update(value.toString().toStdString());
setRestartRequired(true); setRestartRequired(true);
} }
break; break;
@ -711,6 +703,7 @@ void OptionsModel::checkAndMigrate()
migrate_setting(ProxyUse, "fUseProxy"); migrate_setting(ProxyUse, "fUseProxy");
migrate_setting(ProxyIPTor, "addrSeparateProxyTor"); migrate_setting(ProxyIPTor, "addrSeparateProxyTor");
migrate_setting(ProxyUseTor, "fUseSeparateProxyTor"); migrate_setting(ProxyUseTor, "fUseSeparateProxyTor");
migrate_setting(Language, "language");
// In case migrating QSettings caused any settings value to change, rerun // In case migrating QSettings caused any settings value to change, rerun
// parameter interaction code to update other settings. This is particularly // parameter interaction code to update other settings. This is particularly