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
qohosdragaction.cpp
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#include <QtCore/private/qohoscommon_p.h>
5#include <QtCore/private/qohoslogger_p.h>
6#include <qarkui/qarkuiutils.h>
7#include <qarkui/qohosdragaction.h>
8#include <qohospixelmapconversions.h>
9#include <qohosutils.h>
10
12
13namespace QArkUi {
14
23
24void DragAction::setPointerId(std::int32_t pointerId)
25{
26 QArkUi::callArkUiOrFailOnErrorResult(
27 Q_OHOS_NAMED_FUNC(::OH_ArkUI_DragAction_SetPointerId),
28 m_dragAction.get(), pointerId);
29}
30
31void DragAction::setTouchPoint(float touchX, float touchY)
32{
33 QArkUi::callArkUiOrFailOnErrorResult(
34 Q_OHOS_NAMED_FUNC(::OH_ArkUI_DragAction_SetTouchPointX),
35 m_dragAction.get(), touchX);
36 QArkUi::callArkUiOrFailOnErrorResult(
37 Q_OHOS_NAMED_FUNC(::OH_ArkUI_DragAction_SetTouchPointY),
38 m_dragAction.get(), touchY);
39}
40
41void DragAction::setPixelMaps(std::vector<std::shared_ptr<::OH_PixelmapNative>> pixelMaps)
42{
43 m_pixelMaps = std::move(pixelMaps);
44 m_pixelMapsPointers.resize(m_pixelMaps.size() + 1);
45
46 for (std::size_t i = 0; i < m_pixelMaps.size(); ++i)
47 m_pixelMapsPointers[i] = m_pixelMaps[i].get();
48 m_pixelMapsPointers[m_pixelMaps.size()] = nullptr;
49
50 QArkUi::callArkUiOrFailOnErrorResult(
51 Q_OHOS_NAMED_FUNC(::OH_ArkUI_DragAction_SetPixelMaps),
52 m_dragAction.get(), m_pixelMapsPointers.data(), m_pixelMaps.size());
53}
54
56{
57 m_udmfData = QtOhos::moveToSharedPtr(std::move(udmfData));
58
59 QArkUi::callArkUiOrFailOnErrorResult(
60 Q_OHOS_NAMED_FUNC(::OH_ArkUI_DragAction_SetData),
61 m_dragAction.get(), m_udmfData->nativePtr());
62}
63
65 std::function<void(::ArkUI_DragAndDropInfo *)> statusListener)
66{
68
69 auto sharedStatusListener = QtOhos::moveToSharedPtr(std::move(statusListener));
70
71 m_statusListenerRegistrationHandle = QtOhos::makeDestroyNotifier(
72 [sharedStatusListener, weakDragAction = QtOhos::makeWeakPtr(m_dragAction)]() {
73 auto dragAction = weakDragAction.lock();
74 if (dragAction) {
75 QArkUi::callArkUi(
76 Q_OHOS_NAMED_FUNC(::OH_ArkUI_DragAction_UnregisterStatusListener),
77 dragAction.get());
78 }
79 });
80
81 QArkUi::callArkUiOrFailOnErrorResult(
82 Q_OHOS_NAMED_FUNC(::OH_ArkUI_DragAction_RegisterStatusListener),
83 m_dragAction.get(), sharedStatusListener.get(),
84 [](::ArkUI_DragAndDropInfo *dragAndDropInfo, void *statusListenerVoidPtr) {
85 auto *statusListener = static_cast<std::function<void(::ArkUI_DragAndDropInfo *)> *>(statusListenerVoidPtr);
86 (*statusListener)(dragAndDropInfo);
87 });
88}
89
91{
92 m_statusListenerRegistrationHandle.reset();
93}
94
95void DragAction::setDragPreviewOption(ArkUI_DragPreviewOption &option)
96{
97 QArkUi::callArkUiOrFailOnErrorResult(
98 Q_OHOS_NAMED_FUNC(::OH_ArkUI_DragAction_SetDragPreviewOption),
99 m_dragAction.get(), &option);
100}
101
103{
104 return m_dragAction.get();
105}
106
107}
108
109QT_END_NAMESPACE
void setTouchPoint(float x, float y)
void setPixelMaps(std::vector< std::shared_ptr<::OH_PixelmapNative > > pixelMaps)
::ArkUI_DragAction * nativePtr()
void setData(QOhosUdmfData udmfData)
void setStatusListener(std::function< void(::ArkUI_DragAndDropInfo *)> statusListener)
void setDragPreviewOption(ArkUI_DragPreviewOption &option)
void setPointerId(std::int32_t pointerId)
DragAction(::ArkUI_NodeHandle node)
Combined button and popup list for selecting options.