File indexing completed on 2024-05-26 05:38:48

0001 /*
0002     SPDX-FileCopyrightText: 2019 Kai Uwe Broulik <kde@privat.broulik.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QSortFilterProxyModel>
0010 
0011 #include "colors.h"
0012 
0013 class FilterProxyModel : public QSortFilterProxyModel
0014 {
0015     Q_OBJECT
0016 
0017     Q_PROPERTY(QString selectedScheme READ selectedScheme WRITE setSelectedScheme NOTIFY selectedSchemeChanged)
0018     Q_PROPERTY(int selectedSchemeIndex READ selectedSchemeIndex NOTIFY selectedSchemeIndexChanged)
0019 
0020     Q_PROPERTY(QString query READ query WRITE setQuery NOTIFY queryChanged)
0021     Q_PROPERTY(KCMColors::SchemeFilter filter READ filter WRITE setFilter NOTIFY filterChanged)
0022 
0023 public:
0024     FilterProxyModel(QObject *parent = nullptr);
0025     ~FilterProxyModel() override;
0026 
0027     QString selectedScheme() const;
0028     void setSelectedScheme(const QString &scheme);
0029 
0030     int selectedSchemeIndex() const;
0031 
0032     QString query() const;
0033     void setQuery(const QString &query);
0034 
0035     KCMColors::SchemeFilter filter() const;
0036     void setFilter(KCMColors::SchemeFilter filter);
0037 
0038     bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
0039 
0040 Q_SIGNALS:
0041     void queryChanged();
0042     void filterChanged();
0043 
0044     void selectedSchemeChanged();
0045     void selectedSchemeIndexChanged();
0046 
0047 private:
0048     void emitSelectedSchemeIndexChange();
0049 
0050     QString m_selectedScheme;
0051 
0052     QString m_query;
0053     KCMColors::SchemeFilter m_filter = KCMColors::AllSchemes;
0054 };