// SPDX-FileCopyrightText: 2022 Devin Lin // SPDX-License-Identifier: LGPL-2.0-or-later #pragma once #include "qqml.h" #include "quicksetting.h" #include #include #include /** * @short A list model for serving quick settings metadata. * * @author Devin Lin **/ class SavedQuickSettingsModel : public QAbstractListModel { Q_OBJECT QML_ELEMENT public: SavedQuickSettingsModel(QObject *parent = nullptr); enum { NameRole, /**< The name of the quick setting. */ IdRole, /**< The plugin id of the quick setting package. */ IconRole, /**< The icon of the quick setting. */ }; QVariant data(const QModelIndex &index, int role) const override; int rowCount(const QModelIndex &parent) const override; QHash roleNames() const override; Q_INVOKABLE void moveRow(int oldIndex, int newIndex); Q_INVOKABLE void insertRow(KPluginMetaData metaData, int index); Q_INVOKABLE KPluginMetaData takeRow(int index); Q_INVOKABLE void removeRow(int index); QList list() const; public Q_SLOTS: void updateData(QList data); Q_SIGNALS: void dataUpdated(QList data); private: QList m_data; };