1/*
2 SPDX-FileCopyrightText: 2021 Alexander Lohnau <alexander.lohnau@gmx.de>
3 SPDX-License-Identifier: LGPL-2.0-or-later
4*/
5
6#ifndef KPLUGINPROXYMODEL_H
7#define KPLUGINPROXYMODEL_H
8
9#include "kcmutilscore_export.h"
10#include "kpluginmodel.h"
11
12#include <KCategorizedSortFilterProxyModel>
13
14class Q_DECL_HIDDEN KPluginProxyModel : public KCategorizedSortFilterProxyModel
15{
16 Q_OBJECT
17 Q_PROPERTY(QString query READ query WRITE setQuery NOTIFY queryChanged)
18 Q_PROPERTY(QAbstractListModel *model WRITE setModel)
19public:
20 explicit KPluginProxyModel(QObject *parent = nullptr);
21 ~KPluginProxyModel() override;
22
23 QString query() const;
24 void setQuery(const QString &query);
25 void setModel(QAbstractListModel *model)
26 {
27 setSourceModel(model);
28 m_model = qobject_cast<KPluginModel *>(object: model);
29 Q_ASSERT(m_model);
30 }
31
32Q_SIGNALS:
33 void queryChanged();
34
35protected:
36 bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
37 bool subSortLessThan(const QModelIndex &left, const QModelIndex &right) const override;
38 int compareCategories(const QModelIndex &left, const QModelIndex &right) const override;
39
40private:
41 QString m_query;
42 KPluginModel *m_model;
43};
44
45#endif
46

source code of kcmutils/src/core/kpluginproxymodel.h