From ee0d69faf20ad8d7d25b431daf29f8500e8bba5d Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 2 Jan 2018 02:25:08 +0100 Subject: [PATCH] Ref T215, validator can be restricted to a string list --- src/blackgui/uppercasevalidator.cpp | 13 +++++++++++++ src/blackgui/uppercasevalidator.h | 14 +++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/blackgui/uppercasevalidator.cpp b/src/blackgui/uppercasevalidator.cpp index 7642fa32c..9f98eb2cc 100644 --- a/src/blackgui/uppercasevalidator.cpp +++ b/src/blackgui/uppercasevalidator.cpp @@ -34,6 +34,19 @@ namespace BlackGui if (m_optionalValue && input.isEmpty()) { return Acceptable; } if (input.length() > m_maxLength) { return Invalid; } if (input.length() < m_minLength) { return Intermediate; } + if (!m_restrictions.isEmpty()) + { + bool valid = false; + for (const QString &r : m_restrictions) + { + if (r.startsWith(input)) + { + valid = true; + break; + } + } + if (!valid) { return Invalid; } + } return Acceptable; } diff --git a/src/blackgui/uppercasevalidator.h b/src/blackgui/uppercasevalidator.h index 574a5999d..8cd011faf 100644 --- a/src/blackgui/uppercasevalidator.h +++ b/src/blackgui/uppercasevalidator.h @@ -13,12 +13,9 @@ #define BLACKGUI_UPPERCASEVALIDATOR_H #include "blackgui/blackguiexport.h" - +#include #include -class QObject; -class QString; - namespace BlackGui { //! Forces uppercase @@ -35,6 +32,9 @@ namespace BlackGui //! Constructor CUpperCaseValidator(bool optionalValue, int minLength, int maxLength, QObject *parent = nullptr); + //! Set restrictions + void setRestrictions(const QStringList &restrictions) { m_restrictions = restrictions; } + //! \copydoc QValidator::validate virtual State validate(QString &input, int &pos) const override; @@ -42,10 +42,10 @@ namespace BlackGui virtual void fixup(QString &input) const override; private: - bool m_optionalValue = false; + bool m_optionalValue = false; //!< allow empty int m_minLength = 0; - int m_maxLength = 32678; // standard length - + int m_maxLength = 32678; //!< standard length + QStringList m_restrictions; //!< list of allowed strings }; } #endif // guard