13class Popup :
public QQuickItem {
15 QML_NAMED_ELEMENT(Popup2)
17 Q_PROPERTY(
bool opened READ isOpened NOTIFY openedChanged FINAL)
18 Q_PROPERTY(
bool entering READ entering NOTIFY enteringChanged FINAL)
19 Q_PROPERTY(
bool closing READ closing NOTIFY closingChanged FINAL)
20 Q_PROPERTY(
bool modal READ modal WRITE setModal NOTIFY modalChanged FINAL)
21 Q_PROPERTY(
bool dim READ dim WRITE setDim NOTIFY dimChanged FINAL)
22 Q_PROPERTY(
bool fullScreen READ fullScreen WRITE setFullScreen NOTIFY fullScreenChanged FINAL)
23 Q_PROPERTY(
bool visualFocus READ visualFocus NOTIFY visualFocusChanged FINAL)
24 Q_PROPERTY(Qt::FocusReason focusReason READ focusReason NOTIFY focusReasonChanged FINAL)
25 Q_PROPERTY(ClosePolicy closePolicy READ closePolicy WRITE setClosePolicy NOTIFY
26 closePolicyChanged FINAL)
27 Q_PROPERTY(
bool deferredCompletion READ deferredCompletion WRITE setDeferredCompletion NOTIFY
28 deferredCompletionChanged FINAL)
29 Q_PROPERTY(
int hideDelay READ hideDelay WRITE setHideDelay NOTIFY hideDelayChanged FINAL)
30 Q_PROPERTY(QQuickItem* popupItem READ popupItem WRITE setPopupItem NOTIFY popupItemChanged FINAL)
31 Q_PROPERTY(QQuickItem* overlayItem READ overlayItem NOTIFY overlayItemChanged FINAL)
32 Q_PROPERTY(qreal overlayWidth READ overlayWidth NOTIFY overlayGeometryChanged FINAL)
33 Q_PROPERTY(qreal overlayHeight READ overlayHeight NOTIFY overlayGeometryChanged FINAL)
36 explicit Popup(QQuickItem* parent =
nullptr);
38 enum ClosePolicyFlag {
40 CloseOnPressOutside = 0x01,
41 CloseOnPressOutsideParent = 0x02,
42 CloseOnReleaseOutside = 0x04,
43 CloseOnReleaseOutsideParent = 0x08,
46 Q_DECLARE_FLAGS(ClosePolicy, ClosePolicyFlag)
49 bool isOpened()
const;
50 bool entering()
const;
54 void setModal(
bool value);
57 void setDim(
bool value);
59 bool fullScreen()
const;
60 void setFullScreen(
bool value);
62 bool visualFocus()
const;
63 Qt::FocusReason focusReason()
const;
65 ClosePolicy closePolicy()
const;
66 void setClosePolicy(ClosePolicy value);
68 bool deferredCompletion()
const;
69 void setDeferredCompletion(
bool value);
71 int hideDelay()
const;
72 void setHideDelay(
int value);
74 QQuickItem* popupItem()
const;
75 void setPopupItem(QQuickItem* item);
77 QQuickItem* overlayItem()
const;
78 qreal overlayWidth()
const;
79 qreal overlayHeight()
const;
81 Q_INVOKABLE
void open();
82 Q_INVOKABLE
void close();
83 Q_INVOKABLE
void completeEnter();
84 Q_INVOKABLE
void completeExit();
86 Q_SIGNAL
void aboutToShow();
87 Q_SIGNAL
void enteringChanged();
88 Q_SIGNAL
void openedChanged();
89 Q_SIGNAL
void opened();
90 Q_SIGNAL
void aboutToHide();
91 Q_SIGNAL
void closingChanged();
92 Q_SIGNAL
void closed();
93 Q_SIGNAL
void modalChanged();
94 Q_SIGNAL
void dimChanged();
95 Q_SIGNAL
void fullScreenChanged();
96 Q_SIGNAL
void visualFocusChanged();
97 Q_SIGNAL
void focusReasonChanged();
98 Q_SIGNAL
void closePolicyChanged();
99 Q_SIGNAL
void deferredCompletionChanged();
100 Q_SIGNAL
void hideDelayChanged();
101 Q_SIGNAL
void popupItemChanged();
102 Q_SIGNAL
void overlayItemChanged();
103 Q_SIGNAL
void overlayGeometryChanged();
106 void focusInEvent(QFocusEvent* event)
override;
107 void focusOutEvent(QFocusEvent* event)
override;
108 void keyPressEvent(QKeyEvent* event)
override;
109 void mousePressEvent(QMouseEvent* event)
override;
110 void mouseReleaseEvent(QMouseEvent* event)
override;
111 void wheelEvent(QWheelEvent* event)
override;
112 bool childMouseEventFilter(QQuickItem* item, QEvent* event)
override;
113 void itemChange(ItemChange change,
const ItemChangeData& value)
override;
116 void setEntering(
bool value);
117 void setOpened(
bool value);
118 void setClosing(
bool value);
120 void updateInputAcceptance();
123 void setFocusReason(Qt::FocusReason reason);
124 bool isVisualFocusReason(Qt::FocusReason reason)
const;
125 void updateOverlayItem();
126 void setOverlayItem(QQuickItem* item);
127 void useOverlayParent();
128 void restoreParentItem();
129 bool containsPopup(
const QPointF& point)
const;
130 bool containsParent(
const QPointF& point)
const;
131 bool tryClose(
const QPointF& point, ClosePolicy flags);
132 bool handlePress(
const QPointF& point, QEvent* event);
133 bool handleRelease(
const QPointF& point, QEvent* event);
134 bool blockInput(
const QPointF& point, QEvent* event)
const;
137 bool m_opened {
false };
138 bool m_entering {
false };
139 bool m_closing {
false };
140 bool m_modal {
false };
141 bool m_dim {
false };
142 bool m_fullScreen {
false };
143 bool m_deferredCompletion {
false };
144 bool m_outsidePressed {
false };
145 bool m_outsideParentPressed {
false };
146 Qt::FocusReason m_focusReason { Qt::OtherFocusReason };
147 ClosePolicy m_closePolicy { CloseOnEscape | CloseOnPressOutside };
148 int m_hideDelay { 0 };
149 QPointer<QQuickItem> m_popupItem;
150 QPointer<QQuickItem> m_overlayItem;
151 QPointer<QQuickItem> m_previousFocusItem;
152 QPointer<QQuickItem> m_previousParentItem;
153 QPointF m_previousPosition;
154 QPointF m_pressPoint;
155 bool m_parentItemStored {
false };
161Q_DECLARE_OPERATORS_FOR_FLAGS(qml_material::Popup::ClosePolicy)