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