2#include "qml_material/style/common_state.hpp"
3Q_MOC_INCLUDE(
"qml_material/control/control.hpp")
4Q_MOC_INCLUDE("qml_material/control/abstract_button.hpp")
9class QML_MATERIAL_API SnakeBarState :
public CommonState {
11 QML_NAMED_ELEMENT(StateSnakeBar)
12 Q_PROPERTY(qml_material::Control* item READ item WRITE setItem NOTIFY itemChanged FINAL)
13 Q_PROPERTY(qml_material::AbstractButton* actionItem READ actionItem WRITE setActionItem NOTIFY
15 Q_PROPERTY(qml_material::AbstractButton* iconItem READ iconItem WRITE setIconItem NOTIFY
17 Q_PROPERTY(QColor iconColor READ iconColor WRITE setIconColor RESET resetIconColor NOTIFY
18 iconColorChanged BINDABLE bindableIconColor)
19 Q_PROPERTY(QColor iconStateLayerColor READ iconStateLayerColor WRITE setIconStateLayerColor
20 RESET resetIconStateLayerColor NOTIFY iconStateLayerColorChanged BINDABLE
21 bindableIconStateLayerColor)
22 Q_PROPERTY(qreal iconStateLayerOpacity READ iconStateLayerOpacity WRITE setIconStateLayerOpacity
23 RESET resetIconStateLayerOpacity NOTIFY iconStateLayerOpacityChanged BINDABLE
24 bindableIconStateLayerOpacity)
26 explicit SnakeBarState(QObject* parent =
nullptr);
27 ~SnakeBarState()
override;
28 Control* item()
const;
29 void setItem(Control*);
30 Q_SIGNAL
void itemChanged();
31 AbstractButton* actionItem()
const;
32 void setActionItem(AbstractButton*);
33 Q_SIGNAL
void actionItemChanged();
34 AbstractButton* iconItem()
const;
35 void setIconItem(AbstractButton*);
36 Q_SIGNAL
void iconItemChanged();
37 QColor iconColor()
const;
38 void setIconColor(
const QColor&);
39 QBindable<QColor> bindableIconColor();
40 void resetIconColor();
41 Q_SIGNAL
void iconColorChanged();
42 QColor iconStateLayerColor()
const;
43 void setIconStateLayerColor(
const QColor&);
44 QBindable<QColor> bindableIconStateLayerColor();
45 void resetIconStateLayerColor();
46 Q_SIGNAL
void iconStateLayerColorChanged();
47 qreal iconStateLayerOpacity()
const;
48 void setIconStateLayerOpacity(qreal);
49 QBindable<qreal> bindableIconStateLayerOpacity();
50 void resetIconStateLayerOpacity();
51 Q_SIGNAL
void iconStateLayerOpacityChanged();
54 enum class Interaction
65 Interaction state = Interaction::Base;
66 quint64 generation = 0;
67 bool operator==(
const Selection&)
const =
default;
69 void selectionChanged();
70 StateBindingSet<Interaction> m_bindings { Interaction::Base };
71 QProperty<AbstractButton*> m_actionItem {
nullptr };
72 QProperty<AbstractButton*> m_iconItem {
nullptr };
73 QMetaObject::Connection m_actionDestroyed;
74 QMetaObject::Connection m_iconDestroyed;
76 Q_OBJECT_BINDABLE_PROPERTY(SnakeBarState, Selection, m_selection,
77 &SnakeBarState::selectionChanged)
78 Q_OBJECT_BINDABLE_PROPERTY(SnakeBarState, QColor, m_iconColor, &SnakeBarState::iconColorChanged)
79 Q_OBJECT_BINDABLE_PROPERTY(SnakeBarState, QColor, m_iconStateLayerColor,
80 &SnakeBarState::iconStateLayerColorChanged)
81 Q_OBJECT_BINDABLE_PROPERTY(SnakeBarState, qreal, m_iconStateLayerOpacity,
82 &SnakeBarState::iconStateLayerOpacityChanged)
83 PropertyKey<QColor> m_iconColorKey;
84 PropertyKey<QColor> m_iconLayerColorKey;
85 PropertyKey<qreal> m_iconLayerOpacityKey;
86 StateBindingSet<Interaction>::Lifetime m_lifetime { m_bindings.lifetime() };