From 3a6757eed9a24e91e7d800d8026cc3a5c4840141 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Thu, 2 Dec 2021 02:25:30 +0000 Subject: GUI: Load custom FontForMoney from QSettings --- src/qt/optionsmodel.cpp | 35 ++++++++++++++++++++++++++++------- src/qt/optionsmodel.h | 4 +++- 2 files changed, 31 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp index a8f20fec23..a7aea31858 100644 --- a/src/qt/optionsmodel.cpp +++ b/src/qt/optionsmodel.cpp @@ -118,6 +118,25 @@ struct ProxySetting { static ProxySetting ParseProxyString(const std::string& proxy); static std::string ProxyString(bool is_set, QString ip, QString port); +static const QLatin1String fontchoice_str_embedded{"embedded"}; +static const QLatin1String fontchoice_str_best_system{"best_system"}; +static const QString fontchoice_str_custom_prefix{QStringLiteral("custom, ")}; + +OptionsModel::FontChoice OptionsModel::FontChoiceFromString(const QString& s) +{ + if (s == fontchoice_str_best_system) { + return FontChoiceAbstract::BestSystemFont; + } else if (s == fontchoice_str_embedded) { + return FontChoiceAbstract::EmbeddedFont; + } else if (s.startsWith(fontchoice_str_custom_prefix)) { + QFont f; + f.fromString(s.mid(fontchoice_str_custom_prefix.size())); + return f; + } else { + return FontChoiceAbstract::EmbeddedFont; // default + } +} + OptionsModel::OptionsModel(interfaces::Node& node, QObject *parent) : QAbstractListModel(parent), m_node{node} { @@ -215,13 +234,14 @@ bool OptionsModel::Init(bilingual_str& error) #endif // Display - if (!settings.contains("UseEmbeddedMonospacedFont")) { - settings.setValue("UseEmbeddedMonospacedFont", "true"); - } - if (settings.value("UseEmbeddedMonospacedFont").toBool()) { - m_font_money = FontChoiceAbstract::EmbeddedFont; - } else { - m_font_money = FontChoiceAbstract::BestSystemFont; + if (settings.contains("FontForMoney")) { + m_font_money = FontChoiceFromString(settings.value("FontForMoney").toString()); + } else if (settings.contains("UseEmbeddedMonospacedFont")) { + if (settings.value("UseEmbeddedMonospacedFont").toBool()) { + m_font_money = FontChoiceAbstract::EmbeddedFont; + } else { + m_font_money = FontChoiceAbstract::BestSystemFont; + } } Q_EMIT fontForMoneyChanged(getFontForMoney()); @@ -615,6 +635,7 @@ bool OptionsModel::setOption(OptionID option, const QVariant& value, const std:: m_font_money = FontChoiceAbstract::BestSystemFont; } settings.setValue("UseEmbeddedMonospacedFont", use_embedded_monospaced_font); + settings.remove("FontForMoney"); Q_EMIT fontForMoneyChanged(getFontForMoney()); break; } diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h index f31907178b..79928d2fa9 100644 --- a/src/qt/optionsmodel.h +++ b/src/qt/optionsmodel.h @@ -129,7 +129,7 @@ private: QString language; BitcoinUnit m_display_bitcoin_unit; QString strThirdPartyTxUrls; - FontChoice m_font_money; + FontChoice m_font_money{FontChoiceAbstract::EmbeddedFont}; bool fCoinControlFeatures; bool m_sub_fee_from_amount; bool m_enable_psbt_controls; @@ -138,6 +138,8 @@ private: /* settings that were overridden by command-line */ QString strOverriddenByCommandLine; + static FontChoice FontChoiceFromString(const QString&); + // Add option to list of GUI options overridden through command line/config file void addOverriddenOption(const std::string &option); -- cgit v1.2.3