3#include "qml_material/control/page_stack.hpp"
5#include <QtQml/QJSValue>
7Q_MOC_INCLUDE(
"qml_material/util/pool.hpp")
14class QML_MATERIAL_API PageContainer :
public MaterialPageStack {
16 QML_NAMED_ELEMENT(PageContainer)
17 QML_ATTACHED(PageStackAttached)
18 Q_PROPERTY(PoolRequest* pendingRequest READ pendingRequest NOTIFY pendingRequestChanged FINAL)
19 Q_PROPERTY(PoolRequest* currentRequest READ currentRequest NOTIFY currentRequestChanged FINAL)
20 Q_PROPERTY(QString currentKey READ currentKey NOTIFY currentKeyChanged FINAL)
21 Q_PROPERTY(
bool canBack READ canBack NOTIFY canBackChanged FINAL)
23 explicit PageContainer(QQuickItem* parent =
nullptr);
24 ~PageContainer()
override;
25 PoolRequest* pendingRequest()
const;
26 PoolRequest* currentRequest()
const;
27 QString currentKey()
const;
29 Q_INVOKABLE
void switchTo(
const QJSValue& source,
const QJSValue& properties,
31 Q_INVOKABLE
void back();
32 Q_SIGNAL
void pendingRequestChanged();
33 Q_SIGNAL
void currentRequestChanged();
34 Q_SIGNAL
void currentKeyChanged();
35 Q_SIGNAL
void canBackChanged();
36 Q_SIGNAL
void pageLoadFailed(
const QString& error);
39 void classBegin()
override;
42 Q_SLOT
void updateCanBack();
43 void handlePendingRequest();
44 void setPendingRequest(PoolRequest*);
45 void setCurrentRequest(PoolRequest*);
47 QPointer<PoolRequest> m_pending;
48 QPointer<PoolRequest> m_current;
49 QPointer<PoolRequest> m_accepting;
50 QHash<quint64, QPointer<PoolRequest>> m_leases;
51 QMetaObject::Connection m_statusConnection;
52 QMetaObject::Connection m_backConnection;
54 bool m_changing =
false;
55 bool m_canBack =
false;
59QML_DECLARE_TYPEINFO(qml_material::PageContainer, QML_HAS_ATTACHED_PROPERTIES)