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