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