QmlMaterial 0.1.0
Loading...
Searching...
No Matches
menu_item_state.hpp
1#pragma once
2#include "qml_material/style/button_interaction_state.hpp"
3Q_MOC_INCLUDE("qml_material/control/button.hpp")
4namespace qml_material
5{
6class Button;
7class QML_MATERIAL_API MenuItemState : public ButtonInteractionState {
8 Q_OBJECT
9 QML_NAMED_ELEMENT(StateMenuItem)
10 Q_PROPERTY(qml_material::Button* item READ item WRITE setItem NOTIFY itemChanged FINAL)
11 Q_PROPERTY(bool selected READ selected WRITE setSelected NOTIFY selectedChanged BINDABLE
12 bindableSelected FINAL)
13 Q_PROPERTY(QColor leadingIconColor READ leadingIconColor WRITE setLeadingIconColor RESET
14 resetLeadingIconColor NOTIFY leadingIconColorChanged BINDABLE
15 bindableLeadingIconColor FINAL)
16 Q_PROPERTY(QColor trailingIconColor READ trailingIconColor WRITE setTrailingIconColor RESET
17 resetTrailingIconColor NOTIFY trailingIconColorChanged BINDABLE
18 bindableTrailingIconColor FINAL)
19public:
20 explicit MenuItemState(QObject* parent = nullptr);
21 Button* item() const;
22 void setItem(Button*);
23 bool selected() const;
24 void setSelected(bool);
25 QBindable<bool> bindableSelected();
26 QColor leadingIconColor() const;
27 void setLeadingIconColor(const QColor&);
28 Q_INVOKABLE void resetLeadingIconColor();
29 QBindable<QColor> bindableLeadingIconColor();
30 QColor trailingIconColor() const;
31 void setTrailingIconColor(const QColor&);
32 Q_INVOKABLE void resetTrailingIconColor();
33 QBindable<QColor> bindableTrailingIconColor();
34 Q_SIGNAL void selectedChanged();
35 Q_SIGNAL void leadingIconColorChanged();
36 Q_SIGNAL void trailingIconColorChanged();
37
38private:
39 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(MenuItemState, bool, m_selected, false,
40 &MenuItemState::selectedChanged)
41 Q_OBJECT_BINDABLE_PROPERTY(MenuItemState, QColor, m_leadingIconColor,
42 &MenuItemState::leadingIconColorChanged)
43 Q_OBJECT_BINDABLE_PROPERTY(MenuItemState, QColor, m_trailingIconColor,
44 &MenuItemState::trailingIconColorChanged)
45 PropertyKey<QColor> m_leadingKey, m_trailingKey;
46 BindingLifetime m_bindingLifetime { bindingSet().lifetime() };
47};
48} // namespace qml_material