1 /*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 #include "node/event_converter.h"
16
17 #include "native_node.h"
18 #include "securec.h"
19
20 #include "base/log/log_wrapper.h"
21
22 namespace OHOS::Ace::NodeModel {
23
ConvertOriginEventType(ArkUI_NodeEventType type)24 ArkUI_Int32 ConvertOriginEventType(ArkUI_NodeEventType type)
25 {
26 switch (type) {
27 case NODE_TEXT_INPUT_ON_CHANGE:
28 return ON_TEXT_INPUT_CHANGE;
29 case NODE_SCROLL_EVENT_ON_SCROLL:
30 return ON_SCROLL;
31 case NODE_SCROLL_EVENT_ON_SCROLL_FRAME_BEGIN:
32 return ON_SCROLL_FRAME_BEGIN;
33 case NODE_SCROLL_EVENT_ON_SCROLL_START:
34 return ON_SCROLL_START;
35 case NODE_SCROLL_EVENT_ON_SCROLL_STOP:
36 return ON_SCROLL_STOP;
37 case NODE_EVENT_ON_APPEAR:
38 return ON_APPEAR;
39 case NODE_TEXT_AREA_ON_CHANGE:
40 return ON_TEXTAREA_CHANGE;
41 case NODE_ON_FOCUS:
42 return ON_FOCUS;
43 case NODE_ON_BLUR:
44 return ON_BLUR;
45 case NODE_TEXT_INPUT_ON_SUBMIT:
46 return ON_TEXT_INPUT_SUBMIT;
47 case NODE_REFRESH_STATE_CHANGE:
48 return ON_REFRESH_STATE_CHANGE;
49 case NODE_REFRESH_ON_REFRESH:
50 return ON_REFRESH_REFRESHING;
51 case NODE_SCROLL_EVENT_ON_SCROLL_EDGE:
52 return ON_SCROLL_EDGE;
53 case NODE_TOGGLE_ON_CHANGE:
54 return ON_TOGGLE_CHANGE;
55 default:
56 return -1;
57 }
58 }
59
ConvertToNodeEventType(ArkUIAsyncEventKind type)60 ArkUI_Int32 ConvertToNodeEventType(ArkUIAsyncEventKind type)
61 {
62 switch (type) {
63 case ON_TEXT_INPUT_CHANGE:
64 return NODE_TEXT_INPUT_ON_CHANGE;
65 case ON_SCROLL:
66 return NODE_SCROLL_EVENT_ON_SCROLL;
67 case ON_SCROLL_FRAME_BEGIN:
68 return NODE_SCROLL_EVENT_ON_SCROLL_FRAME_BEGIN;
69 case ON_SCROLL_START:
70 return NODE_SCROLL_EVENT_ON_SCROLL_START;
71 case ON_SCROLL_STOP:
72 return NODE_SCROLL_EVENT_ON_SCROLL_STOP;
73 case ON_APPEAR:
74 return NODE_EVENT_ON_APPEAR;
75 case ON_TEXTAREA_CHANGE:
76 return NODE_TEXT_AREA_ON_CHANGE;
77 case ON_FOCUS:
78 return NODE_ON_FOCUS;
79 case ON_BLUR:
80 return NODE_ON_BLUR;
81 case ON_TEXT_INPUT_SUBMIT:
82 return NODE_TEXT_INPUT_ON_SUBMIT;
83 case ON_REFRESH_STATE_CHANGE:
84 return NODE_REFRESH_STATE_CHANGE;
85 case ON_REFRESH_REFRESHING:
86 return NODE_REFRESH_ON_REFRESH;
87 case ON_SCROLL_EDGE:
88 return NODE_SCROLL_EVENT_ON_SCROLL_EDGE;
89 case ON_TOGGLE_CHANGE:
90 return NODE_TOGGLE_ON_CHANGE;
91 default:
92 return -1;
93 }
94 }
95
ConvertEvent(ArkUINodeEvent * origin,ArkUI_NodeEvent * event)96 bool ConvertEvent(ArkUINodeEvent* origin, ArkUI_NodeEvent* event)
97 {
98 if (memcpy_sp(event->componentEvent.data, MAX_COMPONENT_EVENT_ARG_NUM, origin->componentAsyncEvent.data,
99 MAX_COMPONENT_EVENT_ARG_NUM) != 0) {
100 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "fail to convert origin event data");
101 return false;
102 }
103 event->kind = ConvertToNodeEventType(static_cast<ArkUIAsyncEventKind>(origin->kind));
104 if (event->kind == -1) {
105 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "fail to convert origin event. %{public}d", origin->kind);
106 return false;
107 }
108 event->eventId = origin->eventId;
109 return true;
110 }
111 }; // namespace OHOS::Ace::NodeModel
112