From c78bd937017212c89c1c7aab07399cec5b6b3bdd Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Wed, 20 Nov 2013 15:56:51 +0100 Subject: [Qt] extend validate line edit and btc address validator - remove btc address length from address validator - add an optional btc address check in validated line edit that defaults to off and is used in GUIUtil::setupAddressWidget() - an isAcceptable() check is added to validated line edit on focus out which only kicks in, when a validator is used with that widget - remove an isAcceptable() check from sendcoinsentry.cpp - remove obsolete attributes from ui files, which are set by calling GUIUtil::setupAddressWidget() - move some more things to GUIUtil::setupAddressWidget() and remove them from normal code e.g. placeholder text --- src/qt/qvalidatedlineedit.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) (limited to 'src/qt/qvalidatedlineedit.cpp') 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; +} -- cgit v1.2.3