File indexing completed on 2024-06-09 05:25:45
0001 /* 0002 SPDX-FileCopyrightText: 2019 Vlad Zahorodnii <vlad.zahorodnii@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QSortFilterProxyModel> 0010 0011 namespace KWin 0012 { 0013 0014 class EffectsFilterProxyModel : public QSortFilterProxyModel 0015 { 0016 Q_OBJECT 0017 Q_PROPERTY(QAbstractItemModel *sourceModel READ sourceModel WRITE setSourceModel) 0018 Q_PROPERTY(QString query READ query WRITE setQuery NOTIFY queryChanged) 0019 Q_PROPERTY(bool excludeInternal READ excludeInternal WRITE setExcludeInternal NOTIFY excludeInternalChanged) 0020 Q_PROPERTY(bool excludeUnsupported READ excludeUnsupported WRITE setExcludeUnsupported NOTIFY excludeUnsupportedChanged) 0021 0022 public: 0023 explicit EffectsFilterProxyModel(QObject *parent = nullptr); 0024 ~EffectsFilterProxyModel() override; 0025 0026 QString query() const; 0027 void setQuery(const QString &query); 0028 0029 bool excludeInternal() const; 0030 void setExcludeInternal(bool exclude); 0031 0032 bool excludeUnsupported() const; 0033 void setExcludeUnsupported(bool exclude); 0034 0035 Q_SIGNALS: 0036 void queryChanged(); 0037 void excludeInternalChanged(); 0038 void excludeUnsupportedChanged(); 0039 0040 protected: 0041 bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; 0042 0043 private: 0044 QString m_query; 0045 bool m_excludeInternal = true; 0046 bool m_excludeUnsupported = true; 0047 0048 Q_DISABLE_COPY(EffectsFilterProxyModel) 0049 }; 0050 0051 } // namespace KWin