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 };