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