12 : QAbstractListModel(parent), unitlist(availableUnits()) {}
17 unitlist.append(
mBCH);
18 unitlist.append(
uBCH);
42 return QString::fromUtf8(
"μ") + QString(
CURRENCY_UNIT.c_str());
44 return QString(
"Satoshi (sat)");
46 return QString(
"???");
53 return QString(
"sat");
62 return QString(
"Bitcoins");
64 return QString(
"Milli-Bitcoins (1 / 1" THIN_SP_UTF8 "000)");
69 return QString(
"Satoshi (sat) (1 / 100" THIN_SP_UTF8
70 "000" THIN_SP_UTF8
"000)");
72 return QString(
"???");
114 qint64 n = qint64(nIn /
SATOSHI);
115 qint64 coin =
factor(unit);
117 qint64 n_abs = (n > 0 ? n : -n);
118 qint64 quotient = n_abs / coin;
119 QString quotient_str = QString::number(quotient);
124 int q_size = quotient_str.size();
127 for (
int i = 3; i < q_size; i += 3) {
128 quotient_str.insert(q_size - i, thin_sp);
133 quotient_str.insert(0,
'-');
134 }
else if (fPlus && n > 0) {
135 quotient_str.insert(0,
'+');
138 if (num_decimals > 0) {
139 qint64 remainder = n_abs % coin;
140 QString remainder_str =
141 QString::number(remainder).rightJustified(num_decimals,
'0');
142 return quotient_str + QString(
".") + remainder_str;
158 return format(unit, amount, plussign, separators) + QString(
" ") +
167 return QString(
"<span style='white-space: nowrap;'>%1</span>").arg(str);
171 if (!
valid(unit) || value.isEmpty()) {
180 if (parts.size() > 2) {
184 QString whole = parts[0];
187 if (parts.size() > 1) {
190 if (decimals.size() > num_decimals) {
195 QString str = whole + decimals.leftJustified(num_decimals,
'0');
197 if (str.size() > 18) {
209 QString amountTitle = QObject::tr(
"Amount");
222 int row = index.row();
223 if (row >= 0 && row <
unitlist.size()) {
227 case Qt::DisplayRole:
229 case Qt::ToolTipRole:
232 return QVariant(static_cast<int>(unit));
static QString formatWithUnit(int unit, const Amount amount, bool plussign=false, SeparatorStyle separators=separatorStandard)
Format as string (with unit)
const std::string CURRENCY_UNIT
QList< BitcoinUnits::Unit > unitlist
Unit
Bitcoin units (Bitcoin Cash unit work the same as Bitoin).
static bool valid(int unit)
Is unit ID valid?
static constexpr Amount SATOSHI
static const Amount MAX_MONEY
No amount larger than this (in satoshi) is valid.
static QString longName(int unit)
Long name.
*static QString getAmountColumnTitle(int unit)
Gets title for amount column including current display unit if optionsModel reference available...
BitcoinUnits(QObject *parent)
static QString description(int unit)
Longer description.
static QString shortName(int unit)
Short name.
static qint64 factor(int unit)
Number of Satoshis (1e-8) per unit.
static Amount maxMoney()
Return maximum number of base units (Satoshis)
static QString format(int unit, const Amount amount, bool plussign=false, SeparatorStyle separators=separatorStandard)
Format as string.
static QList< Unit > availableUnits()
Get list of units, for drop-down box.
int rowCount(const QModelIndex &parent) const override
static QString formatHtmlWithUnit(int unit, const Amount amount, bool plussign=false, SeparatorStyle separators=separatorStandard)
Format as HTML string (with unit)
static QString removeSpaces(QString text)
QVariant data(const QModelIndex &index, int role) const override
static bool parse(int unit, const QString &value, Amount *val_out)
Parse string to coin amount.
static int decimals(int unit)
Number of decimals left.