mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-18 19:47:53 +02:00
Merge bitcoin-core/gui#556: refactor: Make BitcoinUnits::Unit a scoped enum
0e5dedbc9eqt/wallettests: sort includes (William Casarin)0554251d66qt: Skip displayUnitChanged signal if unit is not actually changed (Hennadii Stepanov)ffbc2fe459qt, refactor: Remove default cases for scoped enum (Hennadii Stepanov)152d5bad50qt, refactor: Remove BitcoinUnits::valid function (Hennadii Stepanov)aa23960fdfqt, refactor: Make BitcoinUnits::Unit a scoped enum (Hennadii Stepanov)75832fdc37qt: Use QVariant instead of int for BitcoinUnit in QSettings (Hennadii Stepanov) Pull request description: This is a rebased version of #60 Since Qt 5.5 there are [means](https://doc.qt.io/qt-5/qobject.html#Q_ENUM) to register an enum type with the meta-object system (such enum still lacks an ability to interact with [QSettings::setValue()](https://doc.qt.io/qt-5/qsettings.html#setValue) and [QSettings::value()](https://doc.qt.io/qt-5/qsettings.html#value) without defined stream operators). In order to reduce global namespace polluting and to force strong type checking, this PR makes BitcoinUnits::Unit a scoped enum (typedef BitcoinUnits::Unit BitcoinUnit;). No behavior change. ACKs for top commit: jonatack: ACK0e5dedbc9e, review and debug build of each commit after rebase on current master, lightly tested running the GUI, changing units a few times, and verifying persistence after restarting promag: Code review ACK0e5dedbc9eTree-SHA512: 39ec0d7e4f0b9b25be287888121a8db6b282339674e37ec3a3554da63a9e22d6fe079e8310ca289b2a0356a19b3c7e55afa17d09dd34e0f222177f603bb053a3
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include <QLatin1Char>
|
||||
#include <QSettings>
|
||||
#include <QStringList>
|
||||
#include <QVariant>
|
||||
|
||||
const char *DEFAULT_GUI_PROXY_HOST = "127.0.0.1";
|
||||
|
||||
@@ -71,9 +72,16 @@ void OptionsModel::Init(bool resetSettings)
|
||||
fMinimizeOnClose = settings.value("fMinimizeOnClose").toBool();
|
||||
|
||||
// Display
|
||||
if (!settings.contains("nDisplayUnit"))
|
||||
settings.setValue("nDisplayUnit", BitcoinUnits::BTC);
|
||||
nDisplayUnit = settings.value("nDisplayUnit").toInt();
|
||||
if (!settings.contains("DisplayBitcoinUnit")) {
|
||||
settings.setValue("DisplayBitcoinUnit", QVariant::fromValue(BitcoinUnit::BTC));
|
||||
}
|
||||
QVariant unit = settings.value("DisplayBitcoinUnit");
|
||||
if (unit.canConvert<BitcoinUnit>()) {
|
||||
m_display_bitcoin_unit = unit.value<BitcoinUnit>();
|
||||
} else {
|
||||
m_display_bitcoin_unit = BitcoinUnit::BTC;
|
||||
settings.setValue("DisplayBitcoinUnit", QVariant::fromValue(m_display_bitcoin_unit));
|
||||
}
|
||||
|
||||
if (!settings.contains("strThirdPartyTxUrls"))
|
||||
settings.setValue("strThirdPartyTxUrls", "");
|
||||
@@ -376,7 +384,7 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const
|
||||
return m_sub_fee_from_amount;
|
||||
#endif
|
||||
case DisplayUnit:
|
||||
return nDisplayUnit;
|
||||
return QVariant::fromValue(m_display_bitcoin_unit);
|
||||
case ThirdPartyTxUrls:
|
||||
return strThirdPartyTxUrls;
|
||||
case Language:
|
||||
@@ -584,16 +592,13 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in
|
||||
return successful;
|
||||
}
|
||||
|
||||
/** Updates current unit in memory, settings and emits displayUnitChanged(newUnit) signal */
|
||||
void OptionsModel::setDisplayUnit(const QVariant &value)
|
||||
void OptionsModel::setDisplayUnit(const QVariant& new_unit)
|
||||
{
|
||||
if (!value.isNull())
|
||||
{
|
||||
QSettings settings;
|
||||
nDisplayUnit = value.toInt();
|
||||
settings.setValue("nDisplayUnit", nDisplayUnit);
|
||||
Q_EMIT displayUnitChanged(nDisplayUnit);
|
||||
}
|
||||
if (new_unit.isNull() || new_unit.value<BitcoinUnit>() == m_display_bitcoin_unit) return;
|
||||
m_display_bitcoin_unit = new_unit.value<BitcoinUnit>();
|
||||
QSettings settings;
|
||||
settings.setValue("DisplayBitcoinUnit", QVariant::fromValue(m_display_bitcoin_unit));
|
||||
Q_EMIT displayUnitChanged(m_display_bitcoin_unit);
|
||||
}
|
||||
|
||||
void OptionsModel::setRestartRequired(bool fRequired)
|
||||
|
||||
Reference in New Issue
Block a user