cc92159fede1afaa631c7b2bb16fe1ddcf256876
[novacoin.git] / src / qt / bitcoinamountfield.h
1 #ifndef BITCOINFIELD_H
2 #define BITCOINFIELD_H
3
4 #include <QWidget>
5
6 QT_BEGIN_NAMESPACE
7 class QValidatedLineEdit;
8 class QValueComboBox;
9 QT_END_NAMESPACE
10
11 // Coin amount entry widget with separate parts for whole
12 // coins and decimals.
13 class BitcoinAmountField: public QWidget
14 {
15     Q_OBJECT
16     Q_PROPERTY(qint64 value READ value WRITE setValue NOTIFY textChanged USER true);
17 public:
18     explicit BitcoinAmountField(QWidget *parent = 0);
19
20     qint64 value(bool *valid=0) const;
21     void setValue(qint64 value);
22
23     // Mark current valid as invalid in UI
24     void setValid(bool valid);
25     bool validate();
26
27     // Change current unit
28     void setDisplayUnit(int unit);
29
30     // Make field empty and ready for new input
31     void clear();
32
33     // Qt messes up the tab chain by default in some cases (issue http://bugreports.qt.nokia.com/browse/QTBUG-10907)
34     // Hence we have to set it up manually
35     QWidget *setupTabChain(QWidget *prev);
36
37 signals:
38     void textChanged();
39
40 protected:
41     // Intercept '.' and ',' keys, if pressed focus a specified widget
42     bool eventFilter(QObject *object, QEvent *event);
43
44 private:
45     QValidatedLineEdit *amount;
46     QValidatedLineEdit *decimals;
47     QValueComboBox *unit;
48     int currentUnit;
49
50     void setText(const QString &text);
51     QString text() const;
52
53 private slots:
54     void unitChanged(int idx);
55
56 };
57
58
59 #endif // BITCOINFIELD_H