13 #include <QStringList>
18 unitlist(availableUnits())
47 return QString(
"pivx");
49 return QString(
"mpivx");
51 return QString::fromUtf8(
"upivx");
53 return QString(
"???");
67 return z + QString(
"m") + CURR_UNIT;
69 return z + QString::fromUtf8(
"μ") + CURR_UNIT;
71 return QString(
"???");
76 return z + QString(
"t") + CURR_UNIT;
78 return z + QString(
"mt") + CURR_UNIT;
80 return z + QString::fromUtf8(
"μt") + CURR_UNIT;
82 return QString(
"???");
95 return QString(
"Milli-") + CURR_UNIT + QString(
" (1 / 1" THIN_SP_UTF8 "000)");
99 return QString(
"???");
104 return QString(
"Test") + CURR_UNIT;
106 return QString(
"Milli-Test") + CURR_UNIT + QString(
" (1 / 1" THIN_SP_UTF8 "000)");
110 return QString(
"???");
150 qint64 n = (qint64)nIn;
151 qint64 coin =
factor(unit);
153 qint64 n_abs = (n > 0 ? n : -n);
154 qint64 quotient = n_abs / coin;
155 qint64 remainder = n_abs % coin;
156 QString quotient_str = QString::number(quotient);
157 QString remainder_str = QString::number(remainder).rightJustified(num_decimals,
'0');
162 int q_size = quotient_str.size();
164 for (
int i = 3; i < q_size; i += 3)
165 quotient_str.insert(q_size - i, thin_sp);
168 quotient_str.insert(0,
'-');
169 else if (fPlus && n > 0)
170 quotient_str.insert(0,
'+');
172 if (num_decimals <= 0)
175 if(cleanRemainderZeros) {
177 QString cleanRemainder = remainder_str;
178 for (
int i = (remainder_str.length() - 1); i > 1; i--) {
179 if (remainder_str.at(i) == QChar(
'0')) {
180 cleanRemainder = cleanRemainder.left(cleanRemainder.lastIndexOf(
"0"));
184 return quotient_str + QString(
".") + cleanRemainder;
187 return quotient_str + QString(
".") + remainder_str;
208 return format(unit, amount, plussign, separators) + QString(
" ") +
name(unit);
215 return QString(
"<span style='white-space: nowrap;'>%1</span>").arg(str);
221 int digits =
settings.value(
"digits").toInt();
223 QString result =
format(unit, amount, plussign, separators, cleanRemainderZeros);
225 if (!cleanRemainderZeros) {
226 result.chop(
decimals(unit) - digits);
228 int length = result.mid(result.indexOf(
"."), result.length() - 1).length() - 1;
229 if (length > digits) {
230 result.chop(length - digits);
235 return result + QString(
" ") +
name(unit, isZPIV);
240 QString str(
floorWithUnit(unit, amount, plussign, separators, cleanRemainderZeros, isZPIV));
242 return QString(
"<span style='white-space: nowrap;'>%1</span>").arg(str);
247 if (!
valid(unit) || value.isEmpty())
252 QStringList parts =
removeSpaces(value).replace(
",",
".").split(
".");
254 if (parts.size() > 2) {
257 QString whole = parts[0];
260 if (parts.size() > 1) {
263 if (
decimals.size() > num_decimals) {
267 QString str = whole +
decimals.leftJustified(num_decimals,
'0');
269 if (str.size() > 18) {
272 CAmount retvalue(str.toLongLong(&ok));
281 QString amountTitle = QObject::tr(
"Amount");
296 int row = index.row();
297 if (row >= 0 && row <
unitlist.size()) {
301 case Qt::DisplayRole:
302 return QVariant(
name(unit));
303 case Qt::ToolTipRole:
306 return QVariant(
static_cast<int>(unit));
int64_t CAmount
Amount in PIV (Can be negative)
const CChainParams & Params()
Return the currently selected parameters.
@ UnitRole
Unit identifier.
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.
static QString floorHtmlWithUnit(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=separatorStandard, bool cleanRemainderZeros=false, bool isZPIV=false)
static QString floorWithUnit(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=separatorStandard, bool cleanRemainderZeros=false, bool isZPIV=false)
Format as string (with unit) but floor value up to "digits" settings.
QVariant data(const QModelIndex &index, int role) const
static QString id(int unit)
Identifier, e.g. for image names.
static QString formatHtmlWithUnit(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=separatorStandard)
static bool valid(int unit)
Is unit ID valid?
static QString description(int unit)
Longer description.
static QString removeSpaces(QString text)
int rowCount(const QModelIndex &parent) const
static QString format(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=separatorStandard, bool cleanRemainderZeros=true)
Format as string.
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 formatWithUnit(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=separatorStandard)
Format as string (with unit)
static QString name(int unit, bool isZpiv=false)
Short name.
static const std::string MAIN
Chain name strings.
const Consensus::Params & GetConsensus() const
const std::string CURRENCY_UNIT