1 /* -*- mode: c++; c-basic-offset:4 -*- 2 utils/multivalidator.h 3 4 This file is part of Kleopatra, the KDE keymanager 5 SPDX-FileCopyrightText: 2008 Klarälvdalens Datakonsult AB 6 7 SPDX-License-Identifier: GPL-2.0-or-later 8 */ 9 10 #pragma once 11 12 #include <QValidator> 13 #include <QList> 14 15 namespace Kleo 16 { 17 18 class MultiValidator : public QValidator 19 { 20 Q_OBJECT 21 public: 22 explicit MultiValidator(QObject *parent = nullptr) QValidator(parent)23 : QValidator(parent) {} 24 explicit MultiValidator(QValidator *validator1, QValidator *validator2 = nullptr, QObject *parent = nullptr) QValidator(parent)25 : QValidator(parent) 26 { 27 addValidator(validator1); 28 addValidator(validator2); 29 } 30 explicit MultiValidator(const QList<QValidator *> &validators, QObject *parent = nullptr) QValidator(parent)31 : QValidator(parent) 32 { 33 addValidators(validators); 34 } 35 ~MultiValidator() override; 36 37 void addValidator(QValidator *validator); 38 void addValidators(const QList<QValidator *> &validators); 39 40 void removeValidator(QValidator *validator); 41 void removeValidators(const QList<QValidator *> &validators); 42 43 void fixup(QString &str) const override; 44 State validate(QString &str, int &pos) const override; 45 46 private Q_SLOTS: 47 void _kdmv_slotDestroyed(QObject *); 48 49 private: 50 QList<QValidator *> m_validators; 51 }; 52 53 } 54 55