QmlMaterial 0.1.0
Loading...
Searching...
No Matches
combo_box_state.hpp
1#pragma once
2#include "qml_material/style/input_state.hpp"
3#include "qml_material/token/combo_box.hpp"
4Q_MOC_INCLUDE("qml_material/control/combo_box.hpp")
5namespace qml_material
6{
7class ComboBox;
8class QML_MATERIAL_API ComboBoxState : public InputState {
9 Q_OBJECT
10 QML_NAMED_ELEMENT(StateComboBox)
11 Q_PROPERTY(qml_material::ComboBox* item READ item WRITE setItem NOTIFY itemChanged FINAL)
12 Q_PROPERTY(int size READ size WRITE setSize NOTIFY sizeChanged BINDABLE bindableSize)
13 Q_PROPERTY(token::ComboBoxSize sizeTokens READ sizeTokens WRITE setSizeTokens NOTIFY
14 sizeTokensChanged BINDABLE bindableSizeTokens)
15 Q_PROPERTY(token::TypeScaleItem typescale READ typescale WRITE setTypescale RESET resetTypescale
16 NOTIFY typescaleChanged BINDABLE bindableTypescale)
17 Q_PROPERTY(QColor labelColor READ labelColor WRITE setLabelColor RESET resetLabelColor NOTIFY
18 labelColorChanged BINDABLE bindableLabelColor)
19 Q_PROPERTY(qreal labelOpacity READ labelOpacity WRITE setLabelOpacity RESET resetLabelOpacity
20 NOTIFY labelOpacityChanged BINDABLE bindableLabelOpacity)
21 Q_PROPERTY(
22 qml_material::token::ComboBoxSizeItem sizeToken READ sizeToken NOTIFY sizeTokenChanged)
23 Q_PROPERTY(qreal containerHeight READ containerHeight NOTIFY sizeTokenChanged)
24 Q_PROPERTY(qreal horizontalPadding READ horizontalPadding NOTIFY sizeTokenChanged)
25 Q_PROPERTY(qreal indicatorSize READ indicatorSize NOTIFY sizeTokenChanged)
26 Q_PROPERTY(qreal spacing READ spacing NOTIFY sizeTokenChanged)
27public:
28 explicit ComboBoxState(QObject* parent = nullptr);
29 ~ComboBoxState() override;
30 ComboBox* item() const;
31 void setItem(ComboBox*);
32 int size() const;
33 void setSize(const int&);
34 QBindable<int> bindableSize();
35 Q_SIGNAL void sizeChanged();
36 token::ComboBoxSize sizeTokens() const;
37 void setSizeTokens(const token::ComboBoxSize&);
38 QBindable<token::ComboBoxSize> bindableSizeTokens();
39 Q_SIGNAL void sizeTokensChanged();
40 token::TypeScaleItem typescale() const;
41 void setTypescale(const token::TypeScaleItem&);
42 QBindable<token::TypeScaleItem> bindableTypescale();
43 Q_SIGNAL void typescaleChanged();
44 void resetTypescale();
45 QColor labelColor() const;
46 void setLabelColor(const QColor&);
47 QBindable<QColor> bindableLabelColor();
48 Q_SIGNAL void labelColorChanged();
49 void resetLabelColor();
50 qreal labelOpacity() const;
51 void setLabelOpacity(const qreal&);
52 QBindable<qreal> bindableLabelOpacity();
53 Q_SIGNAL void labelOpacityChanged();
54 void resetLabelOpacity();
55 token::ComboBoxSizeItem sizeToken() const;
56 Q_SIGNAL void sizeTokenChanged();
57 qreal containerHeight() const;
58 qreal horizontalPadding() const;
59 qreal indicatorSize() const;
60 qreal spacing() const;
61
62private:
63 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(ComboBoxState, int, m_size, int(Enum::ButtonSize::M),
64 &ComboBoxState::sizeChanged)
65 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(ComboBoxState, token::ComboBoxSize, m_sizeTokens,
66 token::ComboBoxSize {}, &ComboBoxState::sizeTokensChanged)
67 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(ComboBoxState, token::TypeScaleItem, m_typescale,
68 token::TypeScaleItem {}, &ComboBoxState::typescaleChanged)
69 PropertyKey<token::TypeScaleItem> m_typescaleKey;
70 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(ComboBoxState, QColor, m_labelColor,
71 QColor(Qt::transparent), &ComboBoxState::labelColorChanged)
72 PropertyKey<QColor> m_labelColorKey;
73 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(ComboBoxState, qreal, m_labelOpacity, 1,
74 &ComboBoxState::labelOpacityChanged)
75 PropertyKey<qreal> m_labelOpacityKey;
76 Q_OBJECT_BINDABLE_PROPERTY(ComboBoxState, token::ComboBoxSizeItem, m_selectedSize,
77 &ComboBoxState::sizeTokenChanged)
78 StateBindingSet<Interaction>::Lifetime m_lifetime { m_bindings.lifetime() };
79};
80} // namespace qml_material