aboutsummaryrefslogtreecommitdiff
path: root/src/qt/qvalidatedlineedit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qt/qvalidatedlineedit.cpp')
-rw-r--r--src/qt/qvalidatedlineedit.cpp60
1 files changed, 59 insertions, 1 deletions
diff --git a/src/qt/qvalidatedlineedit.cpp b/src/qt/qvalidatedlineedit.cpp
index 1e7596c9c1..c2567835c9 100644
--- a/src/qt/qvalidatedlineedit.cpp
+++ b/src/qt/qvalidatedlineedit.cpp
@@ -4,10 +4,13 @@
#include "qvalidatedlineedit.h"
+#include "bitcoinaddressvalidator.h"
#include "guiconstants.h"
QValidatedLineEdit::QValidatedLineEdit(QWidget *parent) :
- QLineEdit(parent), valid(true)
+ QLineEdit(parent),
+ valid(true),
+ checkValidator(0)
{
connect(this, SIGNAL(textChanged(QString)), this, SLOT(markValid()));
}
@@ -34,11 +37,20 @@ void QValidatedLineEdit::focusInEvent(QFocusEvent *evt)
{
// Clear invalid flag on focus
setValid(true);
+
QLineEdit::focusInEvent(evt);
}
+void QValidatedLineEdit::focusOutEvent(QFocusEvent *evt)
+{
+ checkValidity();
+
+ QLineEdit::focusOutEvent(evt);
+}
+
void QValidatedLineEdit::markValid()
{
+ // As long as a user is typing ensure we display state as valid
setValid(true);
}
@@ -47,3 +59,49 @@ void QValidatedLineEdit::clear()
setValid(true);
QLineEdit::clear();
}
+
+void QValidatedLineEdit::setEnabled(bool enabled)
+{
+ if (!enabled)
+ {
+ // A disabled QValidatedLineEdit should be marked valid
+ setValid(true);
+ }
+ else
+ {
+ // Recheck validity when QValidatedLineEdit gets enabled
+ checkValidity();
+ }
+
+ QLineEdit::setEnabled(enabled);
+}
+
+void QValidatedLineEdit::checkValidity()
+{
+ if (text().isEmpty())
+ {
+ setValid(true);
+ }
+ else if (hasAcceptableInput())
+ {
+ setValid(true);
+
+ // Check contents on focus out
+ if (checkValidator)
+ {
+ QString address = text();
+ int pos = 0;
+ if (checkValidator->validate(address, pos) == QValidator::Acceptable)
+ setValid(true);
+ else
+ setValid(false);
+ }
+ }
+ else
+ setValid(false);
+}
+
+void QValidatedLineEdit::setCheckValidator(const QValidator *v)
+{
+ checkValidator = v;
+}