File indexing completed on 2024-05-05 17:32:16
0001 /* 0002 0003 SPDX-FileCopyrightText: 2019 Nicolas Fella <nicolas.fella@gmx.de> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include <QAbstractListModel> 0011 #include <QVector> 0012 0013 #include <KPluginMetaData> 0014 #include <KQuickConfigModule> 0015 0016 struct Data { 0017 KPluginMetaData plugin; 0018 QPointer<KQuickConfigModule> kcm; 0019 bool operator<(const Data &other) const 0020 { 0021 return plugin.name() < other.plugin.name(); 0022 } 0023 }; 0024 0025 class ModulesModel : public QAbstractListModel 0026 { 0027 Q_OBJECT 0028 0029 public: 0030 enum ModelRoles { 0031 NameRole = Qt::DisplayRole, 0032 IconNameRole = Qt::DecorationRole, 0033 DescriptionRole = Qt::UserRole + 1, 0034 IdRole = Qt::UserRole + 2, 0035 KeywordsRole = Qt::UserRole + 3, 0036 KcmRole, 0037 }; 0038 0039 public: 0040 ModulesModel(QObject *parent = nullptr); 0041 0042 QVariant data(const QModelIndex &index, int role) const override; 0043 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0044 0045 QHash<int, QByteArray> roleNames() const override; 0046 0047 private: 0048 QVector<Data> m_plugins; 0049 };