3#include "qml_material/style/common_state.hpp"
4Q_MOC_INCLUDE(
"qml_material/control/slider.hpp")
5Q_MOC_INCLUDE("qml_material/control/range_slider.hpp")
11class QML_MATERIAL_API SliderAppearance :
public CommonState {
14 Q_PROPERTY(QColor trackColor READ trackColor WRITE setTrackColor RESET resetTrackColor NOTIFY
15 trackColorChanged BINDABLE bindableTrackColor)
16 Q_PROPERTY(QColor trackOverlayColor READ trackOverlayColor WRITE setTrackOverlayColor RESET
17 resetTrackOverlayColor NOTIFY trackOverlayColorChanged BINDABLE
18 bindableTrackOverlayColor)
19 Q_PROPERTY(QColor trackInactiveColor READ trackInactiveColor WRITE setTrackInactiveColor RESET
20 resetTrackInactiveColor NOTIFY trackInactiveColorChanged BINDABLE
21 bindableTrackInactiveColor)
22 Q_PROPERTY(QColor trackMarkInactiveColor READ trackMarkInactiveColor WRITE
23 setTrackMarkInactiveColor RESET resetTrackMarkInactiveColor NOTIFY
24 trackMarkInactiveColorChanged BINDABLE bindableTrackMarkInactiveColor)
25 Q_PROPERTY(QColor trackMarkColor READ trackMarkColor WRITE setTrackMarkColor RESET
26 resetTrackMarkColor NOTIFY trackMarkColorChanged BINDABLE bindableTrackMarkColor)
27 Q_PROPERTY(qreal trackOverlayOpacity READ trackOverlayOpacity WRITE setTrackOverlayOpacity RESET
28 resetTrackOverlayOpacity NOTIFY trackOverlayOpacityChanged BINDABLE
29 bindableTrackOverlayOpacity)
31 explicit SliderAppearance(QObject* parent =
nullptr);
32 ~SliderAppearance()
override;
33 QColor trackColor()
const;
34 void setTrackColor(
const QColor&);
35 void resetTrackColor();
36 QBindable<QColor> bindableTrackColor();
37 Q_SIGNAL
void trackColorChanged();
38 QColor trackOverlayColor()
const;
39 void setTrackOverlayColor(
const QColor&);
40 void resetTrackOverlayColor();
41 QBindable<QColor> bindableTrackOverlayColor();
42 Q_SIGNAL
void trackOverlayColorChanged();
43 QColor trackInactiveColor()
const;
44 void setTrackInactiveColor(
const QColor&);
45 void resetTrackInactiveColor();
46 QBindable<QColor> bindableTrackInactiveColor();
47 Q_SIGNAL
void trackInactiveColorChanged();
48 QColor trackMarkInactiveColor()
const;
49 void setTrackMarkInactiveColor(
const QColor&);
50 void resetTrackMarkInactiveColor();
51 QBindable<QColor> bindableTrackMarkInactiveColor();
52 Q_SIGNAL
void trackMarkInactiveColorChanged();
53 QColor trackMarkColor()
const;
54 void setTrackMarkColor(
const QColor&);
55 void resetTrackMarkColor();
56 QBindable<QColor> bindableTrackMarkColor();
57 Q_SIGNAL
void trackMarkColorChanged();
58 qreal trackOverlayOpacity()
const;
59 void setTrackOverlayOpacity(
const qreal&);
60 void resetTrackOverlayOpacity();
61 QBindable<qreal> bindableTrackOverlayOpacity();
62 Q_SIGNAL
void trackOverlayOpacityChanged();
65 enum class Interaction
72 StateBindingSet<Interaction> m_bindings { Interaction::Base };
74 Control* control()
const;
75 void setControl(Control*, std::function<
bool()> pressed);
76 Q_SIGNAL
void controlChanged();
79 void selectionChanged();
81 Interaction state = Interaction::Base;
82 quint64 generation = 0;
83 bool operator==(
const Selection&)
const =
default;
85 QProperty<Control*> m_control {
nullptr };
86 QProperty<bool> m_pressed {
false };
87 QProperty<bool> m_disabled {
false };
88 QList<QMetaObject::Connection> m_connections;
90 Q_OBJECT_BINDABLE_PROPERTY(SliderAppearance, Selection, m_selection,
91 &SliderAppearance::selectionChanged)
92 Q_OBJECT_BINDABLE_PROPERTY(SliderAppearance, QColor, m_trackColor,
93 &SliderAppearance::trackColorChanged)
94 PropertyKey<QColor> m_trackColorKey;
95 Q_OBJECT_BINDABLE_PROPERTY(SliderAppearance, QColor, m_trackOverlayColor,
96 &SliderAppearance::trackOverlayColorChanged)
97 PropertyKey<QColor> m_trackOverlayColorKey;
98 Q_OBJECT_BINDABLE_PROPERTY(SliderAppearance, QColor, m_trackInactiveColor,
99 &SliderAppearance::trackInactiveColorChanged)
100 PropertyKey<QColor> m_trackInactiveColorKey;
101 Q_OBJECT_BINDABLE_PROPERTY(SliderAppearance, QColor, m_trackMarkInactiveColor,
102 &SliderAppearance::trackMarkInactiveColorChanged)
103 PropertyKey<QColor> m_trackMarkInactiveColorKey;
104 Q_OBJECT_BINDABLE_PROPERTY(SliderAppearance, QColor, m_trackMarkColor,
105 &SliderAppearance::trackMarkColorChanged)
106 PropertyKey<QColor> m_trackMarkColorKey;
107 Q_OBJECT_BINDABLE_PROPERTY(SliderAppearance, qreal, m_trackOverlayOpacity,
108 &SliderAppearance::trackOverlayOpacityChanged)
109 PropertyKey<qreal> m_trackOverlayOpacityKey;
110 StateBindingSet<Interaction>::Lifetime m_lifetime { m_bindings.lifetime() };
112class QML_MATERIAL_API SliderHandleAppearance :
public SliderAppearance {
116 int handleLineWidth READ handleLineWidth WRITE setHandleLineWidth RESET resetHandleLineWidth
117 NOTIFY handleLineWidthChanged BINDABLE bindableHandleLineWidth)
118 Q_PROPERTY(
int handleWidth READ handleWidth WRITE setHandleWidth RESET resetHandleWidth NOTIFY
119 handleWidthChanged BINDABLE bindableHandleWidth)
120 Q_PROPERTY(
int handleHeight READ handleHeight WRITE setHandleHeight RESET resetHandleHeight
121 NOTIFY handleHeightChanged BINDABLE bindableHandleHeight)
123 explicit SliderHandleAppearance(QObject* parent =
nullptr);
124 int handleLineWidth()
const;
125 void setHandleLineWidth(
const int&);
126 void resetHandleLineWidth();
127 QBindable<int> bindableHandleLineWidth();
128 Q_SIGNAL
void handleLineWidthChanged();
129 int handleWidth()
const;
130 void setHandleWidth(
const int&);
131 void resetHandleWidth();
132 QBindable<int> bindableHandleWidth();
133 Q_SIGNAL
void handleWidthChanged();
134 int handleHeight()
const;
135 void setHandleHeight(
const int&);
136 void resetHandleHeight();
137 QBindable<int> bindableHandleHeight();
138 Q_SIGNAL
void handleHeightChanged();
141 Q_OBJECT_BINDABLE_PROPERTY(SliderHandleAppearance,
int, m_handleLineWidth,
142 &SliderHandleAppearance::handleLineWidthChanged)
143 PropertyKey<int> m_handleLineWidthKey;
144 Q_OBJECT_BINDABLE_PROPERTY(SliderHandleAppearance,
int, m_handleWidth,
145 &SliderHandleAppearance::handleWidthChanged)
146 PropertyKey<int> m_handleWidthKey;
147 Q_OBJECT_BINDABLE_PROPERTY(SliderHandleAppearance,
int, m_handleHeight,
148 &SliderHandleAppearance::handleHeightChanged)
149 PropertyKey<int> m_handleHeightKey;
150 StateBindingSet<Interaction>::Lifetime m_lifetime { m_bindings.lifetime() };
152class QML_MATERIAL_API SliderM2State :
public SliderAppearance {
154 QML_NAMED_ELEMENT(StateSliderM2)
155 Q_PROPERTY(qml_material::Slider* item READ item WRITE setItem NOTIFY itemChanged FINAL)
157 explicit SliderM2State(QObject* parent =
nullptr);
158 Slider* item()
const;
159 void setItem(Slider*);
160 Q_SIGNAL
void itemChanged();
162class QML_MATERIAL_API SliderState :
public SliderHandleAppearance {
164 QML_NAMED_ELEMENT(StateSlider)
165 Q_PROPERTY(qml_material::Slider* item READ item WRITE setItem NOTIFY itemChanged FINAL)
167 explicit SliderState(QObject* parent =
nullptr);
168 Slider* item()
const;
169 void setItem(Slider*);
170 Q_SIGNAL
void itemChanged();
172class QML_MATERIAL_API RangeSliderState :
public SliderHandleAppearance {
174 QML_NAMED_ELEMENT(StateRangeSlider)
175 Q_PROPERTY(qml_material::RangeSlider* item READ item WRITE setItem NOTIFY itemChanged FINAL)
176 Q_PROPERTY(
int handleIndex READ handleIndex WRITE setHandleIndex NOTIFY handleIndexChanged
177 BINDABLE bindableHandleIndex FINAL)
179 explicit RangeSliderState(QObject* parent =
nullptr);
180 RangeSlider* item()
const;
181 void setItem(RangeSlider*);
182 Q_SIGNAL
void itemChanged();
183 int handleIndex()
const {
return m_handleIndex.value(); }
184 void setHandleIndex(
int value) { m_handleIndex = value; }
185 QBindable<int> bindableHandleIndex() {
return QBindable<int>(&m_handleIndex); }
186 Q_SIGNAL
void handleIndexChanged();
189 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(RangeSliderState,
int, m_handleIndex, -1,
190 &RangeSliderState::handleIndexChanged)