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