Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qohoswindowproxy.h
Go to the documentation of this file.
1// Copyright (C) 2025 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QOHOSWINDOWPROXY_H
5#define QOHOSWINDOWPROXY_H
6
7#include <QtCore/private/qnapi_p.h>
8#include <QtCore/private/qohoscommon_p.h>
9#include <QtCore/qflags.h>
10#include <QtCore/qglobal.h>
11#include <QtCore/qharmonyjsobjectref.h>
12#include <QtCore/qobject.h>
13#include <QtCore/qpoint.h>
14#include <QtCore/qpointer.h>
15#include <QtCore/qrect.h>
16#include <QtCore/qsize.h>
17#include <QtGui/qcolor.h>
18#include <QtGui/qeventpoint.h>
19#include <QtGui/qwindow.h>
20#include <functional>
21#include <cstdint>
22#include <memory>
23#include <optional>
24#include <qarkui/input.h>
25#include <qarkui/window.h>
26#include <qohosdisplayinfo.h>
27#include <qohosjsscopedataowner.h>
28#include <qohosplugincore.h>
29#include <qohosqpaenums.h>
30#include <qohosutils.h>
31#include <render/qohoswindowproxydatafactory.h>
32#include <render/qxcomponent.h>
33#include <set>
34
36
37class QOhosWindowProxy final
38{
39public:
41
43
45
47
49
51
56
61
63 {
64 std::optional<double> minWidth;
65 std::optional<double> minHeight;
66 std::optional<double> maxWidth;
67 std::optional<double> maxHeight;
68 };
69
78
84
89
91 {
92 std::optional<QOhosDisplayInfo::JsDisplayId> displayId;
93 };
94
104
114
116 {
117 std::optional<bool> focusOnShow;
118 };
119
121
133
138
139 static std::shared_ptr<QOhosWindowProxy> createMainWindow(const MainWindowCreateInfo &createInfo);
140 static std::shared_ptr<QOhosWindowProxy>
142 static std::shared_ptr<QOhosWindowProxy> createFloatWindow(const FloatWindowCreateInfo &createInfo);
143
144 QOhosWindowProxy(const QOhosWindowProxy &) = delete;
145 QOhosWindowProxy(QOhosWindowProxy &&) = delete;
146 QOhosWindowProxy &operator=(const QOhosWindowProxy &) = delete;
147 QOhosWindowProxy &operator=(QOhosWindowProxy &&) = delete;
148
150
152 const QPoint &position, std::optional<QOhosDisplayInfo::JsDisplayId> optDisplayId);
153
154 void setSize(const QSize &size);
155 void moveWindowToGlobal(const QPoint &position, const MoveConfiguration &moveConfiguration);
156 void setWindowBackgroundColor(const QColor &color);
157 void setCustomCursor(const QImage &customCursorImage, const QPoint &hotSpot);
158 void setPointerStyleSync(const QCursor &cursor);
159 void setWindowPrivacyMode(bool privacyMode);
160 void setWindowFocusable(bool focusable);
161 void setWindowTouchable(bool touchable);
162 void setWindowLimits(const QSize &minSize, const QSize &maxSize);
163 void setWindowMask(
164 const WindowMask &windowMask, const std::optional<QSize> &ohosMaskSizeOverride = {});
166 void setSubWindowModalEnabled(ModalityType ModalityType);
167 void setTitle(const QString &title);
168 void setWindowTitleButtonVisible(bool maximizeVisible, bool minimizeVisible, bool closeVisible);
169 void setWindowTopmost(bool topmost);
170 void setWindowDecorVisible(bool visible);
171 void setWindowTitleMoveEnabled(bool enabled);
172 void setWindowShadowRadius(double radius);
173 void setWindowCornerRadius(double radius);
174 void setWindowRectAutoSave(bool enabed);
175 bool isWindowRectAutoSave() const;
176 void setFollowParentMultiScreenPolicy(bool enabled);
177 void setWindowKeepScreenOn(bool keepScreenOn);
178
179 void setSupportedWindowModes(const std::set<SupportWindowMode> &supportedWindowModes);
180
181 void setSubWindowCloseHandler(std::function<void()> handler, bool handlerReturnValue);
183
184 void raiseToAppTop();
185 void showWindow(const ShowWindowOptions &options = ShowWindowOptions());
186 void recover();
187 void restore();
188 bool tryMaximize(MaximizePresentation maximizePresentation);
189 void minimize();
190 void setWindowLayoutFullScreen(bool isLayoutFullScreen);
191 void setWindowSystemBarEnable(const QStringList &names);
193 void showAbility();
194 bool tryHideAbility();
197 QPixmap snapshot() const;
198 bool startMoving();
199 void enableDrag(bool enable);
200
201 std::optional<bool> isFocused() const;
202
204 void setWindowCallbackReceiver(std::unique_ptr<WindowCallbacks> receiver);
206 QObject *contextObject, QOhosConsumer<std::vector<NonClientAreaMouseEvent>> mouseEventBatchConsumer);
208 QObject *contextObject, QOhosConsumer<std::vector<NonClientAreaTouchEvent>> touchEventBatchConsumer);
209
210 std::shared_ptr<QOhosWindowProxy> createSubWindow(const SubWindowCreateInfo &createInfo);
211
212 bool qtIsMainWindow() const;
213 bool isSubWindowMaximizeSupported() const;
216 std::shared_ptr<QXComponentNode> nodeXComponent() const;
217 std::string qAbilityInstanceId() const;
220
222 QOhosDisplayInfo::JsDisplayId displayId, const QPoint &queryLocation,
223 std::uint32_t queryLimit = 0);
225 const std::function<bool(QOhosJsState &jsState, const QArkUi::JsWindowRef &)> &predicate);
226
227 std::optional<QOhosDisplayInfo::JsDisplayId> tryGetMainWindowJsDisplayId() const;
228 void shiftAppWindowFocus(QOhosWindowProxy &targetProxy);
229
230private:
231 enum class EventHandlerFlagBits
232 {
233 allowCallWhenAbilityIsTerminating = 1 << 0,
234 allowEventHandlerRegistrationFailure = 1 << 1,
235 };
236
237 struct JsScopeData : public std::enable_shared_from_this<JsScopeData>
238 {
247
248 JsScopeData();
249 JsScopeData(
250 WindowProxyType windowProxyType, QNapi::Reference<QNapi::Object> jsWindow,
251 std::shared_ptr<void> optKeepAliveData,
252 std::shared_ptr<QtOhos::QAbilityPeer> qAbilityPeer,
253 QtOhos::QObjectThreadSafeRef owningQWindowRef);
254 JsScopeData(JsScopeData &&) = default;
255 JsScopeData &operator=(JsScopeData &&) = default;
256 ~JsScopeData();
257 JsScopeData(const JsScopeData &) = delete;
258 JsScopeData &operator=(const JsScopeData &) = delete;
259
260 std::shared_ptr<void> registerEventListener(
261 const std::string &eventName,
262 void (JsScopeData::*handleFunctions)(const QtOhos::CallbackInfo &),
263 QFlags<EventHandlerFlagBits> eventHandlerFlags);
264 std::shared_ptr<void> registerSubWindowCloseHandler(
265 QOhosJsState &jsState,
266 std::function<bool()> handler);
267 void handleWindowEventCallback(const QtOhos::CallbackInfo &cbInfo);
268 void handleWindowStatusCallback(const QtOhos::CallbackInfo &cbInfo);
269 void handleWindowVisibilityCallback(const QtOhos::CallbackInfo &cbInfo);
270 void handleWindowSizeChangeCallback(const QtOhos::CallbackInfo &cbInfo);
271 void handleWindowTouchOutsideCallback(const QtOhos::CallbackInfo &cbInfo);
272 void handleAvoidAreaChangeCallback(const QtOhos::CallbackInfo &cbInfo);
273 void handleWindowRectChangeCallback(const QtOhos::CallbackInfo &cbInfo);
274 void handleWindowRectChangeInGlobalDisplayCallback(const QtOhos::CallbackInfo &cbInfo);
275 void handleWindowDisplayIdChangeCallback(const QtOhos::CallbackInfo &cbInfo);
276 void onWindowEvent(QtOhos::JsState &jsState, const WindowEvent &windowEvent);
277 bool isWindowClosing() const;
278
279 WindowProxyType windowProxyType = {};
280 std::shared_ptr<WindowCallbacks> windowCallbackReceiver;
281 bool windowDestroyedFromSystem = false;
282 std::shared_ptr<void> optKeepAliveData;
283 std::shared_ptr<QtOhos::QAbilityPeer> qAbilityPeer;
284 std::shared_ptr<NonClientAreaEventsDispatcher> nonClientAreaEventsDispatcher;
285 std::shared_ptr<void> m_windowFrameMouseFilterHandle;
286 std::shared_ptr<void> m_windowFrameTouchFilterHandle;
287 std::shared_ptr<void> m_eventListenersHandle;
288 std::shared_ptr<QArkUi::JsWindowRef> jsWindowRef;
289 };
290
291 struct EventHandlerDescriptor
292 {
293 const char *eventName;
294 void (JsScopeData::*eventHandler)(const QtOhos::CallbackInfo &);
295 QFlags<EventHandlerFlagBits> eventHandlerFlags;
296 };
297
298 struct JsThreadInitResult
299 {
300 WindowProxyType windowProxyType;
301 bool subWindowMaximizeSupported;
302 std::shared_ptr<QXComponentNode> nodeXComponent;
303 std::string qAbilityInstanceId;
304 QHarmonyJsObjectRef abilityObjectRef;
305 QHarmonyJsObjectRef jsWindowObjectRef;
306 std::shared_ptr<void> jsWindowRegistrationHandle;
307 };
308
309 QOhosWindowProxy(
310 const std::function<void(QtOhos::JsState &, QOhosConsumer<QtOhos::JsState &, QOhosWindowProxyData>)> &makeWindowProxyDataInJsThread);
311 JsThreadInitResult initInJsThread(QtOhos::JsState &jsState, QOhosWindowProxyData windowProxyData);
312
313 std::shared_ptr<void> registerSubWindowCloseHandler(
314 std::function<void()> handler,
315 bool handlerReturnValue);
316
317 static const EventHandlerDescriptor eventHandlerDescriptors[];
318
319 QtOhos::JsScopeDataOwner<JsScopeData> m_jsScopeData;
320 WindowProxyType m_windowProxyType;
321 bool m_subWindowMaximizeSupported;
322 std::shared_ptr<QXComponentNode> m_nodeXComponent;
323 std::string m_qAbilityInstanceId;
324 QHarmonyJsObjectRef m_abilityObjectRef;
325 QHarmonyJsObjectRef m_jsWindowObjectRef;
326 std::shared_ptr<void> m_jsWindowRegistrationHandle;
327 std::shared_ptr<void> m_subWindowCloseRegistrationHandle;
328 std::shared_ptr<void> m_qtWindowCallbacksReceiverHandle;
329 std::shared_ptr<void> m_qtNonClientAreaMouseWindowCallbackReceiverHandle;
330 std::shared_ptr<void> m_qtNonClientAreaTouchWindowCallbackReceiverHandle;
331};
332
334
337Q_DECLARE_METATYPE(QOhosWindowProxy::AvoidArea);
339
340#endif
void setSizeParentFillPercentNormalized(const QSizeF &size)
void setSaturation(int saturation)
QRectF geometry() const
void setTransparentForInput(bool transparentForInput)
void fillToParent()
void setNodeAreaChangeHandler(QOhosConsumer< QArkUi::QQtEmbeddedWindowNode::NodeAreaInfo > areaChangeEventConsumer)
void setPosition(QPoint position)
void setContrast(int contrast)
QRect nodeParentRelativeGeometryPixels() const
void enableDropDisallowedBadge()
void setNodeVisibilityChangeHandler(QOhosConsumer< bool > visibilityChangedConsumer)
void detachFromParentIfPresent()
QOhosSurface * surfaceOrNull() const
void setFocused(bool focused)
void setBackgroundColor(const QColor &color)
QRect nodeScreenGeometryPixels() const
void setVisibility(bool visible)
void externalContentClickDetected()
QArkUi::QQtEmbeddedWindowNode::NodeAreaInfo nodeAreaInfo() const
void setNodeFocusChangeHandler(QOhosConsumer< bool > focusedChangedConsumer)
QNativeNode(const CreateInfo &nativeNodeCreateInfo)
WId windowId() const
void addForeignWindowChild(QOhosForeignWindow *foreignWindow)
void setSize(const QSizeF &size)
void setFocusable(bool focusable)
void setBrightness(int brightness)
void setParent(std::shared_ptr< QXComponentNode > xComponent)
void setParent(QNativeNode &other)
QArkUi::QEmbeddedWindowNode & embeddedWindowNodeInJsThread()
QOhosForeignWindow(QWindow *qWindow, WId windowId)
void initialize() override
Called as part of QWindow::create(), after constructing the window.
void setVisible(bool visible) override
Reimplemented in subclasses to show the surface if visible is true, and hide it if visible is false.
WId winId() const override
Reimplement in subclasses to return a handle to the native window.
void setGeometry(const QRect &unscaledGeometry) override
This function is called by Qt whenever a window is moved or resized using the QWindow API.
void setParent(const QPlatformWindow *window) override
This function is called to enable native child window in QPA.
bool isForeignWindow() const override
QMargins frameMargins() const override
static const QOhosPropertyDescriptor< bool > windowKeepScreenOnProperty
static const QOhosPropertyDescriptor< QColor > surfaceBackgroundColorProperty
void setWindowTitle(const QString &title) override
Reimplement to set the window title to title.
QOhosPlatformScreen * platformScreen() const
bool mainWindowTagValueOrFalse() const
Qt::WindowStates windowStates() const
std::optional< QCursor > m_cursor
void setDisplayIdFromOhos(std::optional< QOhosDisplayInfo::JsDisplayId > displayId)
bool setMouseGrabEnabled(bool grab) override
static std::optional< T > tryGetWindowOrWidgetProperty(QObject *windowOrWidget)
void setWindowStateFromOhos(Qt::WindowStates state)
static const QOhosPropertyDescriptor< int > windowBrightnessProperty
static const QOhosPropertyDescriptor< bool > mainWindowTagProperty
static const QOhosPropertyDescriptor< QWindow * > subWindowOfTagProperty
void setGeometry(const QRect &rect) override
This function is called by Qt whenever a window is moved or resized using the QWindow API.
bool setKeyboardGrabEnabled(bool grab) override
static const QOhosPropertyDescriptor< bool > windowPrivacyModeSettingProperty
bool windowEvent(QEvent *event) override
Reimplement this method to be able to do any platform specific event handling.
QtOhos::InternalWindowId m_windowId
static const QOhosPropertyDescriptor< double > windowCornerRadiusProperty
static bool isWindowBeingClosedOrDestroyed(QWindow *window)
static std::shared_ptr< void > setSurfaceConsumer(QWindow *targetWindow, QObject *surfaceConsumerContext, std::function< void(std::optional< void * >)> surfaceConsumer)
QRect lastRequestedWindowFrameGeometry() const
QMargins safeAreaMargins() const override
The safe area margins of a window represent the area that is safe to place content within,...
static const QOhosPropertyDescriptor< int > windowSaturationProperty
void setExposedFromOhos(bool exposed)
static const QOhosPropertyDescriptor< int > windowContrastProperty
static QOhosPlatformWindow * fromQWindow(QWindow *window)
QOhosPropertiesProvider propertiesProvider()
static const QOhosPropertyDescriptor< bool > floatWindowTagProperty
void setVisible(bool visible) override
Reimplemented in subclasses to show the surface if visible is true, and hide it if visible is false.
static void tagWindowOrWidgetAsFloatWindow(QObject *windowOrWidgetToTag, bool showAsFloatWindow)
static const QOhosPropertyDescriptor< bool > windowDragResizableProperty
static void tagWindowOrWidgetAsSubWindowOf(QObject *windowOrWidgetToTag, QWindow *targetMainWindow)
virtual void onWindowFlagsChanged(Qt::WindowFlags previousWindowFlags, Qt::WindowFlags currentWindowFlags)
QtOhos::InternalWindowId internalWindowId() const
static void tagWindowOrWidgetAsMainWindow(QObject *windowOrWidgetToTag, bool forceMainWindow)
Qt::WindowFlags m_windowFlags
void propagateSizeHints() override
Reimplement to propagate the size hints of the QWindow.
static QOhosPlatformWindow * fromQWindowOrNull(QWindow *window)
virtual QOhosSurface * ownedSurfaceOrNull() const
static QWindow * getWindowOrWidgetAsSubWindowOfTagValue(QObject *windowOrWidget)
virtual void onWindowStateChanged(Qt::WindowStates oldWindowState, Qt::WindowStates currentWindowState)
void setParent(const QPlatformWindow *newParent) override
This function is called to enable native child window in QPA.
QOhosPlatformWindow(QWindow *window)
void setCursor(const QCursor &cursor)
std::optional< Qt::WindowStates > m_lastWindowState
bool shouldDisplayAsOhosWindow() const
static const QOhosPropertyDescriptor< int > nativeNodeRenderFitPolicyHintProperty
std::unique_ptr< QMargins > m_optFrameMargins
void setWindowGeometryFromOhos(const QRect &nativeWindowDrawGeometry)
std::optional< double > windowId() const override
QHarmonyJsObjectRef ability() const override
QMargins frameMargins() const override
void initialize() override
Called as part of QWindow::create(), after constructing the window.
void setSafeAreaMarginsFromOhos(const QMargins &margins)
QPlatformScreen * screen() const override
QSize lastReportedWindowSize() const
void setWindowFlags(Qt::WindowFlags flags) override
Requests setting the window flags of this surface to flags.
bool floatWindowTagValueOrFalse() const
void setWindowState(Qt::WindowStates state) override
Requests setting the window state of this surface to type.
void notifyInputSystemsWindowActiveStatusChanged(bool active)
static const QOhosPropertyDescriptor< bool > windowFixedSizeStateProperty
bool isExposed() const final
Returns if this window is exposed in the windowing system.
void requestActivateWindow() override
Reimplement to let Qt be able to request activation/focus for a window.
Qt::WindowStates m_windowState
DecorationPreset decorationPreset() const
QWindow * validSubWindowOfTagValueOrNull() const
Qt::WindowFlags windowFlags() const
static void setWindowOrWidgetProperty(QObject *windowOrWidget, T propertyValue)
bool shouldShowWindowWithoutActivating() const
QHarmonyJsObjectRef jsWindow() const override
virtual QOhosView * ownedViewOrNull() const
static bool isEmbeddedWindow(QWindow *window)
void setWindowMarginsFromOhos(const QMargins &margins)
static Qt::WindowFlags platformWindowFlagsForQWindow(QWindow *window)
QOhosPropertiesProvider(QOhosPropertiesStore &store)
std::optional< T > tryGetProperty() const
std::shared_ptr< void > addPropertyWriteCallback(QOhosConsumer< T > propertyWriteCallback)
QOhosPropertiesStore(QObject *qObject)
std::shared_ptr< void > addPropertyWriteCallback(QOhosConsumer< T > propertyWriteCallback)
std::optional< T > tryGetProperty() const
void notifyPropertyWrite(const QByteArray &propertyName)
bool isWindowPcModeEnabled() const
static QOhosSettings & instance()
double fontSizeScale() const
QOhosSettings(const QOhosSettings &)=delete
QOhosSettings(QOhosSettings &&)=delete
QOhosSettings & operator=(const QOhosSettings &)=delete
QOhosSettings & operator=(QOhosSettings &&)=delete
void setExtraUsageBitsForNativeWindowBuffer(std::uint64_t usageSetBits)
::OHNativeWindow * nativeWindow() const
static constexpr ::OH_NativeBuffer_Format bufferFormat
void paintOnNativeWindowSurface(std::function< std::vector<::Region::Rect >(QImage &, ::BufferHandle *)> paintFunc, std::function< void(::BufferHandle *)> onFlushSuccessFunc)
static std::optional< QSize > tryGetBufferGeometryForWindow(::OHNativeWindow *nativeWindow)
void setNativeWindowSurface(::OHNativeWindow *nativeWindow, const std::optional< QSize > &optSurfaceSize)
static QImage::Format mapNativeBufferFormatToQImageFormatOrFail(std::int32_t format)
std::optional< QSize > surfaceResolution() const
QOhosSurface(::OHNativeWindow *nativeWindow)
EGLSurface tryGetOrCreateEGLWindowSurface(EGLDisplay display, EGLConfig config, bool swappingBuffers)
void clearNativeWindowSurface()
void windowStatusChange(QOhosWindowProxy::WindowStatus windowStatus)
void setParentOrReparent(QOhosView &parentView)
void requestActivate()
bool consumePendingSelfMinimizeEcho()
void setCursor(const QCursor &cursor)
void handleWindowFlagsChange(Qt::WindowFlags previousWindowFlags, Qt::WindowFlags currentWindowFlags)
void addForeignWindowChild(QOhosForeignWindow *foreignWindow)
void handleWindowStateChange(Qt::WindowStates previousWindowState, Qt::WindowStates currentWindowState)
void restoreMainWindow()
void setFocusable(bool focusable)
QArkUi::QQtEmbeddedWindowNode::NodeAreaInfo nodeAreaInfo() const
QOhosSurface * surfaceOrNull() const
void windowVisibilityChange(bool visibility)
void setPositionOnScreenImmediate(const QPoint &position, QOhosDisplayInfo::JsDisplayId jsDisplayId)
QList< QRect > displayCutoutRects() const
void setTransparentBackground(bool transparent)
void setModality(Qt::WindowModality modality)
WId viewWindowId() const
bool isFullscreenImmersiveModeEnabled()
void setFramelessWindow(bool frameless)
QPixmap makeSnapshot() const
void setWindowShadowDisabled()
void setWindowTransparentForInput(bool transparentForInput)
void tryDetachFromEmbeddedParent()
ViewType viewType() const
QMargins avoidAreaMargins(QOhosWindowProxy::AvoidAreaType type) const
QWindow * ownerWindow() const
void handleSurfaceContentsUpdated()
void hide()
WindowStateSyncReason
Definition qohosview.h:91
void windowRectChanged(QOhosWindowProxy::RectChangeOptions rectChangeOptions)
void windowRectChangedInGlobalDisplay(QOhosWindowProxy::RectChangeOptions rectChangeOptions)
void forceGeometryUpdate()
void externalContentInteractionDetected()
void setWindowMinMaxCloseButtonState(const WindowMinMaxCloseButtonsState &state)
void setWindowMask(const QOhosWindowProxy::WindowMask &windowMask)
void setSizeLimits(const QSize &minSize, const QSize &maxSize)
std::optional< QSize > surfaceResolution() const
QHarmonyJsObjectRef abilityObjectRef() const
void windowTouchOutside()
void nodeAreaChanged(QArkUi::QQtEmbeddedWindowNode::NodeAreaInfo areaChangeEvt)
void handlePaletteChange()
void lower()
void windowDisplayIdChanged(QOhosDisplayInfo::JsDisplayId)
static std::unique_ptr< QOhosView > createForWindow(QOhosPlatformWindow *window, QOhosPropertiesProvider windowPropertiesProvider)
void minimize()
void setOpacity(qreal opacity)
void setNativeNodeVisibility(bool visible)
QHarmonyJsObjectRef jsWindowObjectRef() const
void setWindowStaysOnTop(bool staysOnTop)
void setFullScreen()
void maximize()
ViewGeometry viewGeometry() const
void avoidAreaChanged(QOhosWindowProxy::AvoidAreaType avoidAreaType, const QOhosWindowProxy::AvoidArea &avoidArea)
void setSize(const QSize &size)
void recover()
bool startMoving()
void setPosition(const QPoint &position)
QOhosView(QWindow *ownerWindow, QSharedPointer< QNativeNode > nativeNode, QOhosPropertiesProvider propertiesProvider)
bool isSubWindowCoveringFullScreen() const
void showImmediate()
void surfaceStatusChanged(const std::optional< QSize > &optSurfaceSize)
QRect nodeParentRelativeGeometryPixels() const
void setTitle(const QString &title)
void startDrag(const std::vector< QImage > &images, const QPointF &hotspot, const QMimeData &mimeData, QOhosConsumer< Qt::DropAction > dropActionConsumer)
const QOhosView * viewParentOrNull() const
QRect nodeScreenGeometryPixels() const
void raise()
void setWindowRectAutoSave(bool enabed)
QHarmonyJsObjectRef jsWindowObjectRef() const
void setSubWindowModalEnabled(ModalityType ModalityType)
QtOhosQpa::enums::ohos::window::MaximizePresentation MaximizePresentation
bool isSubWindowMaximizeSupported() const
void setWindowKeepScreenOn(bool keepScreenOn)
void moveWindowToGlobal(const QPoint &position, const MoveConfiguration &moveConfiguration)
static std::shared_ptr< QOhosWindowProxy > createFloatWindow(const FloatWindowCreateInfo &createInfo)
void setWindowMask(const WindowMask &windowMask, const std::optional< QSize > &ohosMaskSizeOverride={})
QArkUi::WindowProperties getWindowProperties() const
void moveWindowToGlobalOrGlobalDisplay(const QPoint &position, std::optional< QOhosDisplayInfo::JsDisplayId > optDisplayId)
void setWindowPrivacyMode(bool privacyMode)
QOhosWindowProxy(const QOhosWindowProxy &)=delete
QtOhosQpa::enums::ohos::window::WindowEventType WindowEventType
QOhosWindowProxy(QOhosWindowProxy &&)=delete
AvoidArea getWindowAvoidArea(AvoidAreaType type) const
void setWindowLayoutFullScreen(bool isLayoutFullScreen)
std::optional< QOhosDisplayInfo::JsDisplayId > tryGetMainWindowJsDisplayId() const
QtOhosQpa::enums::ohos::bundle::bundleManager::SupportWindowMode SupportWindowMode
void enableDrag(bool enable)
void setWindowCornerRadius(double radius)
QOhosWindowProxyExistingMainWindowCreateInfo ExistingMainWindowCreateInfo
void setSupportedWindowModes(const std::set< SupportWindowMode > &supportedWindowModes)
bool tryMaximize(MaximizePresentation maximizePresentation)
void setWindowSystemBarEnable(const QStringList &names)
std::shared_ptr< QOhosWindowProxy > createSubWindow(const SubWindowCreateInfo &createInfo)
QPixmap snapshot() const
static std::shared_ptr< QOhosWindowProxy > createForExistingMainWindow(const ExistingMainWindowCreateInfo &createInfo)
void setWindowTouchable(bool touchable)
void setTitle(const QString &title)
void setFollowParentMultiScreenPolicy(bool enabled)
void setWindowTopmost(bool topmost)
std::shared_ptr< QXComponentNode > nodeXComponent() const
void setWindowCallbackReceiver(std::unique_ptr< WindowCallbacks > receiver)
static std::vector< QArkUi::JsWindowId > queryWindowIdsByCoordinate(QOhosDisplayInfo::JsDisplayId displayId, const QPoint &queryLocation, std::uint32_t queryLimit=0)
void setSubWindowCloseHandler(std::function< void()> handler, bool handlerReturnValue)
std::optional< bool > isFocused() const
QtOhosQpa::enums::ohos::window::ModalityType ModalityType
void setWindowLimits(const QSize &minSize, const QSize &maxSize)
bool isWindowRectAutoSave() const
void setWindowDecorVisible(bool visible)
void showWindow(const ShowWindowOptions &options=ShowWindowOptions())
QtOhosQpa::enums::ohos::window::RectChangeReason RectChangeReason
void shiftAppWindowFocus(QOhosWindowProxy &targetProxy)
QOhosWindowProxySubWindowCreateInfo SubWindowCreateInfo
void setNonClientAreaMouseWindowCallbackReceiver(QObject *contextObject, QOhosConsumer< std::vector< NonClientAreaMouseEvent > > mouseEventBatchConsumer)
QtOhosQpa::enums::ohos::window::AvoidAreaType AvoidAreaType
void setCustomCursor(const QImage &customCursorImage, const QPoint &hotSpot)
void setWindowTitleMoveEnabled(bool enabled)
void setWindowFocusable(bool focusable)
void setWindowBackgroundColor(const QColor &color)
void setSize(const QSize &size)
QOhosWindowProxyMainWindowCreateInfo MainWindowCreateInfo
void setWindowShadowRadius(double radius)
bool qtIsMainWindow() const
QOhosWindowProxyFloatWindowCreateInfo FloatWindowCreateInfo
void setWindowTitleButtonVisible(bool maximizeVisible, bool minimizeVisible, bool closeVisible)
void setPointerStyleSync(const QCursor &cursor)
QList< QRect > getDisplayCutoutRects() const
QtOhosQpa::enums::ohos::window::WindowStatusType WindowStatusType
QOhosWindowProxy & operator=(const QOhosWindowProxy &)=delete
static std::vector< QArkUi::JsWindowId > queryQtManagedWindowIdsByPredicate(const std::function< bool(QOhosJsState &jsState, const QArkUi::JsWindowRef &)> &predicate)
QOhosWindowProxy & operator=(QOhosWindowProxy &&)=delete
WindowLimits getWindowLimits() const
std::string qAbilityInstanceId() const
QHarmonyJsObjectRef abilityObjectRef() const
void setNonClientAreaTouchWindowCallbackReceiver(QObject *contextObject, QOhosConsumer< std::vector< NonClientAreaTouchEvent > > touchEventBatchConsumer)
static std::shared_ptr< QOhosWindowProxy > createMainWindow(const MainWindowCreateInfo &createInfo)
bool sendEvent(WindowSystemEvent *event) override
JsScopeDataOwner(const JsScopeDataOwner &)=delete
JsScopeData & operator*() const
JsScopeData * operator->() const
JsScopeDataOwner & operator=(const JsScopeDataOwner &)=delete
void addAsyncCleanup(std::function< void(QOhosJsState &, JsScopeData &, QOhosTaskPromise<>)> cleanupFunc)
JsScopeDataOwner & operator=(JsScopeDataOwner &&)=delete
JsScopeDataOwner(JsScopeDataOwner &&)=delete
Combined button and popup list for selecting options.
QOhosView * mapQWindowToViewOrNull(QWindow *window)
bool isJsThread()
std::optional< T > tryMapFromQVariant(QVariant variant)
std::shared_ptr< QWindowSystemEventHandler > makeApplicationStateTracker()
bool isHandheldDeviceType()
constexpr QOhosRuntimeDeviceTypeAndMode operator|(QOhosRuntimeDeviceTypeAndMode lhs, QOhosRuntimeDeviceTypeAndMode rhs)
QOhosRuntimeDeviceTypeAndMode queryQOhosRuntimeDeviceAndMode()
void setQOhosPropertyOnQObject(QObject *qObject, T propertyValue)
std::optional< T > tryGetQOhosPropertyFromQObject(QObject *qObject)
Q_DECLARE_METATYPE(QOhosWindowProxy::RectChangeOptions)
QT_END_NAMESPACE Q_DECLARE_METATYPE(QOhosWindowProxy::WindowEvent)
Q_DECLARE_METATYPE(QOhosWindowProxy::AvoidArea)
Q_DECLARE_METATYPE(QOhosWindowProxy::WindowStatus)
QXComponent< QXComponentType::Node > QXComponentNode
Definition qxcomponent.h:44
bool disableWindowFocusableBeforeLoadContent
Definition qohosview.h:65
std::optional< QOhosDisplayInfo::JsDisplayId > displayId
Definition qohosview.h:76
bool operator==(const WindowMinMaxCloseButtonsState &other) const
bool operator!=(const WindowMinMaxCloseButtonsState &other) const
QOhosConsumer< NonClientAreaMouseEvent > mouseEventsConsumer
void onTouchEventFromArkUi(const QArkUi::TouchEvent &event) const
void onMouseEventFromArkUi(const QArkUi::MouseEvent &event) const
QOhosConsumer< NonClientAreaTouchEvent > touchEventsConsumer
std::optional< QOhosDisplayInfo::JsDisplayId > displayId
QOhosConsumer< QOhosWindowProxy::AvoidAreaType, QOhosWindowProxy::AvoidArea > onAvoidAreaChange
QOhosConsumer< QOhosDisplayInfo::JsDisplayId > onWindowDisplayIdChange
QOhosConsumer< QOhosWindowProxy::RectChangeOptions > onWindowRectChange
QOhosConsumer< QOhosWindowProxy::RectChangeOptions > onWindowRectChangeInGlobalDisplay
std::function< void()> onTouchOutside
QOhosConsumer< QOhosWindowProxy::WindowStatus > onWindowStatusChange
QOhosConsumer< QOhosWindowProxy::WindowEvent > onWindowEvent
QOhosConsumer< bool > onWindowVisibilityChange
std::optional< double > maxWidth
std::optional< double > minWidth
std::optional< double > minHeight
std::optional< double > maxHeight