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

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