Dogecoin Core  1.14.2
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 #define REAL_THIN_SP_HTML "&thinsp;"
17 
18 // U+200A HAIR SPACE = UTF-8 E2 80 8A
19 #define HAIR_SP_CP 0x200A
20 #define HAIR_SP_UTF8 "\xE2\x80\x8A"
21 #define HAIR_SP_HTML "&#8202;"
22 
23 // U+2006 SIX-PER-EM SPACE = UTF-8 E2 80 86
24 #define SIXPEREM_SP_CP 0x2006
25 #define SIXPEREM_SP_UTF8 "\xE2\x80\x86"
26 #define SIXPEREM_SP_HTML "&#8198;"
27 
28 // U+2007 FIGURE SPACE = UTF-8 E2 80 87
29 #define FIGURE_SP_CP 0x2007
30 #define FIGURE_SP_UTF8 "\xE2\x80\x87"
31 #define FIGURE_SP_HTML "&#8199;"
32 
33 // QMessageBox seems to have a bug whereby it doesn't display thin/hair spaces
34 // correctly. Workaround is to display a space in a small font. If you
35 // change this, please test that it doesn't cause the parent span to start
36 // wrapping.
37 #define HTML_HACK_SP "<span style='white-space: nowrap; font-size: 6pt'> </span>"
38 
39 // Define THIN_SP_* variables to be our preferred type of thin space
40 #define THIN_SP_CP REAL_THIN_SP_CP
41 #define THIN_SP_UTF8 REAL_THIN_SP_UTF8
42 #define THIN_SP_HTML HTML_HACK_SP
43 
47 class BitcoinUnits: public QAbstractListModel
48 {
49  Q_OBJECT
50 
51 public:
52  explicit BitcoinUnits(QObject *parent);
53 
57  enum Unit
58  {
61  BTC,
63  uBTC
64  };
65 
67  {
71  };
72 
76 
78  static QList<Unit> availableUnits();
80  static bool valid(int unit);
82  static QString name(int unit);
84  static QString description(int unit);
86  static qint64 factor(int unit);
88  static int decimals(int unit);
90  static QString format(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard);
92  static QString formatWithUnit(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard);
94  static QString formatHtmlWithUnit(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard);
96  static bool parse(int unit, const QString &value, CAmount *val_out);
98  static QString getAmountColumnTitle(int unit);
100 
104  enum RoleIndex {
106  UnitRole = Qt::UserRole
107  };
108  int rowCount(const QModelIndex &parent) const;
109  QVariant data(const QModelIndex &index, int role) const;
111 
112  static QString removeSpaces(QString text)
113  {
114  text.remove(' ');
115  text.remove(QChar(THIN_SP_CP));
116 #if (THIN_SP_CP != REAL_THIN_SP_CP)
117  text.remove(QChar(REAL_THIN_SP_CP));
118 #endif
119  return text;
120  }
121 
123  static CAmount maxMoney();
124 
125 private:
126  QList<BitcoinUnits::Unit> unitlist;
127 };
129 
130 #endif // BITCOIN_QT_BITCOINUNITS_H
int64_t CAmount
Amount in satoshis (Can be negative)
Definition: amount.h:15
BitcoinUnits::Unit BitcoinUnit
Definition: bitcoinunits.h:128
#define THIN_SP_CP
Definition: bitcoinunits.h:40
#define REAL_THIN_SP_CP
Definition: bitcoinunits.h:14
Bitcoin unit definitions.
Definition: bitcoinunits.h:48
@ UnitRole
Unit identifier.
Definition: bitcoinunits.h:106
QList< BitcoinUnits::Unit > unitlist
Definition: bitcoinunits.h:126
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 name(int unit)
Short name.
QVariant data(const QModelIndex &index, int role) const
static QString formatHtmlWithUnit(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=separatorStandard)
Format as HTML string (with unit)
static bool valid(int unit)
Is unit ID valid?
static QString description(int unit)
Longer description.
static QString removeSpaces(QString text)
Definition: bitcoinunits.h:112
int rowCount(const QModelIndex &parent) const
static QString format(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=separatorStandard)
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 *‍/.
Unit
Bitcoin units.
Definition: bitcoinunits.h:58
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)