Merge pull request 'Remove non-breaking space from currency strings' (#236) from tobtoht/feather:currencystring_nonbreaking into master

Reviewed-on: https://git.wownero.com/feather/feather/pulls/236
This commit is contained in:
tobtoht 2020-12-18 23:32:07 +00:00
commit fdabaf3374
2 changed files with 24 additions and 8 deletions

View File

@ -566,19 +566,33 @@ QString Utils::formatBytes(quint64 bytes)
return QString("%1 %2").arg(QString::number(_data, 'f', 1), sizes[i]); return QString("%1 %2").arg(QString::number(_data, 'f', 1), sizes[i]);
} }
QString Utils::amountToCurrencyString(double amount, const QString &currencyCode) {
QMap<QString, QLocale> Utils::localeCache = {};
QLocale Utils::getCurrencyLocale(const QString &currencyCode) {
QLocale locale; QLocale locale;
if (localeCache.contains(currencyCode)) {
locale = localeCache[currencyCode];
} else {
QList<QLocale> allLocales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry); QList<QLocale> allLocales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry);
for (const auto& locale_: allLocales) { for (const auto& locale_: allLocales) {
if (locale_.currencySymbol(QLocale::CurrencyIsoCode) == currencyCode) { if (locale_.currencySymbol(QLocale::CurrencyIsoCode) == currencyCode) {
locale = locale_; locale = locale_;
} }
} }
localeCache[currencyCode] = locale;
}
return locale;
}
QString Utils::amountToCurrencyString(double amount, const QString &currencyCode) {
QLocale locale = getCurrencyLocale(currencyCode);
// \xC2\xA0 = UTF-8 non-breaking space, it looks off.
if (currencyCode == "USD") if (currencyCode == "USD")
return locale.toCurrencyString(amount, "$"); return locale.toCurrencyString(amount, "$").remove("\xC2\xA0");
return locale.toCurrencyString(amount); return locale.toCurrencyString(amount).remove("\xC2\xA0");
} }
int Utils::maxLength(const QVector<QString> &array) { int Utils::maxLength(const QVector<QString> &array) {

View File

@ -95,8 +95,10 @@ public:
static QFont relativeFont(int delta); static QFont relativeFont(int delta);
static double roundSignificant(double N, double n); static double roundSignificant(double N, double n);
static QString formatBytes(quint64 bytes); static QString formatBytes(quint64 bytes);
static QLocale getCurrencyLocale(const QString &currencyCode);
static QString amountToCurrencyString(double amount, const QString &currencyCode); static QString amountToCurrencyString(double amount, const QString &currencyCode);
static int maxLength(const QVector<QString> &array); static int maxLength(const QVector<QString> &array);
static QMap<QString, QLocale> localeCache;
template<typename QEnum> template<typename QEnum>
static QString QtEnumToString (const QEnum value) static QString QtEnumToString (const QEnum value)