File indexing completed on 2024-05-05 16:58:40
0001 // SPDX-FileCopyrightText: 2022 James Graham <james.h.graham@protonmail.com> 0002 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0003 0004 #pragma once 0005 0006 #include <QSortFilterProxyModel> 0007 0008 /** 0009 * @class StateFilterModel 0010 * 0011 * This class creates a custom QSortFilterProxyModel for filtering a list of state events. 0012 * Event types can be filtered out by adding them to m_stateEventTypesFiltered. 0013 */ 0014 class StateFilterModel : public QSortFilterProxyModel 0015 { 0016 Q_OBJECT 0017 0018 public: 0019 /** 0020 * @brief Custom filter function checking if an event type has been filtered out. 0021 * 0022 * The filter rejects a row if the state event type has been added to m_stateEventTypesFiltered. 0023 * 0024 * @sa m_stateEventTypesFiltered 0025 */ 0026 bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; 0027 0028 /** 0029 * @brief Add an event type to m_stateEventTypesFiltered. 0030 * 0031 * @sa m_stateEventTypesFiltered 0032 */ 0033 Q_INVOKABLE void addStateEventTypeFiltered(const QString &stateEventType); 0034 0035 /** 0036 * @brief Remove an event type from m_stateEventTypesFiltered. 0037 * 0038 * @sa m_stateEventTypesFiltered 0039 */ 0040 Q_INVOKABLE void removeStateEventTypeFiltered(const QString &stateEventType); 0041 0042 private: 0043 QStringList m_stateEventTypesFiltered; 0044 };