Bitcoin ABC  0.22.13
P2P Digital Currency
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 <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 
32 class BitcoinUnits : public QAbstractListModel {
33  Q_OBJECT
34 
35 public:
36  explicit BitcoinUnits(QObject *parent);
37 
43  enum Unit { BCH, mBCH, uBCH, SAT };
44 
46 
50 
52  static QList<Unit> availableUnits();
54  static bool valid(int unit);
56  static QString longName(int unit);
58  static QString shortName(int unit);
60  static QString description(int unit);
62  static qint64 factor(int unit);
64  static int decimals(int unit);
66  static QString format(int unit, const Amount amount, bool plussign = false,
67  SeparatorStyle separators = separatorStandard);
69  static QString
70  formatWithUnit(int unit, const Amount amount, bool plussign = false,
71  SeparatorStyle separators = separatorStandard);
73  static QString
74  formatHtmlWithUnit(int unit, const Amount amount, bool plussign = false,
75  SeparatorStyle separators = separatorStandard);
77  static bool parse(int unit, const QString &value, Amount *val_out);
80  static QString getAmountColumnTitle(int unit);
82 
86  enum RoleIndex {
88  UnitRole = Qt::UserRole
89  };
90  int rowCount(const QModelIndex &parent) const override;
91  QVariant data(const QModelIndex &index, int role) const override;
93 
94  static QString removeSpaces(QString text) {
95  text.remove(' ');
96  text.remove(QChar(THIN_SP_CP));
97  return text;
98  }
99 
101  static Amount maxMoney();
102 
103 private:
104  QList<BitcoinUnits::Unit> unitlist;
105 };
106 
108 
109 #endif // BITCOIN_QT_BITCOINUNITS_H
static QString formatWithUnit(int unit, const Amount amount, bool plussign=false, SeparatorStyle separators=separatorStandard)
Format as string (with unit)
QList< BitcoinUnits::Unit > unitlist
Definition: bitcoinunits.h:104
Unit
Bitcoin units (Bitcoin Cash unit work the same as Bitoin).
Definition: bitcoinunits.h:43
Bitcoin unit definitions.
Definition: bitcoinunits.h:32
BitcoinUnits::Unit BitcoinUnit
Definition: bitcoinunits.h:107
Definition: amount.h:17
static bool valid(int unit)
Is unit ID 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.
Unit identifier.
Definition: bitcoinunits.h:88
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)
Definition: bitcoinunits.h:94
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.
#define THIN_SP_CP
Definition: bitcoinunits.h:24
static int decimals(int unit)
Number of decimals left.