lbrycrd/src/qt/bitcoinunits.h

72 lines
1.9 KiB
C
Raw Normal View History

#ifndef BITCOINUNITS_H
#define BITCOINUNITS_H
#include <QString>
#include <QAbstractListModel>
2011-11-13 13:19:52 +01:00
/** Bitcoin unit definitions. Encapsulates parsing and formatting
2012-07-26 02:48:39 +02:00
and serves as list model for drop-down selection boxes.
2011-11-13 13:19:52 +01:00
*/
class BitcoinUnits: public QAbstractListModel
{
Q_OBJECT
public:
explicit BitcoinUnits(QObject *parent);
2011-11-13 13:19:52 +01:00
/** Bitcoin units.
@note Source: https://en.bitcoin.it/wiki/Units . Please add only sensible ones
*/
enum Unit
{
BTC,
mBTC,
uBTC
};
2011-11-13 13:19:52 +01:00
//! @name Static API
//! Unit conversion and formatting
///@{
2012-07-26 02:48:39 +02:00
//! Get list of units, for drop-down box
static QList<Unit> availableUnits();
2011-11-13 13:19:52 +01:00
//! Is unit ID valid?
static bool valid(int unit);
2011-11-13 13:19:52 +01:00
//! Short name
static QString name(int unit);
2011-11-13 13:19:52 +01:00
//! Longer description
static QString description(int unit);
2011-11-13 13:19:52 +01:00
//! Number of Satoshis (1e-8) per unit
static qint64 factor(int unit);
//! Max amount per unit
static qint64 maxAmount(int unit);
2011-11-13 13:19:52 +01:00
//! Number of amount digits (to represent max number of coins)
static int amountDigits(int unit);
2011-11-13 13:19:52 +01:00
//! Number of decimals left
static int decimals(int unit);
2011-11-13 13:19:52 +01:00
//! Format as string
static QString format(int unit, qint64 amount, bool plussign=false);
2011-11-13 13:19:52 +01:00
//! Format as string (with unit)
static QString formatWithUnit(int unit, qint64 amount, bool plussign=false);
2011-11-13 13:19:52 +01:00
//! Parse string to coin amount
static bool parse(int unit, const QString &value, qint64 *val_out);
2011-11-13 13:19:52 +01:00
///@}
2011-11-13 13:19:52 +01:00
//! @name AbstractListModel implementation
2012-07-26 02:48:39 +02:00
//! List model for unit drop-down selection box.
2011-11-13 13:19:52 +01:00
///@{
enum RoleIndex {
/** Unit identifier */
UnitRole = Qt::UserRole
2011-11-13 13:19:52 +01:00
};
int rowCount(const QModelIndex &parent) const;
QVariant data(const QModelIndex &index, int role) const;
2011-11-13 13:19:52 +01:00
///@}
private:
QList<BitcoinUnits::Unit> unitlist;
};
typedef BitcoinUnits::Unit BitcoinUnit;
#endif // BITCOINUNITS_H