2#include "qml_material/style/button_interaction_state.hpp"
3#include "qml_material/token/segmented_button.hpp"
4#include "qml_material/token/type_scale.hpp"
5Q_MOC_INCLUDE(
"qml_material/control/button.hpp")
9class QML_MATERIAL_API SegmentedButtonState :
public ButtonInteractionState {
11 QML_NAMED_ELEMENT(StateSegmentedButton)
12 Q_PROPERTY(qml_material::Button* item READ item WRITE setItem NOTIFY itemChanged FINAL)
13 Q_PROPERTY(
int position READ position WRITE setPosition NOTIFY positionChanged BINDABLE
14 bindablePosition FINAL)
15 Q_PROPERTY(
int size READ size WRITE setSize NOTIFY sizeChanged BINDABLE bindableSize FINAL)
17 setSizeTokens NOTIFY sizeTokensChanged BINDABLE bindableSizeTokens FINAL)
21 Q_PROPERTY(qreal containerHeight READ containerHeight NOTIFY sizeTokenChanged)
22 Q_PROPERTY(qreal iconSize READ iconSize NOTIFY sizeTokenChanged)
23 Q_PROPERTY(qreal leadingSpace READ leadingSpace NOTIFY sizeTokenChanged)
24 Q_PROPERTY(qreal trailingSpace READ trailingSpace NOTIFY sizeTokenChanged)
25 Q_PROPERTY(qreal spacing READ spacing NOTIFY sizeTokenChanged)
26 Q_PROPERTY(qreal outlineWidth READ outlineWidth NOTIFY sizeTokenChanged)
27 Q_PROPERTY(qreal cornerRadius READ cornerRadius WRITE setCornerRadius RESET resetCornerRadius
28 NOTIFY cornerRadiusChanged BINDABLE bindableCornerRadius)
30 explicit SegmentedButtonState(QObject* parent =
nullptr);
32 void setItem(Button*);
34 void setPosition(
int);
35 QBindable<int> bindablePosition();
38 QBindable<int> bindableSize();
39 token::SegmentedButtonSize sizeTokens()
const;
40 void setSizeTokens(
const token::SegmentedButtonSize&);
41 QBindable<token::SegmentedButtonSize> bindableSizeTokens();
42 token::SegmentedButtonSizeItem sizeToken()
const;
43 token::TypeScaleItem typescale()
const;
44 qreal containerHeight()
const;
45 qreal iconSize()
const;
46 qreal leadingSpace()
const;
47 qreal trailingSpace()
const;
48 qreal spacing()
const;
49 qreal outlineWidth()
const;
50 qreal cornerRadius()
const;
51 void setCornerRadius(qreal);
52 void resetCornerRadius();
53 QBindable<qreal> bindableCornerRadius();
54 Q_SIGNAL
void positionChanged();
55 Q_SIGNAL
void sizeChanged();
56 Q_SIGNAL
void sizeTokensChanged();
57 Q_SIGNAL
void sizeTokenChanged();
58 Q_SIGNAL
void typescaleChanged();
59 Q_SIGNAL
void cornerRadiusChanged();
62 void updateMirrorSource();
63 QMetaObject::Connection m_mirrorConnection;
64 QProperty<bool> m_mirrored {
false };
65 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(SegmentedButtonState,
int, m_position,
66 int(Enum::ItemPosition::PosSingle),
67 &SegmentedButtonState::positionChanged)
68 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(SegmentedButtonState,
int, m_size,
69 int(Enum::ButtonSize::S),
70 &SegmentedButtonState::sizeChanged)
71 Q_OBJECT_BINDABLE_PROPERTY(SegmentedButtonState, token::SegmentedButtonSize, m_sizeTokens,
72 &SegmentedButtonState::sizeTokensChanged)
73 Q_OBJECT_BINDABLE_PROPERTY(SegmentedButtonState, token::SegmentedButtonSizeItem, m_selectedSize,
74 &SegmentedButtonState::sizeTokenChanged)
75 Q_OBJECT_BINDABLE_PROPERTY(SegmentedButtonState, token::TypeScaleItem, m_typescale,
76 &SegmentedButtonState::typescaleChanged)
77 Q_OBJECT_BINDABLE_PROPERTY(SegmentedButtonState, qreal, m_cornerRadius,
78 &SegmentedButtonState::cornerRadiusChanged)
79 PropertyKey<qreal> m_radiusKey;
80 BindingLifetime m_bindingLifetime { bindingSet().lifetime() };
TypeScaleItem.
Definition type_scale.hpp:36