14 QAbstractListModel(parent),
15 unitlist(availableUnits())
23 unitlist.append(
mBTC);
24 unitlist.append(
uBTC);
47 case BTC:
return QString(
"BTC");
48 case mBTC:
return QString(
"mBTC");
49 case uBTC:
return QString::fromUtf8(
"µBTC (bits)");
50 case SAT:
return QString(
"Satoshi (sat)");
51 default:
return QString(
"???");
59 case uBTC:
return QString::fromUtf8(
"bits");
60 case SAT:
return QString(
"sat");
69 case BTC:
return QString(
"Bitcoins");
72 case SAT:
return QString(
"Satoshi (sat) (1 / 100" THIN_SP_UTF8
"000" THIN_SP_UTF8
"000)");
73 default:
return QString(
"???");
81 case BTC:
return 100000000;
82 case mBTC:
return 100000;
83 case uBTC:
return 100;
85 default:
return 100000000;
107 qint64 n = (qint64)nIn;
108 qint64 coin =
factor(unit);
110 qint64 n_abs = (n > 0 ? n : -n);
111 qint64 quotient = n_abs / coin;
112 QString quotient_str = QString::number(quotient);
114 quotient_str = quotient_str.rightJustified(
MAX_DIGITS_BTC - num_decimals,
' ');
120 int q_size = quotient_str.size();
122 for (
int i = 3; i < q_size; i += 3)
123 quotient_str.insert(q_size - i, thin_sp);
126 quotient_str.insert(0,
'-');
127 else if (fPlus && n > 0)
128 quotient_str.insert(0,
'+');
130 if (num_decimals > 0) {
131 qint64 remainder = n_abs % coin;
132 QString remainder_str = QString::number(remainder).rightJustified(num_decimals,
'0');
133 return quotient_str + QString(
".") + remainder_str;
150 return format(unit, amount, plussign, separators) + QString(
" ") +
shortName(unit);
157 return QString(
"<span style='white-space: nowrap;'>%1</span>").arg(str);
165 value =
format(unit, 0,
false, separators,
true).replace(
'0',
'#');
167 value =
format(unit, amount,
false, separators,
true);
169 return value + QString(
" ") +
shortName(unit);
174 if(!
valid(unit) || value.isEmpty())
185 QString whole = parts[0];
192 if(decimals.size() > num_decimals)
197 QString str = whole + decimals.leftJustified(num_decimals,
'0');
203 CAmount retvalue(str.toLongLong(&ok));
213 QString amountTitle = QObject::tr(
"Amount");
229 int row = index.row();
230 if(row >= 0 && row <
unitlist.size())
236 case Qt::DisplayRole:
238 case Qt::ToolTipRole:
241 return QVariant(static_cast<int>(unit));
QList< BitcoinUnits::Unit > unitlist
static const CAmount MAX_MONEY
No amount larger than this (in satoshi) is valid.
static QString format(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=SeparatorStyle::STANDARD, bool justify=false)
Format as string.
static bool valid(int unit)
Is unit ID valid?
static QString longName(int unit)
Long name.
static bool parse(int unit, const QString &value, CAmount *val_out)
Parse string to coin amount.
static QString getAmountColumnTitle(int unit)
Gets title for amount column including current display unit if optionsModel reference available */...
int64_t CAmount
Amount in satoshis (Can be negative)
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.
BitcoinUnits(QObject *parent)
static QString formatHtmlWithUnit(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=SeparatorStyle::STANDARD)
Format as HTML string (with unit)
static QString description(int unit)
Longer description.
static QString shortName(int unit)
Short name.
static QString formatWithUnit(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=SeparatorStyle::STANDARD)
Format as string (with unit)
static constexpr auto MAX_DIGITS_BTC
static qint64 factor(int unit)
Number of Satoshis (1e-8) per unit.
static QList< Unit > availableUnits()
Get list of units, for drop-down box.
int rowCount(const QModelIndex &parent) const override
static QString removeSpaces(QString text)
QVariant data(const QModelIndex &index, int role) const override
static CAmount maxMoney()
Return maximum number of base units (Satoshis)
static int decimals(int unit)
Number of decimals left.