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