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

0001 /*
0002  * SPDX-FileCopyrightText: 2020 David Redondo <kde@david-redondo.de>
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 <qqmlregistration.h>
0011 
0012 class QQuickItem;
0013 
0014 class FaceLoader;
0015 class PageDataObject;
0016 
0017 class FacesModel : public QAbstractListModel
0018 {
0019     Q_OBJECT
0020     Q_PROPERTY(PageDataObject *pageData READ pageData WRITE setPageData NOTIFY pageDataChanged)
0021     QML_ELEMENT
0022 
0023     enum Roles {
0024         IdRole = Qt::UserRole,
0025     };
0026 
0027 public:
0028     explicit FacesModel(QObject *parent = nullptr);
0029 
0030     Q_INVOKABLE QQuickItem *faceAtIndex(int row) const;
0031 
0032     PageDataObject *pageData() const;
0033     void setPageData(PageDataObject *pageData);
0034 
0035     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0036     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
0037     QHash<int, QByteArray> roleNames() const override;
0038 
0039 Q_SIGNALS:
0040     void pageDataChanged();
0041 
0042 private:
0043     void findFaceLoaders(PageDataObject *pageData);
0044 
0045     PageDataObject *m_pageData = nullptr;
0046     QList<FaceLoader *> m_faceLoaders;
0047 };