QmlMaterial 0.1.0
Loading...
Searching...
No Matches
text_control_background.hpp
1#pragma once
2
3#include <QObject>
4#include <QList>
5#include <QPointer>
6#include <array>
7#include <optional>
8#include "qml_material/export.hpp"
9
10QT_BEGIN_NAMESPACE
11class QQuickItem;
12QT_END_NAMESPACE
13
14namespace qml_material
15{
16
17class QML_MATERIAL_API TextControlBackground : public QObject {
18 Q_OBJECT
19public:
20 explicit TextControlBackground(QQuickItem* owner);
21 ~TextControlBackground() override;
22 QQuickItem* item() const;
23 void setItem(QQuickItem*);
24 qreal implicitWidth() const;
25 qreal implicitHeight() const;
26 qreal inset(Qt::Edge) const;
27 void setInset(Qt::Edge, qreal);
28 void resetInset(Qt::Edge);
29 void complete();
30 void layout();
31
32 Q_SIGNAL void itemChanged();
33 Q_SIGNAL void implicitWidthChanged();
34 Q_SIGNAL void implicitHeightChanged();
35 Q_SIGNAL void insetChanged(Qt::Edge);
36
37private:
38 std::optional<qreal>& insetValue(Qt::Edge);
39 const std::optional<qreal>& insetValue(Qt::Edge) const;
40 void sizeChanged();
41 QQuickItem* m_owner;
42 QPointer<QQuickItem> m_item;
43 QList<QMetaObject::Connection> m_connections;
44 std::array<std::optional<qreal>, 4> m_insets;
45 bool m_width_explicit = false;
46 bool m_height_explicit = false;
47 bool m_laying_out = false;
48 bool m_complete = false;
49};
50
51} // namespace qml_material