5 #include <QAbstractListModel>
7 // Bitcoin unit definitions, encapsulates parsing and formatting
8 // and serves as list model for dropdown selection boxes.
9 class BitcoinUnits: public QAbstractListModel
12 explicit BitcoinUnits(QObject *parent);
16 // Source: https://en.bitcoin.it/wiki/Units
17 // Please add only sensible ones
24 // Get list of units, for dropdown box
25 static QList<Unit> availableUnits();
27 static bool valid(int unit);
29 static QString name(int unit);
31 static QString description(int unit);
32 // Number of satoshis / unit
33 static qint64 factor(int unit);
34 // Number of amount digits (to represent max number of coins)
35 static int amountDigits(int unit);
36 // Number of decimals left
37 static int decimals(int unit);
39 static QString format(int unit, qint64 amount, bool plussign=false);
40 // Format as string (with unit)
41 static QString formatWithUnit(int unit, qint64 amount, bool plussign=false);
42 // Parse string to coin amount
43 static bool parse(int unit, const QString &value, qint64 *val_out);
45 /// AbstractListModel implementation
48 UnitRole = Qt::UserRole
50 int rowCount(const QModelIndex &parent) const;
51 QVariant data(const QModelIndex &index, int role) const;
53 QList<BitcoinUnits::Unit> unitlist;
55 typedef BitcoinUnits::Unit BitcoinUnit;
57 #endif // BITCOINUNITS_H