QmlMaterial 0.1.0
Loading...
Searching...
No Matches
split_button_state.hpp
1#pragma once
2#include "qml_material/style/button_state.hpp"
3#include "qml_material/token/split_button.hpp"
4namespace qml_material
5{
6class QML_MATERIAL_API SplitButtonState : public ButtonAppearanceState {
7 Q_OBJECT
8 QML_NAMED_ELEMENT(StateSplitButton)
9 Q_PROPERTY(qml_material::token::SplitButtonSize sizeTokens READ sizeTokens WRITE setSizeTokens
10 NOTIFY sizeTokensChanged BINDABLE bindableSizeTokens FINAL)
11 Q_PROPERTY(
12 qml_material::token::SplitButtonSizeItem sizeToken READ sizeToken NOTIFY sizeTokenChanged)
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)
19public:
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();
41
42private:
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() };
54};
55} // namespace qml_material
Split button size tokens for a specific size class.
Definition split_button.hpp:13
Collection of split button size tokens for different size classes.
Definition split_button.hpp:70