QmlMaterial 0.1.0
Loading...
Searching...
No Matches
table_view_delegate_state.hpp
1#pragma once
2#include "qml_material/style/button_interaction_state.hpp"
3Q_MOC_INCLUDE("qml_material/control/item_delegate.hpp")
4namespace qml_material
5{
6class ItemDelegate;
7class QML_MATERIAL_API TableViewDelegateState : public ButtonInteractionState {
8 Q_OBJECT
9 QML_NAMED_ELEMENT(StateTableViewDelegate)
10 Q_PROPERTY(qml_material::ItemDelegate* item READ item WRITE setItem NOTIFY itemChanged FINAL)
11 Q_PROPERTY(bool itemSelected READ itemSelected WRITE setItemSelected NOTIFY itemSelectedChanged
12 BINDABLE bindableItemSelected FINAL)
13 Q_PROPERTY(bool rowHovered READ rowHovered WRITE setRowHovered NOTIFY rowHoveredChanged BINDABLE
14 bindableRowHovered FINAL)
15 Q_PROPERTY(bool selected READ selected NOTIFY selectedChanged BINDABLE bindableSelected FINAL)
16public:
17 explicit TableViewDelegateState(QObject* parent = nullptr);
18 ~TableViewDelegateState() override;
19 ItemDelegate* item() const;
20 void setItem(ItemDelegate*);
21 bool itemSelected() const;
22 void setItemSelected(bool);
23 QBindable<bool> bindableItemSelected();
24 bool rowHovered() const;
25 void setRowHovered(bool);
26 QBindable<bool> bindableRowHovered();
27 bool selected() const;
28 QBindable<bool> bindableSelected() const;
29 Q_SIGNAL void itemSelectedChanged();
30 Q_SIGNAL void rowHoveredChanged();
31 Q_SIGNAL void selectedChanged();
32
33private:
34 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(TableViewDelegateState, bool, m_itemSelected, false,
35 &TableViewDelegateState::itemSelectedChanged)
36 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(TableViewDelegateState, bool, m_rowHovered, false,
37 &TableViewDelegateState::rowHoveredChanged)
38 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(TableViewDelegateState, bool, m_selected, false,
39 &TableViewDelegateState::selectedChanged)
40 BindingLifetime m_bindingLifetime { bindingSet().lifetime() };
41};
42} // namespace qml_material