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

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 class QQuickItem;
0014 
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 
0022 public:
0023     explicit FaceLoader(QObject *parent = nullptr);
0024     ~FaceLoader() override;
0025 
0026     PageDataObject *dataObject() const;
0027     void setDataObject(PageDataObject *newDataObject);
0028     Q_SIGNAL void dataObjectChanged();
0029 
0030     KSysGuard::SensorFaceController *controller() const;
0031     Q_SIGNAL void controllerChanged();
0032 
0033     void reset();
0034 
0035 private:
0036     QPointer<PageDataObject> m_dataObject = nullptr;
0037     KSysGuard::SensorFaceController *m_faceController = nullptr;
0038     KSysGuard::SensorFaceController *m_oldController = nullptr;
0039 
0040     static QHash<QString, KSysGuard::SensorFaceController *> s_faceCache;
0041 };