Warning, file /plasma/plasma-workspace/kcms/desktoptheme/filterproxymodel.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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 };