1 /*
2   SPDX-FileCopyrightText: 2021 Intevation GmbH
3   SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de>
4 
5   SPDX-License-Identifier: GPL-2.0-or-later
6 */
7 
8 #pragma once
9 
10 #include <Qt>
11 
12 #include <vector>
13 
14 class QAbstractItemModel;
15 class QModelIndex;
16 class QRegularExpression;
17 class QString;
18 
19 namespace MailCommon
20 {
21 class HierarchicalFolderMatcher
22 {
23 public:
24     HierarchicalFolderMatcher();
25 
26     Q_REQUIRED_RESULT bool isNull() const;
27 
28     void setFilter(const QString &filter, Qt::CaseSensitivity caseSensitivity);
29 
30     Q_REQUIRED_RESULT bool matches(const QAbstractItemModel *model, const QModelIndex &start, int role = Qt::DisplayRole);
31 
32     Q_REQUIRED_RESULT QModelIndex findFirstMatch(const QAbstractItemModel *model, const QModelIndex &start, int role = Qt::DisplayRole);
33 
34 private:
35     std::vector<QRegularExpression> filterRegExps;
36 };
37 }
38