2#include "qml_material/style/button_state.hpp"
3#include "qml_material/token/split_button.hpp"
6class QML_MATERIAL_API SplitButtonState :
public ButtonAppearanceState {
8 QML_NAMED_ELEMENT(StateSplitButton)
10 NOTIFY sizeTokensChanged BINDABLE bindableSizeTokens FINAL)
13 Q_PROPERTY(qreal innerCorner READ innerCorner NOTIFY innerCornerChanged)
14 Q_PROPERTY(qreal outerCorner READ outerCorner NOTIFY sizeTokenChanged)
15 Q_PROPERTY(qreal betweenSpace READ betweenSpace NOTIFY sizeTokenChanged)
16 Q_PROPERTY(qml_material::CornersGroup trailingCorners READ trailingCorners WRITE
17 setTrailingCorners RESET resetTrailingCorners NOTIFY trailingCornersChanged
18 BINDABLE bindableTrailingCorners)
20 explicit SplitButtonState(QObject* parent =
nullptr);
21 token::SplitButtonSize sizeTokens()
const;
22 void setSizeTokens(
const token::SplitButtonSize&);
23 QBindable<token::SplitButtonSize> bindableSizeTokens();
24 token::SplitButtonSizeItem sizeToken()
const;
25 qreal containerHeight()
const override;
26 qreal iconSize()
const override;
27 qreal leadingSpace()
const override;
28 qreal trailingSpace()
const override;
29 qreal spacing()
const override;
30 qreal innerCorner()
const;
31 qreal outerCorner()
const;
32 qreal betweenSpace()
const;
33 CornersGroup trailingCorners()
const;
34 void setTrailingCorners(
const CornersGroup&);
35 void resetTrailingCorners();
36 QBindable<CornersGroup> bindableTrailingCorners();
37 Q_SIGNAL
void sizeTokensChanged();
38 Q_SIGNAL
void sizeTokenChanged();
39 Q_SIGNAL
void innerCornerChanged();
40 Q_SIGNAL
void trailingCornersChanged();
43 token::ButtonSizeItem buttonSize()
const;
44 Q_OBJECT_BINDABLE_PROPERTY(SplitButtonState, token::SplitButtonSize, m_sizeTokens,
45 &SplitButtonState::sizeTokensChanged)
46 Q_OBJECT_BINDABLE_PROPERTY(SplitButtonState, token::SplitButtonSizeItem, m_sizeToken,
47 &SplitButtonState::sizeTokenChanged)
48 Q_OBJECT_BINDABLE_PROPERTY(SplitButtonState, qreal, m_innerCorner,
49 &SplitButtonState::innerCornerChanged)
50 Q_OBJECT_BINDABLE_PROPERTY(SplitButtonState, CornersGroup, m_trailingCorners,
51 &SplitButtonState::trailingCornersChanged)
52 PropertyKey<CornersGroup> m_trailingCornersKey;
53 BindingLifetime m_lifetime { bindingSet().lifetime() };