QmlMaterial 0.1.0
Loading...
Searching...
No Matches
text_field_state.hpp
1#pragma once
2#include "qml_material/style/input_state.hpp"
3#include "qml_material/token/text_field.hpp"
4Q_MOC_INCLUDE("qml_material/control/text_field.hpp")
5namespace qml_material
6{
7class TextField;
8class QML_MATERIAL_API TextFieldState : public InputState {
9 Q_OBJECT
10 QML_NAMED_ELEMENT(StateTextField)
11 Q_PROPERTY(qml_material::TextField* item READ item WRITE setItem NOTIFY itemChanged FINAL)
12 Q_PROPERTY(int size READ size WRITE setSize NOTIFY sizeChanged BINDABLE bindableSize)
13 Q_PROPERTY(int type READ type WRITE setType NOTIFY typeChanged BINDABLE bindableType)
14 Q_PROPERTY(token::TextFieldSize sizeTokens READ sizeTokens WRITE setSizeTokens NOTIFY
15 sizeTokensChanged BINDABLE bindableSizeTokens)
16 Q_PROPERTY(token::TypeScaleItem typescale READ typescale WRITE setTypescale RESET resetTypescale
17 NOTIFY typescaleChanged BINDABLE bindableTypescale)
18 Q_PROPERTY(
19 int indicatorHeight READ indicatorHeight WRITE setIndicatorHeight RESET resetIndicatorHeight
20 NOTIFY indicatorHeightChanged BINDABLE bindableIndicatorHeight)
21 Q_PROPERTY(QColor indicatorColor READ indicatorColor WRITE setIndicatorColor RESET
22 resetIndicatorColor NOTIFY indicatorColorChanged BINDABLE bindableIndicatorColor)
23 Q_PROPERTY(
24 QColor placeholderColor READ placeholderColor WRITE setPlaceholderColor RESET
25 resetPlaceholderColor NOTIFY placeholderColorChanged BINDABLE bindablePlaceholderColor)
26 Q_PROPERTY(qreal placeholderOpacity READ placeholderOpacity WRITE setPlaceholderOpacity RESET
27 resetPlaceholderOpacity NOTIFY placeholderOpacityChanged BINDABLE
28 bindablePlaceholderOpacity)
29 Q_PROPERTY(
30 qml_material::token::TextFieldSizeItem sizeToken READ sizeToken NOTIFY sizeTokenChanged)
31 Q_PROPERTY(qreal containerHeight READ containerHeight NOTIFY sizeTokenChanged)
32 Q_PROPERTY(qreal horizontalPadding READ horizontalPadding NOTIFY sizeTokenChanged)
33 Q_PROPERTY(qreal verticalPadding READ verticalPadding NOTIFY sizeTokenChanged)
34 Q_PROPERTY(qreal iconSize READ iconSize NOTIFY sizeTokenChanged)
35 Q_PROPERTY(qreal spacing READ spacing NOTIFY sizeTokenChanged)
36public:
37 explicit TextFieldState(QObject* parent = nullptr);
38 ~TextFieldState() override;
39 TextField* item() const;
40 void setItem(TextField*);
41 int size() const;
42 void setSize(const int&);
43 QBindable<int> bindableSize();
44 Q_SIGNAL void sizeChanged();
45 int type() const;
46 void setType(const int&);
47 QBindable<int> bindableType();
48 Q_SIGNAL void typeChanged();
49 token::TextFieldSize sizeTokens() const;
50 void setSizeTokens(const token::TextFieldSize&);
51 QBindable<token::TextFieldSize> bindableSizeTokens();
52 Q_SIGNAL void sizeTokensChanged();
53 token::TypeScaleItem typescale() const;
54 void setTypescale(const token::TypeScaleItem&);
55 QBindable<token::TypeScaleItem> bindableTypescale();
56 Q_SIGNAL void typescaleChanged();
57 void resetTypescale();
58 int indicatorHeight() const;
59 void setIndicatorHeight(const int&);
60 QBindable<int> bindableIndicatorHeight();
61 Q_SIGNAL void indicatorHeightChanged();
62 void resetIndicatorHeight();
63 QColor indicatorColor() const;
64 void setIndicatorColor(const QColor&);
65 QBindable<QColor> bindableIndicatorColor();
66 Q_SIGNAL void indicatorColorChanged();
67 void resetIndicatorColor();
68 QColor placeholderColor() const;
69 void setPlaceholderColor(const QColor&);
70 QBindable<QColor> bindablePlaceholderColor();
71 Q_SIGNAL void placeholderColorChanged();
72 void resetPlaceholderColor();
73 qreal placeholderOpacity() const;
74 void setPlaceholderOpacity(const qreal&);
75 QBindable<qreal> bindablePlaceholderOpacity();
76 Q_SIGNAL void placeholderOpacityChanged();
77 void resetPlaceholderOpacity();
78 token::TextFieldSizeItem sizeToken() const;
79 Q_SIGNAL void sizeTokenChanged();
80 qreal containerHeight() const;
81 qreal horizontalPadding() const;
82 qreal verticalPadding() const;
83 qreal iconSize() const;
84 qreal spacing() const;
85
86private:
87 void updateNativeInputs();
88 QList<QMetaObject::Connection> m_nativeConnections;
89 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(TextFieldState, int, m_size, int(Enum::ButtonSize::M),
90 &TextFieldState::sizeChanged)
91 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(TextFieldState, int, m_type, 0,
92 &TextFieldState::typeChanged)
93 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(TextFieldState, token::TextFieldSize, m_sizeTokens,
94 token::TextFieldSize {},
95 &TextFieldState::sizeTokensChanged)
96 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(TextFieldState, token::TypeScaleItem, m_typescale,
97 token::TypeScaleItem {}, &TextFieldState::typescaleChanged)
98 PropertyKey<token::TypeScaleItem> m_typescaleKey;
99 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(TextFieldState, int, m_indicatorHeight, 1,
100 &TextFieldState::indicatorHeightChanged)
101 PropertyKey<int> m_indicatorHeightKey;
102 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(TextFieldState, QColor, m_indicatorColor,
103 QColor(Qt::transparent),
104 &TextFieldState::indicatorColorChanged)
105 PropertyKey<QColor> m_indicatorColorKey;
106 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(TextFieldState, QColor, m_placeholderColor,
107 QColor(Qt::transparent),
108 &TextFieldState::placeholderColorChanged)
109 PropertyKey<QColor> m_placeholderColorKey;
110 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(TextFieldState, qreal, m_placeholderOpacity, 1,
111 &TextFieldState::placeholderOpacityChanged)
112 PropertyKey<qreal> m_placeholderOpacityKey;
113 Q_OBJECT_BINDABLE_PROPERTY(TextFieldState, token::TextFieldSizeItem, m_selectedSize,
114 &TextFieldState::sizeTokenChanged)
115 StateBindingSet<Interaction>::Lifetime m_lifetime { m_bindings.lifetime() };
116};
117} // namespace qml_material