3#include <QtQml/QQmlEngine>
4#include <QtQuick/QQuickItem>
5#include "qml_material/style/theme.hpp"
14class State :
public QObject,
public QQmlParserStatus {
16 Q_INTERFACES(QQmlParserStatus)
17 QML_NAMED_ELEMENT(MStateImpl)
18 Q_PROPERTY(QQmlListProperty<QObject> datas READ datas FINAL)
19 Q_CLASSINFO(
"DefaultProperty",
"datas")
21 Q_PROPERTY(QObject* target READ target WRITE set_target NOTIFY targetChanged FINAL)
22 Q_PROPERTY(
bool enabled READ enabled WRITE set_enabled NOTIFY enabledChanged FINAL)
23 Q_PROPERTY(qml_material::Theme* ctx READ ctx WRITE set_ctx NOTIFY ctxChanged FINAL)
24 Q_PROPERTY(qint32 elevation READ elevation WRITE set_elevation NOTIFY elevationChanged FINAL)
26 Q_PROPERTY(QColor textColor READ text_color WRITE set_text_color NOTIFY textColorChanged FINAL)
27 Q_PROPERTY(QColor backgroundColor READ background_color WRITE set_background_color NOTIFY
28 backgroundColorChanged FINAL)
29 Q_PROPERTY(QColor outlineColor READ outline_color WRITE set_outline_color NOTIFY
30 outlineColorChanged FINAL)
31 Q_PROPERTY(QColor supportTextColor READ support_text_color WRITE set_support_text_color NOTIFY
32 supportTextColorChanged FINAL)
33 Q_PROPERTY(QColor stateLayerColor READ state_layer_color WRITE set_state_layer_color NOTIFY
34 stateLayerColorChanged FINAL)
36 Q_PROPERTY(
double stateLayerOpacity READ state_layer_opacity WRITE set_state_layer_opacity
37 NOTIFY stateLayerOpacityChanged FINAL)
38 Q_PROPERTY(
double contentOpacity READ content_opacity WRITE set_content_opacity NOTIFY
39 contentOpacityChanged FINAL)
40 Q_PROPERTY(
double backgroundOpacity READ background_opacity WRITE set_background_opacity NOTIFY
41 backgroundOpacityChanged FINAL)
43 Q_PROPERTY(QString state READ state WRITE set_state NOTIFY stateChanged FINAL)
44 Q_PROPERTY(QQmlListProperty<QQuickState> states READ states DESIGNABLE false)
45 Q_PROPERTY(QQmlListProperty<QQuickTransition> transitions READ transitions DESIGNABLE false)
48 State(QQuickItem* parent =
nullptr);
51 void classBegin() override;
52 void componentComplete() override;
53 auto ctx() const -> Theme*;
56 auto state() const -> QString;
57 auto enabled() const noexcept ->
bool;
58 auto target() const noexcept -> QObject*;
59 auto elevation() const noexcept -> qint32;
60 auto text_color() const noexcept -> QColor;
61 auto outline_color() const noexcept -> QColor;
62 auto background_color() const noexcept -> QColor;
63 auto support_text_color() const noexcept -> QColor;
64 auto state_layer_color() const noexcept -> QColor;
65 auto state_layer_opacity() const noexcept ->
double;
66 auto content_opacity() const noexcept ->
double;
67 auto background_opacity() const noexcept ->
double;
69 void set_state(const QString&);
70 void set_enabled(
bool);
71 void set_target(QObject*);
72 void set_elevation(qint32);
73 void set_text_color(QColor);
74 void set_outline_color(QColor);
75 void set_background_color(QColor);
76 void set_support_text_color(QColor);
77 void set_state_layer_color(QColor);
78 void set_state_layer_opacity(
double);
79 void set_content_opacity(
double);
80 void set_background_opacity(
double);
82 Q_SIGNAL
void stateChanged(const QString&);
83 Q_SIGNAL
void enabledChanged();
84 Q_SIGNAL
void targetChanged();
85 Q_SIGNAL
void ctxChanged();
86 Q_SIGNAL
void elevationChanged();
87 Q_SIGNAL
void textColorChanged();
88 Q_SIGNAL
void outlineColorChanged();
89 Q_SIGNAL
void backgroundColorChanged();
90 Q_SIGNAL
void supportTextColorChanged();
91 Q_SIGNAL
void stateLayerColorChanged();
92 Q_SIGNAL
void stateLayerOpacityChanged();
93 Q_SIGNAL
void contentOpacityChanged();
94 Q_SIGNAL
void backgroundOpacityChanged();
96 auto datas() -> QQmlListProperty<QObject>;
97 auto states() -> QQmlListProperty<QQuickState>;
98 auto transitions() -> QQmlListProperty<QQuickTransition>;
101 Q_SLOT
void updateCtx();
103 QQuickStateGroup* _states();
112 QColor m_outline_color;
113 QColor m_background_color;
114 QColor m_support_text_color;
115 QColor m_state_layer_color;
116 double m_state_layer_opacity;
117 double m_content_opacity;
118 double m_background_opacity;
120 bool m_component_complete;
121 QQuickStateGroup* m_state_group;
122 QList<QObject*> m_datas;