• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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