-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathqmlmosaicengine.h
48 lines (37 loc) · 1.51 KB
/
qmlmosaicengine.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#pragma once
#include "mosaicengine.h"
#include "qmlmosaicstatus.h"
#include <QObject>
#include <QQmlListProperty>
//
// Component para exponer MosaicEngine a QML.
//
class QmlMosaicEngine : public QObject
{
Q_OBJECT
// Propiedad 'mosaic' para exponer el estado del mosáico de MosaicEngine.
// Se usa una lista QQmlListProperty de objetos QmlMosaicStatus. Cada instancia de
// QmlMosaicStatus expone el estado de uno de los mosaicos en MosaicEngineStatus.
Q_PROPERTY(QQmlListProperty<QmlMosaicStatus> mosaic READ mosaic NOTIFY mosaicChanged)
public:
explicit QmlMosaicEngine(QObject *parent = nullptr);
// Getter de la propiedad mosaic.
inline QQmlListProperty<QmlMosaicStatus> mosaic() {
// Construir el objeto QQmlListProperty<QmlMosaicStatus>
return {this, nullptr, countMosaic, atMosaic};
}
signals:
// Señal ha emitir cuando el estado de un mosáico cambia.
// Así QML sabe que ha habido un cambio en la propiedad 'mosaic'.
void mosaicChanged();
public slots:
// Exponer el método MosaicEngine::occupyMosaic() para ocupar un mosaico.
bool occupyMosaic(int row, int column);
private:
// Objeto MosaicEngine expuesto por cada instancia de este component.
MosaicEngine mosaicEngine_;
// Funciones para QQmlListProperty<QmlMosaicStatus>
static QmlMosaicStatus* atMosaic(QQmlListProperty<QmlMosaicStatus>* property,
int index);
static int countMosaic(QQmlListProperty<QmlMosaicStatus>* property);
};