3#include <QtQml/QQmlEngine>
4#include <QtQuick/QQuickItem>
5#include "qml_material/theme.hpp"
10class State :
public QQuickItem {
13 Q_PROPERTY(QObject* item READ item WRITE set_item NOTIFY itemChanged)
14 Q_PROPERTY(qml_material::Theme* ctx READ ctx WRITE setCtx NOTIFY ctxChanged FINAL)
15 Q_PROPERTY(qint32 elevation READ elevation WRITE set_elevation NOTIFY elevationChanged FINAL)
17 Q_PROPERTY(QColor textColor READ text_color WRITE set_text_color NOTIFY textColorChanged FINAL)
18 Q_PROPERTY(QColor backgroundColor READ background_color WRITE set_background_color NOTIFY
19 backgroundColorChanged FINAL)
20 Q_PROPERTY(QColor outlineColor READ outline_color WRITE set_outline_color NOTIFY
21 outlineColorChanged FINAL)
22 Q_PROPERTY(QColor supportTextColor READ support_text_color WRITE set_support_text_color NOTIFY
23 supportTextColorChanged FINAL)
24 Q_PROPERTY(QColor stateLayerColor READ state_layer_color WRITE set_state_layer_color NOTIFY
25 stateLayerColorChanged FINAL)
27 Q_PROPERTY(
double stateLayerOpacity READ state_layer_opacity WRITE set_state_layer_opacity
28 NOTIFY stateLayerOpacityChanged FINAL)
29 Q_PROPERTY(
double contentOpacity READ content_opacity WRITE set_content_opacity NOTIFY
30 contentOpacityChanged FINAL)
31 Q_PROPERTY(
double backgroundOpacity READ background_opacity WRITE set_background_opacity NOTIFY
32 backgroundOpacityChanged FINAL)
35 State(QQuickItem* parent =
nullptr);
37 void classBegin()
override;
38 void componentComplete()
override;
39 auto ctx() const -> Theme*;
40 Q_SLOT
void setCtx(Theme*);
42 auto item() const -> QObject*;
43 auto elevation() const -> qint32;
44 auto text_color() const -> QColor;
45 auto outline_color() const -> QColor;
46 auto background_color() const -> QColor;
47 auto support_text_color() const -> QColor;
48 auto state_layer_color() const -> QColor;
49 auto state_layer_opacity() const ->
double;
50 auto content_opacity() const ->
double;
51 auto background_opacity() const ->
double;
53 void set_item(QObject*);
54 void set_elevation(qint32);
55 void set_text_color(QColor);
56 void set_outline_color(QColor);
57 void set_background_color(QColor);
58 void set_support_text_color(QColor);
59 void set_state_layer_color(QColor);
60 void set_state_layer_opacity(
double);
61 void set_content_opacity(
double);
62 void set_background_opacity(
double);
64 Q_SIGNAL
void itemChanged();
65 Q_SIGNAL
void ctxChanged();
66 Q_SIGNAL
void elevationChanged();
67 Q_SIGNAL
void textColorChanged();
68 Q_SIGNAL
void outlineColorChanged();
69 Q_SIGNAL
void backgroundColorChanged();
70 Q_SIGNAL
void supportTextColorChanged();
71 Q_SIGNAL
void stateLayerColorChanged();
72 Q_SIGNAL
void stateLayerOpacityChanged();
73 Q_SIGNAL
void contentOpacityChanged();
74 Q_SIGNAL
void backgroundOpacityChanged();
77 Q_SLOT
void updateCtx();
84 QColor m_outline_color;
85 QColor m_background_color;
86 QColor m_support_text_color;
87 QColor m_state_layer_color;
88 double m_state_layer_opacity;
89 double m_content_opacity;
90 double m_background_opacity;
93class StateHolder : public QObject {
97 Q_PROPERTY(qml_material::State* state READ state WRITE setState NOTIFY stateChanged FINAL)
99 StateHolder(QObject* parent =
nullptr);
102 auto state() const -> State*;
104 Q_SLOT
void setState(State*);
105 Q_SIGNAL
void stateChanged();