aboutsummaryrefslogtreecommitdiff
path: root/src/qt/bitcoinaddressvalidator.cpp
diff options
context:
space:
mode:
authorPhilip Kaufmann <phil.kaufmann@t-online.de>2013-11-20 15:56:51 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2014-01-29 14:15:55 +0100
commitc78bd937017212c89c1c7aab07399cec5b6b3bdd (patch)
tree92129bb63c2b9bbb724c3a2b4ad643710484e3ea /src/qt/bitcoinaddressvalidator.cpp
parentaab8fc58c6e6dc6e0a104170bd2aa10dc1af5dea (diff)
downloadbitcoin-c78bd937017212c89c1c7aab07399cec5b6b3bdd.tar.xz
[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
Diffstat (limited to 'src/qt/bitcoinaddressvalidator.cpp')
-rw-r--r--src/qt/bitcoinaddressvalidator.cpp58
1 files changed, 37 insertions, 21 deletions
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<input.size();)
+ for (int idx = 0; idx < input.size();)
{
bool removeChar = false;
QChar ch = input.at(idx);
@@ -42,11 +46,13 @@ QValidator::State BitcoinAddressValidator::validate(QString &input, int &pos) co
default:
break;
}
+
// Remove whitespace
- if(ch.isSpace())
+ if (ch.isSpace())
removeChar = true;
+
// To next character
- if(removeChar)
+ if (removeChar)
input.remove(idx, 1);
else
++idx;
@@ -54,14 +60,14 @@ QValidator::State BitcoinAddressValidator::validate(QString &input, int &pos) co
// Validation
QValidator::State state = QValidator::Acceptable;
- for(int idx=0; idx<input.size(); ++idx)
+ for (int idx = 0; idx < input.size(); ++idx)
{
int ch = input.at(idx).unicode();
- if(((ch >= '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;
+}