1 /* 2 SPDX-FileCopyrightText: 2019 Kai Uwe Broulik <kde@privat.broulik.de> 3 SPDX-FileCopyrightText: 2019 David Redondo <kde@david-redondo.de> 4 5 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 6 */ 7 8 #pragma once 9 10 #include <QSortFilterProxyModel> 11 12 #include "kcm.h" 13 14 class FilterProxyModel : public QSortFilterProxyModel 15 { 16 Q_OBJECT 17 18 public: 19 enum ThemeFilter { 20 AllThemes, 21 LightThemes, 22 DarkThemes, 23 ThemesFollowingColors, 24 }; 25 Q_ENUM(ThemeFilter) 26 27 Q_PROPERTY(QString selectedTheme READ selectedTheme WRITE setSelectedTheme NOTIFY selectedThemeChanged) 28 Q_PROPERTY(int selectedThemeIndex READ selectedThemeIndex NOTIFY selectedThemeIndexChanged) 29 Q_PROPERTY(QString query READ query WRITE setQuery NOTIFY queryChanged) 30 Q_PROPERTY(ThemeFilter filter READ filter WRITE setFilter NOTIFY filterChanged) 31 32 FilterProxyModel(QObject *parent = nullptr); 33 ~FilterProxyModel() override; 34 35 QString selectedTheme() const; 36 void setSelectedTheme(const QString &pluginName); 37 38 int selectedThemeIndex() const; 39 40 QString query() const; 41 void setQuery(const QString &query); 42 43 ThemeFilter filter() const; 44 void setFilter(ThemeFilter filter); 45 46 bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; 47 48 Q_SIGNALS: 49 void filterChanged(); 50 void queryChanged(); 51 52 void selectedThemeChanged(); 53 void selectedThemeIndexChanged(); 54 55 private: 56 QString m_selectedTheme; 57 QString m_query; 58 ThemeFilter m_filter = AllThemes; 59 }; 60