diff --git a/src/utils/validation.cpp b/src/utils/validation.cpp index 656147814..d0f20dea2 100644 --- a/src/utils/validation.cpp +++ b/src/utils/validation.cpp @@ -1,130 +1,118 @@ /* -*- mode: c++; c-basic-offset:4 -*- utils/validation.cpp This file is part of Kleopatra, the KDE keymanager SPDX-FileCopyrightText: 2008 Klarälvdalens Datakonsult AB SPDX-License-Identifier: GPL-2.0-or-later */ #include #include "validation.h" #include #include #include "kleopatra_debug.h" #include using namespace Kleo; namespace { template class TrimmingValidator : public Validator { public: using Validator::Validator; QValidator::State validate(QString &str, int &pos) const override { auto trimmed = str.trimmed(); auto posCopy = pos; return Validator::validate(trimmed, posCopy); } }; template class EmptyIsAcceptableValidator : public Validator { public: using Validator::Validator; QValidator::State validate(QString &str, int &pos) const override { if (str.isEmpty()) { return QValidator::Acceptable; } return Validator::validate(str, pos); } }; class EMailValidator : public QValidator { public: explicit EMailValidator(QObject *parent = nullptr) : QValidator(parent) {} State validate(QString &str, int &pos) const override { Q_UNUSED(pos) if (KEmailAddress::isValidSimpleAddress(str)) { return Acceptable; } return Intermediate; } }; QValidator *regularExpressionValidator(Validation::Flags flags, const QString ®exp, QObject *parent) { if (flags & Validation::Required) { return new TrimmingValidator{QRegularExpression{regexp}, parent}; } else { return new TrimmingValidator>{QRegularExpression{regexp}, parent}; } } } QValidator *Validation::email(Flags flags, QObject *parent) { if (flags & Required) { return new TrimmingValidator{parent}; } else { return new TrimmingValidator>{parent}; } } QValidator *Validation::email(const QString &addRX, Flags flags, QObject *parent) { return new MultiValidator{email(flags), regularExpressionValidator(flags, addRX, nullptr), parent}; } QValidator *Validation::pgpName(Flags flags, QObject *parent) { // this regular expression is modeled after gnupg/g10/keygen.c:ask_user_id: static const QString name_rx{QLatin1String{"[^0-9<>][^<>@]{4,}"}}; return regularExpressionValidator(flags, name_rx, parent); } QValidator *Validation::pgpName(const QString &addRX, Flags flags, QObject *parent) { return new MultiValidator{pgpName(flags), regularExpressionValidator(flags, addRX, nullptr), parent}; } QValidator *Validation::simpleName(Flags flags, QObject *parent) { static const QString name_rx{QLatin1String{"[^<>@]*"}}; return regularExpressionValidator(flags, name_rx, parent); } QValidator *Validation::simpleName(const QString &additionalRegExp, Flags flags, QObject *parent) { return new MultiValidator{simpleName(flags), regularExpressionValidator(flags, additionalRegExp, nullptr), parent}; } - -QValidator *Validation::pgpComment(Flags flags, QObject *parent) -{ - // this regular expression is modeled after gnupg/g10/keygen.c:ask_user_id: - static const QString comment_rx{QLatin1String{"[^()]*"}}; - return regularExpressionValidator(flags, comment_rx, parent); -} - -QValidator *Validation::pgpComment(const QString &addRX, Flags flags, QObject *parent) -{ - return new MultiValidator{pgpComment(flags), regularExpressionValidator(flags, addRX, nullptr), parent}; -} diff --git a/src/utils/validation.h b/src/utils/validation.h index 6d9f33d1e..d7c670e4d 100644 --- a/src/utils/validation.h +++ b/src/utils/validation.h @@ -1,55 +1,53 @@ /* -*- mode: c++; c-basic-offset:4 -*- utils/validation.h This file is part of Kleopatra, the KDE keymanager SPDX-FileCopyrightText: 2008 Klarälvdalens Datakonsult AB SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once class QObject; class QString; class QValidator; namespace Kleo { namespace Validation { enum Flags { Optional, Required }; QValidator *email(Flags flags = Required, QObject *parent = nullptr); /** * Creates a validator for the name part of the user ID of an OpenPGP key with * restrictions that are necessary for usage with the edit-key interface. */ QValidator *pgpName(Flags flags = Required, QObject *parent = nullptr); /** * Creates a validator for the name part of the user ID of an OpenPGP key with * less restrictions than \ref pgpName. */ QValidator *simpleName(Flags flags = Required, QObject *parent = nullptr); -QValidator *pgpComment(Flags flags = Required, QObject *parent = nullptr); QValidator *email(const QString &additionalRegExp, Flags flags = Required, QObject *parent = nullptr); /** * Creates a validator for the name part of the user ID of an OpenPGP key with * restrictions that are necessary for usage with the edit-key interface, and * with additional restrictions imposed by \p additionalRegExp. */ QValidator *pgpName(const QString &additionalRegExp, Flags flags = Required, QObject *parent = nullptr); /** * Creates a validator for the name part of the user ID of an OpenPGP key with * less restrictions than \ref pgpName, but with additional restrictions imposed * by \p additionalRegExp. */ QValidator *simpleName(const QString &additionalRegExp, Flags flags = Required, QObject *parent = nullptr); -QValidator *pgpComment(const QString &additionalRegExp, Flags flags = Required, QObject *parent = nullptr); } }