From 988ed5effc4542cf0fa1f033ff78cd57c9742904 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sun, 16 Dec 2018 04:20:46 +0000 Subject: [PATCH] GUI: Abstract asset+amount formatting into new GUIUtil::formatAssetAmount --- src/qt/guiutil.cpp | 21 +++++++++++++++++++++ src/qt/guiutil.h | 5 +++++ src/qt/transactiontablemodel.cpp | 17 +---------------- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index 77d99ad307..bdd0968a8a 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -11,6 +11,7 @@ #include #include +#include "assetsdir.h" #include #include #include @@ -773,6 +774,26 @@ QString boostPathToQString(const fs::path &path) return QString::fromStdString(path.string(utf8)); } +QString formatAssetAmount(const CAsset& asset, const CAmount& amount, const int bitcoin_unit, BitcoinUnits::SeparatorStyle separators) +{ + if (asset == Params().GetConsensus().pegged_asset) { + return BitcoinUnits::formatWithUnit(bitcoin_unit, amount, false, separators); + } + + qlonglong whole = amount / 100000000; + qlonglong fraction = amount % 100000000; + QString str = QString("%1").arg(whole); + if (fraction) { + str += QString(".%1").arg(fraction, 8, 10, QLatin1Char('0')); + } + std::string asset_label = gAssetsDir.GetLabel(asset); + if (asset_label.empty()) { + asset_label = asset.GetHex(); + } + str += QString(" ") + QString::fromStdString(asset_label); + return str; +} + QString formatDurationStr(int secs) { QStringList strList; diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index 011827e134..f22a85b136 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -7,6 +7,8 @@ #include #include +#include "bitcoinunits.h" +#include #include #include @@ -187,6 +189,9 @@ namespace GUIUtil /* Convert OS specific boost path to QString through UTF-8 */ QString boostPathToQString(const fs::path &path); + /* Format an amount of assets in a user-friendly style */ + QString formatAssetAmount(const CAsset&, const CAmount&, int bitcoin_unit, BitcoinUnits::SeparatorStyle); + /* Convert seconds into a QString with days, hours, mins, secs */ QString formatDurationStr(int secs); diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp index 5fbffcf691..5a423e77e8 100644 --- a/src/qt/transactiontablemodel.cpp +++ b/src/qt/transactiontablemodel.cpp @@ -429,22 +429,7 @@ QVariant TransactionTableModel::addressColor(const TransactionRecord *wtx) const QString TransactionTableModel::formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed, BitcoinUnits::SeparatorStyle separators) const { - QString str; - if (wtx->asset == ::policyAsset) { - str = BitcoinUnits::formatWithUnit(walletModel->getOptionsModel()->getDisplayUnit(), wtx->amount, false, separators); - } else { - qlonglong whole = wtx->amount / 100000000; - qlonglong fraction = wtx->amount % 100000000; - str = QString("%1").arg(whole); - if (fraction) { - str += QString(".%1").arg(fraction, 8, 10, QLatin1Char('0')); - } - std::string asset_label = gAssetsDir.GetLabel(wtx->asset); - if (asset_label.empty()) { - asset_label = wtx->asset.GetHex(); - } - str += QString(" ") + QString::fromStdString(asset_label); - } + QString str = GUIUtil::formatAssetAmount(wtx->asset, wtx->amount, walletModel->getOptionsModel()->getDisplayUnit(), separators); if(showUnconfirmed) { if(!wtx->status.countsForBalance)