File indexing completed on 2024-05-12 05:36:50

0001 /*
0002  * SPDX-FileCopyrightText: 2020 Arjen Hiemstra <ahiemstra@heimr.nl>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 
0007 #pragma once
0008 
0009 #include <QAbstractListModel>
0010 #include <QQmlParserStatus>
0011 #include <memory>
0012 #include <qqmlregistration.h>
0013 
0014 class PageDataObject;
0015 
0016 class PageDataModel : public QAbstractListModel
0017 {
0018     Q_OBJECT
0019     //     Q_INTERFACES(QQmlParserStatus)
0020     Q_PROPERTY(PageDataObject *data READ dataObject WRITE setDataObject NOTIFY dataObjectChanged)
0021     QML_ELEMENT
0022 
0023 public:
0024     enum Roles {
0025         DataRole = Qt::UserRole + 1,
0026     };
0027     Q_ENUM(Roles)
0028 
0029     explicit PageDataModel(QObject *parent = nullptr);
0030 
0031     PageDataObject *dataObject() const;
0032     void setDataObject(PageDataObject *newData);
0033     Q_SIGNAL void dataObjectChanged();
0034 
0035     QHash<int, QByteArray> roleNames() const override;
0036 
0037     int rowCount(const QModelIndex &parent) const override;
0038     QVariant data(const QModelIndex &index, int role) const override;
0039 
0040     Q_INVOKABLE int countObjects(const QVariantMap &properties);
0041 
0042     //     void classBegin() override;
0043     //     void componentComplete() override;
0044 
0045 private:
0046     PageDataObject *m_data = nullptr;
0047 };