QmlMaterial 0.1.0
Loading...
Searching...
No Matches
bottom_sheet_state.hpp
1#pragma once
2#include "qml_material/style/common_state.hpp"
3Q_MOC_INCLUDE("qml_material/control/popup.hpp")
4namespace qml_material
5{
6class Popup;
7class QML_MATERIAL_API BottomSheetState : public CommonState {
8 Q_OBJECT
9 QML_NAMED_ELEMENT(StateBottomSheet)
10 Q_PROPERTY(qml_material::Popup* item READ item WRITE setItem NOTIFY itemChanged FINAL)
11 Q_PROPERTY(int type READ type WRITE setType NOTIFY typeChanged BINDABLE bindableType)
12 Q_PROPERTY(int radius READ radius WRITE setRadius RESET resetRadius NOTIFY radiusChanged
13 BINDABLE bindableRadius)
14public:
15 explicit BottomSheetState(QObject* parent = nullptr);
16 Popup* item() const;
17 void setItem(Popup*);
18 Q_SIGNAL void itemChanged();
19 int type() const;
20 void setType(int);
21 QBindable<int> bindableType();
22 Q_SIGNAL void typeChanged();
23 int radius() const;
24 void setRadius(int);
25 void resetRadius();
26 QBindable<int> bindableRadius();
27 Q_SIGNAL void radiusChanged();
28
29private:
30 enum class AppearanceState
31 {
32 Base
33 };
34 StateBindingSet<AppearanceState> m_bindings { AppearanceState::Base };
35 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(BottomSheetState, int, m_type,
36 int(Enum::BottomSheetType::BottomSheetModal),
37 &BottomSheetState::typeChanged)
38 Q_OBJECT_BINDABLE_PROPERTY(BottomSheetState, int, m_radius, &BottomSheetState::radiusChanged)
39 PropertyKey<int> m_radiusKey;
40 StateBindingSet<AppearanceState>::Lifetime m_lifetime { m_bindings.lifetime() };
41};
42} // namespace qml_material