KWin
Loading...
Searching...
No Matches
effectsfilterproxymodel.cpp
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2019 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
8
9#include "effectsmodel.h"
10
11namespace KWin
12{
13
15 : QSortFilterProxyModel(parent)
16{
17}
18
22
24{
25 return m_query;
26}
27
28void EffectsFilterProxyModel::setQuery(const QString &query)
29{
30 if (m_query != query) {
31 m_query = query;
32 Q_EMIT queryChanged();
33 invalidateFilter();
34 }
35}
36
38{
39 return m_excludeInternal;
40}
41
43{
44 if (m_excludeInternal != exclude) {
45 m_excludeInternal = exclude;
47 invalidateFilter();
48 }
49}
50
52{
53 return m_excludeUnsupported;
54}
55
57{
58 if (m_excludeUnsupported != exclude) {
59 m_excludeUnsupported = exclude;
61 invalidateFilter();
62 }
63}
64
65bool EffectsFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
66{
67 const QModelIndex idx = sourceModel()->index(sourceRow, 0, sourceParent);
68
69 if (!m_query.isEmpty()) {
70 const bool matches = idx.data(EffectsModel::NameRole).toString().contains(m_query, Qt::CaseInsensitive) || idx.data(EffectsModel::DescriptionRole).toString().contains(m_query, Qt::CaseInsensitive) || idx.data(EffectsModel::CategoryRole).toString().contains(m_query, Qt::CaseInsensitive);
71 if (!matches) {
72 return false;
73 }
74 }
75
76 if (m_excludeInternal) {
77 if (idx.data(EffectsModel::InternalRole).toBool()) {
78 return false;
79 }
80 }
81
82 if (m_excludeUnsupported) {
83 if (!idx.data(EffectsModel::SupportedRole).toBool()) {
84 return false;
85 }
86 }
87
88 return true;
89}
90
91} // namespace KWin
92
93#include "moc_effectsfilterproxymodel.cpp"
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override
void setQuery(const QString &query)
EffectsFilterProxyModel(QObject *parent=nullptr)