allow multiple units in bitcoin amount widget (for example, for sending) using a combobox

This commit is contained in:
Wladimir J. van der Laan
2011-07-26 13:08:34 +02:00
parent ca1dbe10ed
commit 587e52855a
8 changed files with 197 additions and 49 deletions

View File

@@ -2,33 +2,53 @@
#define BITCOINUNITS_H
#include <QString>
#include <QAbstractListModel>
// Bitcoin unit definitions
class BitcoinUnits
class BitcoinUnits: public QAbstractListModel
{
public:
explicit BitcoinUnits(QObject *parent);
enum Unit
{
// Source: https://en.bitcoin.it/wiki/Units
// Please add only sensible ones
BTC,
mBTC,
uBTC
};
/// Static API
// Get list of units, for dropdown box
static QList<Unit> availableUnits();
// Short name
static QString name(Unit unit);
static QString name(int unit);
// Longer description
static QString description(Unit unit);
static QString description(int unit);
// Number of satoshis / unit
static qint64 factor(Unit unit);
static qint64 factor(int unit);
// Number of amount digits (to represent max number of coins)
static int amountDigits(int unit);
// Number of decimals left
static int decimals(Unit unit);
static int decimals(int unit);
// Format as string
static QString format(Unit unit, qint64 amount, bool plussign=false);
static QString format(int unit, qint64 amount, bool plussign=false);
// Format as string (with unit)
static QString formatWithUnit(Unit unit, qint64 amount, bool plussign=false);
static QString formatWithUnit(int unit, qint64 amount, bool plussign=false);
// Parse string to coin amount
static bool parse(Unit unit, const QString &value, qint64 *val_out);
static bool parse(int unit, const QString &value, qint64 *val_out);
/// AbstractListModel implementation
enum {
// Unit identifier
UnitRole = Qt::UserRole
} RoleIndex;
int rowCount(const QModelIndex &parent) const;
QVariant data(const QModelIndex &index, int role) const;
private:
QList<BitcoinUnits::Unit> unitlist;
};
typedef BitcoinUnits::Unit BitcoinUnit;
#endif // BITCOINUNITS_H