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

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 "PageDataObject.h"
0010 #include <QObject>
0011 #include <QPointer>
0012 #include <faces/SensorFaceController.h>
0013 #include <qqmlregistration.h>
0014 class QQuickItem;
0015 
0016 class FaceLoader : public QObject
0017 {
0018     Q_OBJECT
0019     Q_PROPERTY(PageDataObject *dataObject READ dataObject WRITE setDataObject NOTIFY dataObjectChanged)
0020     Q_PROPERTY(KSysGuard::SensorFaceController *controller READ controller NOTIFY controllerChanged)
0021     QML_ELEMENT
0022 
0023 public:
0024     explicit FaceLoader(QObject *parent = nullptr);
0025     ~FaceLoader() override;
0026 
0027     PageDataObject *dataObject() const;
0028     void setDataObject(PageDataObject *newDataObject);
0029     Q_SIGNAL void dataObjectChanged();
0030 
0031     KSysGuard::SensorFaceController *controller() const;
0032     Q_SIGNAL void controllerChanged();
0033 
0034     void reset();
0035 
0036 private:
0037     QPointer<PageDataObject> m_dataObject = nullptr;
0038     KSysGuard::SensorFaceController *m_faceController = nullptr;
0039     KSysGuard::SensorFaceController *m_oldController = nullptr;
0040 
0041     static QHash<QString, KSysGuard::SensorFaceController *> s_faceCache;
0042 };