1 /* 2 SPDX-FileCopyrightText: 2019 Kai Uwe Broulik <kde@privat.broulik.de> 3 4 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 5 */ 6 7 #pragma once 8 9 #include <QSortFilterProxyModel> 10 11 #include "colors.h" 12 13 class FilterProxyModel : public QSortFilterProxyModel 14 { 15 Q_OBJECT 16 17 Q_PROPERTY(QString selectedScheme READ selectedScheme WRITE setSelectedScheme NOTIFY selectedSchemeChanged) 18 Q_PROPERTY(int selectedSchemeIndex READ selectedSchemeIndex NOTIFY selectedSchemeIndexChanged) 19 20 Q_PROPERTY(QString query READ query WRITE setQuery NOTIFY queryChanged) 21 Q_PROPERTY(KCMColors::SchemeFilter filter READ filter WRITE setFilter NOTIFY filterChanged) 22 23 public: 24 FilterProxyModel(QObject *parent = nullptr); 25 ~FilterProxyModel() override; 26 27 QString selectedScheme() const; 28 void setSelectedScheme(const QString &scheme); 29 30 int selectedSchemeIndex() const; 31 32 QString query() const; 33 void setQuery(const QString &query); 34 35 KCMColors::SchemeFilter filter() const; 36 void setFilter(KCMColors::SchemeFilter filter); 37 38 bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; 39 40 Q_SIGNALS: 41 void queryChanged(); 42 void filterChanged(); 43 44 void selectedSchemeChanged(); 45 void selectedSchemeIndexChanged(); 46 47 private: 48 void emitSelectedSchemeIndexChange(); 49 50 QString m_selectedScheme; 51 52 QString m_query; 53 KCMColors::SchemeFilter m_filter = KCMColors::AllSchemes; 54 }; 55