16 QAbstractListModel(parent),
17 unitlist(availableUnits())
49 case BTC:
return QString(
"BTC");
50 case mBTC:
return QString(
"mBTC");
51 case uBTC:
return QString::fromUtf8(
"µBTC (bits)");
52 case SAT:
return QString(
"Satoshi (sat)");
53 default:
return QString(
"???");
61 case uBTC:
return QString::fromUtf8(
"bits");
62 case SAT:
return QString(
"sat");
71 case BTC:
return QString(
"Bitcoins");
75 default:
return QString(
"???");
83 case BTC:
return 100000000;
84 case mBTC:
return 100000;
85 case uBTC:
return 100;
87 default:
return 100000000;
109 qint64 n = (qint64)nIn;
110 qint64 coin =
factor(unit);
112 qint64 n_abs = (n > 0 ? n : -n);
113 qint64 quotient = n_abs / coin;
114 QString quotient_str = QString::number(quotient);
116 quotient_str = quotient_str.rightJustified(
MAX_DIGITS_BTC - num_decimals,
' ');
122 int q_size = quotient_str.size();
124 for (
int i = 3; i < q_size; i += 3)
125 quotient_str.insert(q_size - i, thin_sp);
128 quotient_str.insert(0,
'-');
129 else if (fPlus && n > 0)
130 quotient_str.insert(0,
'+');
132 if (num_decimals > 0) {
133 qint64 remainder = n_abs % coin;
134 QString remainder_str = QString::number(remainder).rightJustified(num_decimals,
'0');
135 return quotient_str + QString(
".") + remainder_str;
152 return format(unit, amount, plussign, separators) + QString(
" ") +
shortName(unit);
159 return QString(
"<span style='white-space: nowrap;'>%1</span>").arg(str);
167 value =
format(unit, 0,
false, separators,
true).replace(
'0',
'#');
169 value =
format(unit, amount,
false, separators,
true);
171 return value + QString(
" ") +
shortName(unit);
176 if(!
valid(unit) || value.isEmpty())
187 QString whole = parts[0];
199 QString str = whole +
decimals.leftJustified(num_decimals,
'0');
205 CAmount retvalue(str.toLongLong(&ok));
215 QString amountTitle = QObject::tr(
"Amount");
231 int row = index.row();
232 if(row >= 0 && row <
unitlist.size())
238 case Qt::DisplayRole:
240 case Qt::ToolTipRole:
243 return QVariant(
static_cast<int>(unit));
static constexpr CAmount MAX_MONEY
No amount larger than this (in satoshi) is valid.
int64_t CAmount
Amount in satoshis (Can be negative)
static constexpr auto MAX_DIGITS_BTC
@ UnitRole
Unit identifier.
int rowCount(const QModelIndex &parent) const override
QList< BitcoinUnits::Unit > unitlist
static bool parse(int unit, const QString &value, CAmount *val_out)
Parse string to coin amount.
static CAmount maxMoney()
Return maximum number of base units (Satoshis)
static int decimals(int unit)
Number of decimals left.
QVariant data(const QModelIndex &index, int role) const override
static QString formatHtmlWithUnit(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=SeparatorStyle::STANDARD)
Format as HTML string (with unit)
static QString formatWithPrivacy(int unit, const CAmount &amount, SeparatorStyle separators, bool privacy)
Format as string (with unit) of fixed length to preserve privacy, if it is set.
static bool valid(int unit)
Is unit ID valid?
static QString description(int unit)
Longer description.
static QString removeSpaces(QString text)
static QString longName(int unit)
Long name.
static QString formatWithUnit(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=SeparatorStyle::STANDARD)
Format as string (with unit)
static QList< Unit > availableUnits()
Get list of units, for drop-down box.
static QString getAmountColumnTitle(int unit)
Gets title for amount column including current display unit if optionsModel reference available */.
BitcoinUnits(QObject *parent)
static qint64 factor(int unit)
Number of Satoshis (1e-8) per unit.
static QString format(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=SeparatorStyle::STANDARD, bool justify=false)
Format as string.
static QString shortName(int unit)
Short name.