File indexing completed on 2024-05-19 05:38:04
0001 /* 0002 SPDX-FileCopyrightText: 2019 Kai Uwe Broulik <kde@privat.broulik.de> 0003 SPDX-FileCopyrightText: 2019 David Redondo <kde@david-redondo.de> 0004 0005 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0006 */ 0007 0008 #pragma once 0009 0010 #include <QSortFilterProxyModel> 0011 0012 #include "kcm.h" 0013 0014 class FilterProxyModel : public QSortFilterProxyModel 0015 { 0016 Q_OBJECT 0017 0018 public: 0019 enum ThemeFilter { 0020 AllThemes, 0021 LightThemes, 0022 DarkThemes, 0023 ThemesFollowingColors, 0024 }; 0025 Q_ENUM(ThemeFilter) 0026 0027 Q_PROPERTY(QString selectedTheme READ selectedTheme WRITE setSelectedTheme NOTIFY selectedThemeChanged) 0028 Q_PROPERTY(int selectedThemeIndex READ selectedThemeIndex NOTIFY selectedThemeIndexChanged) 0029 Q_PROPERTY(QString query READ query WRITE setQuery NOTIFY queryChanged) 0030 Q_PROPERTY(ThemeFilter filter READ filter WRITE setFilter NOTIFY filterChanged) 0031 0032 FilterProxyModel(QObject *parent = nullptr); 0033 ~FilterProxyModel() override; 0034 0035 QString selectedTheme() const; 0036 void setSelectedTheme(const QString &pluginName); 0037 0038 int selectedThemeIndex() const; 0039 0040 QString query() const; 0041 void setQuery(const QString &query); 0042 0043 ThemeFilter filter() const; 0044 void setFilter(ThemeFilter filter); 0045 0046 bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; 0047 0048 Q_SIGNALS: 0049 void filterChanged(); 0050 void queryChanged(); 0051 0052 void selectedThemeChanged(); 0053 void selectedThemeIndexChanged(); 0054 0055 private: 0056 QString m_selectedTheme; 0057 QString m_query; 0058 ThemeFilter m_filter = AllThemes; 0059 };