File indexing completed on 2024-05-12 17:07:45
0001 // SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org> 0002 // SPDX-License-Identifier: LGPL-2.0-or-later 0003 0004 #pragma once 0005 0006 #include "mobileshellsettings.h" 0007 #include "qqml.h" 0008 #include "quicksetting.h" 0009 0010 #include <KPluginMetaData> 0011 0012 #include <QAbstractListModel> 0013 #include <QQmlListProperty> 0014 0015 /** 0016 * @short A list model for serving quick settings metadata. 0017 * 0018 * @author Devin Lin <devin@kde.org> 0019 **/ 0020 class SavedQuickSettingsModel : public QAbstractListModel 0021 { 0022 Q_OBJECT 0023 0024 public: 0025 SavedQuickSettingsModel(QObject *parent = nullptr); 0026 0027 enum { 0028 NameRole, /**< The name of the quick setting. */ 0029 IdRole, /**< The plugin id of the quick setting package. */ 0030 IconRole, /**< The icon of the quick setting. */ 0031 }; 0032 0033 QVariant data(const QModelIndex &index, int role) const override; 0034 int rowCount(const QModelIndex &parent) const override; 0035 QHash<int, QByteArray> roleNames() const override; 0036 0037 Q_INVOKABLE void moveRow(int oldIndex, int newIndex); 0038 Q_INVOKABLE void insertRow(KPluginMetaData *metaData, int index); 0039 Q_INVOKABLE void removeRow(int index); 0040 0041 QList<KPluginMetaData *> list() const; 0042 0043 public Q_SLOTS: 0044 void updateData(QList<KPluginMetaData *> data); 0045 0046 Q_SIGNALS: 0047 void dataUpdated(QList<KPluginMetaData *> data); 0048 0049 private: 0050 QList<KPluginMetaData *> m_data; 0051 };