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