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/bitcoinaddressvalidator.cpp | 58 ++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 21 deletions(-) (limited to 'src/qt/bitcoinaddressvalidator.cpp') diff --git a/src/qt/bitcoinaddressvalidator.cpp b/src/qt/bitcoinaddressvalidator.cpp index 604f24192b..293cc168b9 100644 --- a/src/qt/bitcoinaddressvalidator.cpp +++ b/src/qt/bitcoinaddressvalidator.cpp @@ -1,9 +1,11 @@ -// Copyright (c) 2011-2013 The Bitcoin developers +// Copyright (c) 2011-2014 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "bitcoinaddressvalidator.h" +#include "base58.h" + /* Base58 characters are: "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" @@ -11,21 +13,23 @@ - All numbers except for '0' - All upper-case letters except for 'I' and 'O' - All lower-case letters except for 'l' - - User friendly Base58 input can map - - 'l' and 'I' to '1' - - '0' and 'O' to 'o' */ -BitcoinAddressValidator::BitcoinAddressValidator(QObject *parent) : +BitcoinAddressEntryValidator::BitcoinAddressEntryValidator(QObject *parent) : QValidator(parent) { } -QValidator::State BitcoinAddressValidator::validate(QString &input, int &pos) const +QValidator::State BitcoinAddressEntryValidator::validate(QString &input, int &pos) const { + Q_UNUSED(pos); + + // Empty address is "intermediate" input + if (input.isEmpty()) + return QValidator::Intermediate; + // Correction - for(int idx=0; idx= '0' && ch<='9') || - (ch >= 'a' && ch<='z') || - (ch >= 'A' && ch<='Z')) && - ch != 'l' && ch != 'I' && ch != '0' && ch != 'O') + if (((ch >= '0' && ch<='9') || + (ch >= 'a' && ch<='z') || + (ch >= 'A' && ch<='Z')) && + ch != 'l' && ch != 'I' && ch != '0' && ch != 'O') { // Alphanumeric and not a 'forbidden' character } @@ -71,11 +77,21 @@ QValidator::State BitcoinAddressValidator::validate(QString &input, int &pos) co } } - // Empty address is "intermediate" input - if(input.isEmpty()) - { - state = QValidator::Intermediate; - } - return state; } + +BitcoinAddressCheckValidator::BitcoinAddressCheckValidator(QObject *parent) : + QValidator(parent) +{ +} + +QValidator::State BitcoinAddressCheckValidator::validate(QString &input, int &pos) const +{ + Q_UNUSED(pos); + // Validate the passed Bitcoin address + CBitcoinAddress addr(input.toStdString()); + if (addr.IsValid()) + return QValidator::Acceptable; + + return QValidator::Invalid; +} -- cgit v1.2.3