diff options
| author | 2015-04-04 14:41:10 -0400 | |
|---|---|---|
| committer | 2015-04-04 14:41:10 -0400 | |
| commit | b5f93b05578293d1d233b4920a28a5c2fd826f94 (patch) | |
| tree | 82332679f647e9c76e331206786d07a58dcfa9b8 /SQLiteStudio3/guiSQLiteStudio/common/ipvalidator.cpp | |
| parent | af8a7a3e3dccf9c9ad257e3952173d180c8a7421 (diff) | |
| parent | a5b034d4a9c44f9bc1e83b01de82530f8fc63013 (diff) | |
Merge tag 'upstream/3.0.4'
Upstream version 3.0.4
# gpg: Signature made Sat 04 Apr 2015 02:41:09 PM EDT using RSA key ID EBE9BD91
# gpg: Good signature from "Unit 193 <unit193@gmail.com>"
# gpg: aka "Unit 193 <unit193@ninthfloor.org>"
# gpg: aka "Unit 193 <unit193@ubuntu.com>"
# gpg: aka "Unit 193 <unit193@ninthfloor.com>"
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/common/ipvalidator.cpp')
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/common/ipvalidator.cpp | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/ipvalidator.cpp b/SQLiteStudio3/guiSQLiteStudio/common/ipvalidator.cpp new file mode 100644 index 0000000..35c8b75 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/common/ipvalidator.cpp @@ -0,0 +1,95 @@ +#include "ipvalidator.h" +#include <QDebug> + +QString IpValidator::reStr = "^%1(\\d%2)%1\\.%1(\\d%2)%1\\.%1(\\d%2)%1\\.%1(\\d%2)%1$"; + +IpValidator::IpValidator(QObject* parent) : + QValidator(parent) +{ +} + +IpValidator::~IpValidator() +{ +} + +QValidator::State IpValidator::validate(QString& input, int&) const +{ + QString regexp = getPattern(acceptWhiteSpaces, false, whitespaceCharacter); + QRegularExpression re(regexp); + QRegularExpressionMatch match = re.match(input); + if (!match.hasMatch()) + return Invalid; + + QString part; + int value; + bool ok; + for (int i = 1; i <= 4; i++) + { + part = match.captured(i); + if (part.isEmpty()) + { + if (acceptEmptyParts) + continue; + else + return Invalid; + } + + value = part.toInt(&ok); + if (!ok) + return Invalid; + + if (value > 255 || value < 0) + return Invalid; + } + + return Acceptable; +} + +bool IpValidator::getAcceptWhiteSpaces() const +{ + return acceptWhiteSpaces; +} + +void IpValidator::setAcceptWhiteSpaces(bool value) +{ + acceptWhiteSpaces = value; +} +bool IpValidator::getAcceptEmptyParts() const +{ + return acceptEmptyParts; +} + +void IpValidator::setAcceptEmptyParts(bool value) +{ + acceptEmptyParts = value; +} +QChar IpValidator::getWhitespaceCharacter() const +{ + return whitespaceCharacter; +} + +void IpValidator::setWhitespaceCharacter(const QChar& value) +{ + whitespaceCharacter = value; +} + +bool IpValidator::check(const QString& input, bool acceptWhiteSpaces) +{ + QString regexp = getPattern(acceptWhiteSpaces, true, ' '); + QRegularExpression re(regexp); + return re.match(input).hasMatch(); +} + +QString IpValidator::getPattern(bool acceptWhiteSpaces, bool requireFull, QChar whitespaceCharacter) +{ + QString countChar = requireFull ? "+" : "*"; + if (acceptWhiteSpaces) + { + if (whitespaceCharacter == ' ') + return reStr.arg("\\s*", countChar); + else + return reStr.arg(whitespaceCharacter + QString("*"), countChar); + } + else + return reStr.arg("", countChar); +} |
