Bitcoin ABC 0.26.3
P2P Digital Currency
Loading...
Searching...
No Matches
bitcoinunits.h
Go to the documentation of this file.
1// Copyright (c) 2011-2016 The Bitcoin Core developers
2// Distributed under the MIT software license, see the accompanying
3// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5#ifndef BITCOIN_QT_BITCOINUNITS_H
6#define BITCOIN_QT_BITCOINUNITS_H
7
8#include <consensus/amount.h>
9
10#include <QAbstractListModel>
11#include <QString>
12
13// U+2009 THIN SPACE = UTF-8 E2 80 89
14#define REAL_THIN_SP_CP 0x2009
15#define REAL_THIN_SP_UTF8 "\xE2\x80\x89"
16
17// QMessageBox seems to have a bug whereby it doesn't display thin/hair spaces
18// correctly. Workaround is to display a space in a small font. If you change
19// this, please test that it doesn't cause the parent span to start wrapping.
20#define HTML_HACK_SP \
21 "<span style='white-space: nowrap; font-size: 6pt'> </span>"
22
23// Define THIN_SP_* variables to be our preferred type of thin space
24#define THIN_SP_CP REAL_THIN_SP_CP
25#define THIN_SP_UTF8 REAL_THIN_SP_UTF8
26#define THIN_SP_HTML HTML_HACK_SP
27
32class BitcoinUnits : public QAbstractListModel {
34
35public:
36 explicit BitcoinUnits(QObject *parent);
37
42 enum Unit { base, sub };
43
45
49
53 static bool valid(int unit);
55 static QString longName(int unit);
57 static QString shortName(int unit);
59 static QString description(int unit);
61 static Amount factor(int unit);
63 static int decimals(int unit);
65 static QString format(int unit, const Amount amount, bool plussign = false,
67 bool justify = false);
69 static QString
70 formatWithUnit(int unit, const Amount amount, bool plussign = false,
73 static QString
74 formatHtmlWithUnit(int unit, const Amount amount, bool plussign = false,
78 static QString formatWithPrivacy(int unit, const Amount &amount,
81 static bool parse(int unit, const QString &value, Amount *val_out);
84 static QString getAmountColumnTitle(int unit);
86
90 enum RoleIndex {
92 UnitRole = Qt::UserRole
93 };
94 int rowCount(const QModelIndex &parent) const override;
95 QVariant data(const QModelIndex &index, int role) const override;
97
99 text.remove(' ');
100 text.remove(QChar(THIN_SP_CP));
101 return text;
102 }
103
105 static Amount maxMoney();
106
107private:
109};
110
111#endif // BITCOIN_QT_BITCOINUNITS_H
#define THIN_SP_CP
Bitcoin unit definitions.
@ UnitRole
Unit identifier.
int rowCount(const QModelIndex &parent) const override
QList< BitcoinUnits::Unit > unitlist
static QString formatWithUnit(int unit, const Amount amount, bool plussign=false, SeparatorStyle separators=SeparatorStyle::STANDARD)
Format as string (with unit)
static int decimals(int unit)
Number of decimals left.
QVariant data(const QModelIndex &index, int role) const override
static Amount factor(int unit)
Number of Satoshis (1e-8) per unit.
static bool valid(int unit)
Is unit ID valid?
static QString formatWithPrivacy(int unit, const Amount &amount, SeparatorStyle separators, bool privacy)
Format as string (with unit) of fixed length to preserve privacy, if it is set.
static QString description(int unit)
Longer description.
static QString removeSpaces(QString text)
static QString longName(int unit)
Long name.
static Amount maxMoney()
Return maximum number of base units (Satoshis)
static QList< Unit > availableUnits()
Get list of units, for drop-down box.
static QString format(int unit, const Amount amount, bool plussign=false, SeparatorStyle separators=SeparatorStyle::STANDARD, bool justify=false)
Format as string.
static bool parse(int unit, const QString &value, Amount *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 *‍/.
Unit
Currency units Please add only sensible ones.
static QString shortName(int unit)
Short name.
static QString formatHtmlWithUnit(int unit, const Amount amount, bool plussign=false, SeparatorStyle separators=SeparatorStyle::STANDARD)
Format as HTML string (with unit)
T GetRand(T nMax=std::numeric_limits< T >::max()) noexcept
Generate a uniform random integer of type T in the range [0..nMax) nMax defaults to std::numeric_limi...
Definition random.h:85