QmlMaterial 0.1.0
Loading...
Searching...
No Matches
check_box_state.hpp
1#pragma once
2#include "qml_material/style/button_interaction_state.hpp"
3Q_MOC_INCLUDE("qml_material/control/check_box.hpp")
4namespace qml_material
5{
6class CheckBox;
7class QML_MATERIAL_API CheckBoxState : public ButtonInteractionState {
8 Q_OBJECT
9 QML_NAMED_ELEMENT(StateCheckBox)
10 Q_PROPERTY(qml_material::CheckBox* item READ item WRITE setItem NOTIFY itemChanged FINAL)
11 Q_PROPERTY(
12 bool error READ error WRITE setError NOTIFY errorChanged BINDABLE bindableError FINAL)
13 Q_PROPERTY(QColor iconColor READ iconColor WRITE setIconColor RESET resetIconColor NOTIFY
14 iconColorChanged BINDABLE bindableIconColor FINAL)
15 Q_PROPERTY(QColor iconBackgroundColor READ iconBackgroundColor WRITE setIconBackgroundColor
16 RESET resetIconBackgroundColor NOTIFY iconBackgroundColorChanged BINDABLE
17 bindableIconBackgroundColor FINAL)
18
19public:
20 explicit CheckBoxState(QObject* parent = nullptr);
21 CheckBox* item() const;
22 void setItem(CheckBox*);
23 bool error() const;
24 void setError(bool);
25 QBindable<bool> bindableError();
26 Q_SIGNAL void errorChanged();
27 QColor iconColor() const;
28 void setIconColor(const QColor&);
29 QBindable<QColor> bindableIconColor();
30 Q_INVOKABLE void resetIconColor();
31 Q_SIGNAL void iconColorChanged();
32 QColor iconBackgroundColor() const;
33 void setIconBackgroundColor(const QColor&);
34 QBindable<QColor> bindableIconBackgroundColor();
35 Q_INVOKABLE void resetIconBackgroundColor();
36 Q_SIGNAL void iconBackgroundColorChanged();
37
38private:
39 PropertyKey<QColor> m_iconKey, m_iconBackgroundKey;
40 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(CheckBoxState, bool, m_error, false,
41 &CheckBoxState::errorChanged)
42 Q_OBJECT_BINDABLE_PROPERTY(CheckBoxState, QColor, m_iconColor, &CheckBoxState::iconColorChanged)
43 Q_OBJECT_BINDABLE_PROPERTY(CheckBoxState, QColor, m_iconBackgroundColor,
44 &CheckBoxState::iconBackgroundColorChanged)
45 BindingLifetime m_bindingLifetime { bindingSet().lifetime() };
46};
47} // namespace qml_material