File indexing completed on 2024-05-05 05:28:25

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