3#include "qml_material/control/page.hpp"
4#include "qml_material/token/type_scale.hpp"
7#include <QQmlListProperty>
8#include <QtQuick/private/qquickwindowmodule_p.h>
13class QML_MATERIAL_API ApplicationWindow :
public QQuickWindowQmlImpl {
15 QML_NAMED_ELEMENT(ApplicationWindow)
16 Q_CLASSINFO(
"DefaultProperty",
"contentData")
17 Q_PROPERTY(QQuickItem* contentItem READ contentItem CONSTANT FINAL)
18 Q_PROPERTY(QQmlListProperty<QObject> contentData READ contentData FINAL)
20 QQuickItem* background READ background WRITE setBackground NOTIFY backgroundChanged FINAL)
21 Q_PROPERTY(QQuickItem* menuBar READ menuBar WRITE setMenuBar NOTIFY menuBarChanged FINAL)
22 Q_PROPERTY(QQuickItem* header READ header WRITE setHeader NOTIFY headerChanged FINAL)
23 Q_PROPERTY(QQuickItem* footer READ footer WRITE setFooter NOTIFY footerChanged FINAL)
24 Q_PROPERTY(QQuickItem* activeFocusControl READ activeFocusControl NOTIFY
25 activeFocusControlChanged FINAL)
26 Q_PROPERTY(QFont font READ font WRITE setFont RESET resetFont NOTIFY fontChanged FINAL)
27 Q_PROPERTY(qml_material::token::TypeScaleItem typescale READ typescale WRITE setTypescale NOTIFY
28 typescaleChanged BINDABLE bindableTypescale FINAL)
30 QLocale locale READ locale WRITE setLocale RESET resetLocale NOTIFY localeChanged FINAL)
31 Q_PROPERTY(qreal topPadding READ topPadding WRITE setTopPadding RESET resetTopPadding NOTIFY
32 topPaddingChanged FINAL)
33 Q_PROPERTY(qreal leftPadding READ leftPadding WRITE setLeftPadding RESET resetLeftPadding NOTIFY
34 leftPaddingChanged FINAL)
35 Q_PROPERTY(qreal rightPadding READ rightPadding WRITE setRightPadding RESET resetRightPadding
36 NOTIFY rightPaddingChanged FINAL)
37 Q_PROPERTY(qreal bottomPadding READ bottomPadding WRITE setBottomPadding RESET
38 resetBottomPadding NOTIFY bottomPaddingChanged FINAL)
39 Q_PROPERTY(Page* frameItem READ frameItem CONSTANT FINAL)
40 Q_PROPERTY(Page* bodyItem READ bodyItem CONSTANT FINAL)
42 explicit ApplicationWindow(QWindow* parent =
nullptr);
44 QQuickItem* contentItem() const;
45 QQmlListProperty<QObject> contentData();
47 QQuickItem* background() const;
48 void setBackground(QQuickItem* item);
49 QQuickItem* menuBar() const;
50 void setMenuBar(QQuickItem* item);
51 QQuickItem* header() const;
52 void setHeader(QQuickItem* item);
53 QQuickItem* footer() const;
54 void setFooter(QQuickItem* item);
56 QQuickItem* activeFocusControl() const;
59 void setFont(const QFont& font);
61 token::TypeScaleItem typescale()
const {
return m_typescale.value(); }
62 void setTypescale(
const token::TypeScaleItem& value) { m_typescale = value; }
63 QBindable<token::TypeScaleItem> bindableTypescale() {
64 return QBindable<token::TypeScaleItem>(&m_typescale);
67 QLocale locale()
const;
68 void setLocale(
const QLocale& locale);
71 qreal topPadding()
const;
72 void setTopPadding(qreal value);
73 void resetTopPadding();
74 qreal leftPadding()
const;
75 void setLeftPadding(qreal value);
76 void resetLeftPadding();
77 qreal rightPadding()
const;
78 void setRightPadding(qreal value);
79 void resetRightPadding();
80 qreal bottomPadding()
const;
81 void setBottomPadding(qreal value);
82 void resetBottomPadding();
84 Page* frameItem()
const {
return m_frame; }
85 Page* bodyItem()
const {
return m_body; }
87 Q_SIGNAL
void backgroundChanged();
88 Q_SIGNAL
void menuBarChanged();
89 Q_SIGNAL
void headerChanged();
90 Q_SIGNAL
void footerChanged();
91 Q_SIGNAL
void activeFocusControlChanged();
92 Q_SIGNAL
void fontChanged();
93 Q_SIGNAL
void typescaleChanged();
94 Q_SIGNAL
void localeChanged();
95 Q_SIGNAL
void topPaddingChanged();
96 Q_SIGNAL
void leftPaddingChanged();
97 Q_SIGNAL
void rightPaddingChanged();
98 Q_SIGNAL
void bottomPaddingChanged();
101 void classBegin()
override;
105 void updateActiveFocusControl();
107 Page* m_frame {
nullptr };
108 Page* m_body {
nullptr };
109 QPointer<QQuickItem> m_activeFocusControl;
110 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(ApplicationWindow, token::TypeScaleItem, m_typescale,
111 token::TypeScale::default_body_medium,
112 &ApplicationWindow::typescaleChanged)