File indexing completed on 2024-05-12 17:08:28

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 
0013 class PageDataObject;
0014 
0015 class PageDataModel : public QAbstractListModel
0016 {
0017     Q_OBJECT
0018     //     Q_INTERFACES(QQmlParserStatus)
0019     Q_PROPERTY(PageDataObject *data READ dataObject WRITE setDataObject NOTIFY dataObjectChanged)
0020 
0021 public:
0022     enum Roles {
0023         DataRole = Qt::UserRole + 1,
0024     };
0025     Q_ENUM(Roles)
0026 
0027     explicit PageDataModel(QObject *parent = nullptr);
0028 
0029     PageDataObject *dataObject() const;
0030     void setDataObject(PageDataObject *newData);
0031     Q_SIGNAL void dataObjectChanged();
0032 
0033     QHash<int, QByteArray> roleNames() const override;
0034 
0035     int rowCount(const QModelIndex &parent) const override;
0036     QVariant data(const QModelIndex &index, int role) const override;
0037 
0038     Q_INVOKABLE int countObjects(const QVariantMap &properties);
0039 
0040     //     void classBegin() override;
0041     //     void componentComplete() override;
0042 
0043 private:
0044     PageDataObject *m_data = nullptr;
0045 };