Fluid
Loading...
Searching...
No Matches
inputregion.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2022 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
2//
3// SPDX-License-Identifier: MPL-2.0
4
5#pragma once
6
7#include <QQmlEngine>
8#include <QQmlListProperty>
9#include <QQmlParserStatus>
10#include <QWindow>
11
12class InputRegion;
13
14class InputArea : public QObject, public QQmlParserStatus
15{
16 Q_OBJECT
17 Q_PROPERTY(InputRegion *region READ region WRITE setRegion NOTIFY regionChanged)
18 Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged)
19 Q_PROPERTY(qreal x READ x WRITE setX NOTIFY xChanged)
20 Q_PROPERTY(qreal y READ y WRITE setY NOTIFY yChanged)
21 Q_PROPERTY(qreal width READ width WRITE setWidth NOTIFY widthChanged)
22 Q_PROPERTY(qreal height READ height WRITE setHeight NOTIFY heightChanged)
23 Q_INTERFACES(QQmlParserStatus)
24 QML_ELEMENT
25 QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND
26public:
27 InputArea(QObject *parent = nullptr);
28 ~InputArea();
29
30 InputRegion *region() const;
32
33 bool isEnabled() const;
34 void setEnabled(bool enabled);
35
36 qreal x() const;
37 void setX(qreal x);
38
39 qreal y() const;
40 void setY(qreal y);
41
42 qreal width() const;
43 void setWidth(qreal width);
44
45 qreal height() const;
46 void setHeight(qreal height);
47
48 QRectF rect() const;
49
50Q_SIGNALS:
53 void xChanged(qreal x);
54 void yChanged(qreal y);
55 void widthChanged(qreal width);
56 void heightChanged(qreal height);
57
58protected:
59 void classBegin() override {}
60 void componentComplete() override;
61
62private:
63 bool m_initialized = false;
64 InputRegion *m_region = nullptr;
65 bool m_enabled = true;
66 qreal m_x = 0, m_y = 0, m_width = 0, m_height = 0;
67};
68
69class InputRegion : public QObject, public QQmlParserStatus
70{
71 Q_OBJECT
72 Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged)
73 Q_PROPERTY(QWindow *window READ window WRITE setWindow NOTIFY windowChanged)
74 Q_PROPERTY(QQmlListProperty<InputArea> areas READ areas CONSTANT)
75 Q_INTERFACES(QQmlParserStatus)
76 QML_ELEMENT
77public:
78 explicit InputRegion(QObject *parent = nullptr);
79
80 bool isEnabled() const;
81 void setEnabled(bool enabled);
82
83 QWindow *window() const;
84 void setWindow(QWindow *window);
85
86 QQmlListProperty<InputArea> areas();
87
88 void registerArea(InputArea *area);
89 void unregisterArea(InputArea *area);
90
91Q_SIGNALS:
93 void windowChanged(QWindow *window);
94
95protected:
96 void classBegin() override {}
97 void componentComplete() override;
98
99private:
100 bool m_initialized = false;
101 bool m_enabled = true;
102 QWindow *m_window = nullptr;
103 QList<InputArea *> m_areas;
104
105 static qsizetype areasCount(QQmlListProperty<InputArea> *list);
106 static InputArea *areaAt(QQmlListProperty<InputArea> *list, qsizetype index);
107
108private Q_SLOTS:
109 void setInputRegion();
110};
111
Definition inputregion.h:15
void classBegin() override
Definition inputregion.h:59
void setEnabled(bool enabled)
Definition inputregion.cpp:51
void yChanged(qreal y)
qreal width
Definition inputregion.h:21
void setY(qreal y)
Definition inputregion.cpp:79
InputRegion * region
Definition inputregion.h:17
bool isEnabled() const
Definition inputregion.cpp:46
qreal height
Definition inputregion.h:22
void regionChanged(InputRegion *region)
void componentComplete() override
Definition inputregion.cpp:121
void heightChanged(qreal height)
bool enabled
Definition inputregion.h:18
QRectF rect() const
Definition inputregion.cpp:116
qreal x
Definition inputregion.h:19
void setX(qreal x)
Definition inputregion.cpp:65
qreal y
Definition inputregion.h:20
void setHeight(qreal height)
Definition inputregion.cpp:107
void setRegion(InputRegion *region)
Definition inputregion.cpp:32
void xChanged(qreal x)
void setWidth(qreal width)
Definition inputregion.cpp:93
void enabledChanged(bool enabled)
void widthChanged(qreal width)
Definition inputregion.h:70
void registerArea(InputArea *area)
Definition inputregion.cpp:186
void unregisterArea(InputArea *area)
Definition inputregion.cpp:198
QWindow * window
Definition inputregion.h:73
void classBegin() override
Definition inputregion.h:96
void enabledChanged(bool enabled)
void setEnabled(bool enabled)
Definition inputregion.cpp:147
void componentComplete() override
Definition inputregion.cpp:209
void setWindow(QWindow *window)
Definition inputregion.cpp:163
bool isEnabled() const
Definition inputregion.cpp:142
void windowChanged(QWindow *window)
QQmlListProperty< InputArea > areas
Definition inputregion.h:74
bool enabled
Definition inputregion.h:72