#include "bitcoinamountfield.h"
+#include "qvalidatedlineedit.h"
+#include "bitcoinunits.h"
#include <QLabel>
#include <QLineEdit>
BitcoinAmountField::BitcoinAmountField(QWidget *parent):
QWidget(parent), amount(0), decimals(0)
{
- amount = new QLineEdit(this);
- amount->setValidator(new QRegExpValidator(QRegExp("[0-9]+"), this));
+ amount = new QValidatedLineEdit(this);
+ amount->setValidator(new QRegExpValidator(QRegExp("[0-9]*"), this));
amount->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
amount->installEventFilter(this);
amount->setMaximumWidth(100);
- decimals = new QLineEdit(this);
+ decimals = new QValidatedLineEdit(this);
decimals->setValidator(new QRegExpValidator(QRegExp("[0-9]+"), this));
decimals->setMaxLength(8);
decimals->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
layout->addWidget(amount);
layout->addWidget(new QLabel(QString(".")));
layout->addWidget(decimals);
- layout->addWidget(new QLabel(QString(" BTC")));
+ layout->addWidget(new QLabel(QString(" ") + BitcoinUnits::name(BitcoinUnits::BTC)));
layout->addStretch(1);
layout->setContentsMargins(0,0,0,0);
- setFocusPolicy(Qt::TabFocus);
setLayout(layout);
+
+ setFocusPolicy(Qt::TabFocus);
setFocusProxy(amount);
// If one if the widgets changes, the combined content changes as well
}
}
+void BitcoinAmountField::clear()
+{
+ amount->clear();
+ decimals->clear();
+}
+
+bool BitcoinAmountField::validate()
+{
+ bool valid = true;
+ if(decimals->text().isEmpty())
+ {
+ decimals->setValid(false);
+ valid = false;
+ }
+ if(!BitcoinUnits::parse(BitcoinUnits::BTC, text(), 0))
+ {
+ amount->setValid(false);
+ decimals->setValid(false);
+ valid = false;
+ }
+
+ return valid;
+}
+
QString BitcoinAmountField::text() const
{
- if(amount->text().isEmpty() || decimals->text().isEmpty())
+ if(decimals->text().isEmpty())
+ {
return QString();
+ }
return amount->text() + QString(".") + decimals->text();
}
}
return false;
}
+
+QWidget *BitcoinAmountField::setupTabChain(QWidget *prev)
+{
+ QWidget::setTabOrder(prev, amount);
+ QWidget::setTabOrder(amount, decimals);
+ return decimals;
+}