QmlMaterial 0.1.0
Loading...
Searching...
No Matches
page_context.hpp
1#pragma once
2
3#include <QtQml/QQmlEngine>
4
5namespace qml_material
6{
7class PageContext : public QObject {
8 Q_OBJECT
9 QML_ELEMENT
10 Q_PROPERTY(PageContext* inherit READ inherit WRITE setInherit NOTIFY inheritChanged FINAL)
11 Q_PROPERTY(QObject* leadingAction READ leadingAction WRITE setLeadingAction NOTIFY
12 leadingActionChanged FINAL)
13 Q_PROPERTY(qint32 headerType READ headerType WRITE setHeaderType NOTIFY headerTypeChanged FINAL)
14 Q_PROPERTY(qint32 backgroundRadius READ backgroundRadius WRITE setBackgroundRadius NOTIFY
15 backgroundRadiusChanged FINAL)
16 Q_PROPERTY(double headerBackgroundOpacity READ headerBackgroundOpacity WRITE
17 setHeaderBackgroundOpacity NOTIFY headerBackgroundOpacityChanged FINAL)
18 Q_PROPERTY(qint32 radius READ radius WRITE setRadius NOTIFY radiusChanged FINAL)
19 Q_PROPERTY(bool showHeader READ showHeader WRITE setShowHeader NOTIFY showHeaderChanged FINAL)
20 Q_PROPERTY(bool showBackground READ showBackground WRITE setShowBackground NOTIFY
21 showBackgroundChanged FINAL)
22public:
23 PageContext(QObject* parent = nullptr);
24 ~PageContext();
25
26 auto inherit() const -> PageContext*;
27 auto leadingAction() const -> QObject*;
28 auto backgroundRadius() const -> qint32;
29 auto headerBackgroundOpacity() const -> double;
30 auto radius() const -> qint32;
31 auto headerType() const -> qint32;
32 auto showHeader() const -> bool;
33 auto showBackground() const -> bool;
34
35 Q_SLOT void setInherit(PageContext*);
36 Q_SLOT void setLeadingAction(QObject*);
37 Q_SLOT void setBackgroundRadius(qint32);
38 Q_SLOT void setHeaderBackgroundOpacity(double);
39 Q_SLOT void setRadius(qint32);
40 Q_SLOT void setHeaderType(qint32);
41 Q_SLOT void setShowHeader(bool);
42 Q_SLOT void setShowBackground(bool);
43
44 Q_SIGNAL void inheritChanged();
45 Q_SIGNAL void leadingActionChanged();
46 Q_SIGNAL void backgroundRadiusChanged();
47 Q_SIGNAL void headerBackgroundOpacityChanged();
48 Q_SIGNAL void radiusChanged();
49 Q_SIGNAL void headerTypeChanged();
50 Q_SIGNAL void showHeaderChanged();
51 Q_SIGNAL void showBackgroundChanged();
52
53 Q_SIGNAL void pushItem(const QJSValue& url_or_comp, const QVariantMap& props = {});
54 Q_SIGNAL void pop();
55
56private:
57 PageContext* m_inherit;
58
59 std::optional<QObject*> m_leading_action;
60 std::optional<qint32> m_header_type;
61 std::optional<qint32> m_background_radius;
62 std::optional<double> m_header_background_opacity;
63 std::optional<qint32> m_radius;
64 std::optional<bool> m_show_header;
65 std::optional<bool> m_show_background;
66};
67} // namespace qml_material