• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-2024 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 "core/interfaces/native/node/node_list_modifier.h"
16 
17 #include <cstdint>
18 
19 #include "interfaces/native/node/list_option.h"
20 #include "interfaces/native/node/node_model.h"
21 
22 #include "base/error/error_code.h"
23 #include "base/geometry/dimension.h"
24 #include "base/utils/utils.h"
25 #include "core/components/list/list_theme.h"
26 #include "core/components_ng/base/frame_node.h"
27 #include "core/components_ng/pattern/list/list_model_ng.h"
28 #include "core/components_ng/pattern/scrollable/scrollable_model_ng.h"
29 #include "core/interfaces/arkoala/arkoala_api.h"
30 #include "core/interfaces/native/node/node_adapter_impl.h"
31 #include "core/pipeline/base/element_register.h"
32 
33 namespace OHOS::Ace::NG {
34 namespace {
35 constexpr int32_t DEFAULT_CACHED_COUNT = 1;
36 constexpr bool DEFAULT_CACHED_IS_SHOWN = false;
37 constexpr bool DEFAULT_SCROLL_ENABLE = true;
38 constexpr int32_t DEFAULT_STICKY_STYLE = 0;
39 constexpr int32_t DEFAULT_DIRECTION = 0;
40 constexpr int32_t DEFAULT_SCROLL_BAR = 1;
41 constexpr int32_t DEFAULT_DIVIDER_VALUES_COUNT = 3;
42 constexpr float DEFAULT_OFFSET = 0.0f;
43 
44 constexpr int32_t DEFAULT_EDGE_EFFECT = 0;
45 constexpr Dimension DEFAULT_FADING_EDGE_LENGTH = Dimension(32.0f, DimensionUnit::VP); // default value
46 
47 constexpr int32_t ERROR_INT_CODE = -1;
48 constexpr int32_t CALL_STROKE_WIDTH = 0;
49 constexpr int32_t CALL_START_MARGIN = 1;
50 constexpr int32_t CALL_END_MARGIN = 2;
51 constexpr int32_t INDEX_0 = 0;
52 constexpr int32_t INDEX_1 = 1;
53 constexpr int32_t INDEX_2 = 2;
54 
SetListLanes(ArkUINodeHandle node,ArkUI_Int32 lanesNum,const struct ArkUIDimensionType * minLengthType,const struct ArkUIDimensionType * maxLengthType,const struct ArkUIDimensionType * gutterType)55 void SetListLanes(ArkUINodeHandle node, ArkUI_Int32 lanesNum, const struct ArkUIDimensionType* minLengthType,
56     const struct ArkUIDimensionType* maxLengthType, const struct ArkUIDimensionType* gutterType)
57 {
58     auto* frameNode = reinterpret_cast<FrameNode*>(node);
59     CHECK_NULL_VOID(frameNode);
60     if (lanesNum > 0) {
61         ListModelNG::SetLanes(frameNode, lanesNum);
62         Dimension minLength =
63             Dimension(minLengthType->value, static_cast<OHOS::Ace::DimensionUnit>(minLengthType->units));
64         Dimension maxLength =
65             Dimension(maxLengthType->value, static_cast<OHOS::Ace::DimensionUnit>(maxLengthType->units));
66         ListModelNG::SetLaneConstrain(frameNode, minLength, maxLength);
67     } else {
68         Dimension minLength =
69             Dimension(minLengthType->value, static_cast<OHOS::Ace::DimensionUnit>(minLengthType->units));
70         Dimension maxLength =
71             Dimension(maxLengthType->value, static_cast<OHOS::Ace::DimensionUnit>(maxLengthType->units));
72         ListModelNG::SetLaneConstrain(frameNode, minLength, maxLength);
73         ListModelNG::SetLanes(frameNode, 1);
74     }
75 
76     Dimension gutter = Dimension(gutterType->value, static_cast<OHOS::Ace::DimensionUnit>(gutterType->units));
77     ListModelNG::SetLaneGutter(frameNode, gutter);
78 }
79 
ResetListLanes(ArkUINodeHandle node)80 void ResetListLanes(ArkUINodeHandle node)
81 {
82     auto* frameNode = reinterpret_cast<FrameNode*>(node);
83     CHECK_NULL_VOID(frameNode);
84     ListModelNG::SetLanes(frameNode, 1);
85     ListModelNG::SetLaneGutter(frameNode, Dimension(0));
86 }
87 
ResetlistLaneMinAndMaxLength(ArkUINodeHandle node)88 void ResetlistLaneMinAndMaxLength(ArkUINodeHandle node)
89 {
90     auto* frameNode = reinterpret_cast<FrameNode*>(node);
91     CHECK_NULL_VOID(frameNode);
92     Dimension minLength = Dimension(-1, DimensionUnit::VP);
93     Dimension maxLength = Dimension(-1, DimensionUnit::VP);
94     ListModelNG::SetLaneConstrain(frameNode, minLength, maxLength);
95 }
96 
GetListLanes(ArkUINodeHandle node)97 ArkUI_Int32 GetListLanes(ArkUINodeHandle node)
98 {
99     auto* frameNode = reinterpret_cast<FrameNode*>(node);
100     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
101     return static_cast<ArkUI_Int32>(ListModelNG::GetLanes(frameNode));
102 }
103 
GetlistLaneMinLength(ArkUINodeHandle node)104 ArkUI_Float32 GetlistLaneMinLength(ArkUINodeHandle node)
105 {
106     auto* frameNode = reinterpret_cast<FrameNode*>(node);
107     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
108     return static_cast<ArkUI_Float32>(ListModelNG::GetLaneMinLength(frameNode));
109 }
110 
GetListLaneMaxLength(ArkUINodeHandle node)111 ArkUI_Float32 GetListLaneMaxLength(ArkUINodeHandle node)
112 {
113     auto* frameNode = reinterpret_cast<FrameNode*>(node);
114     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
115     return static_cast<ArkUI_Float32>(ListModelNG::GetLaneMaxLength(frameNode));
116 }
117 
GetListLaneGutter(ArkUINodeHandle node)118 ArkUI_Float32 GetListLaneGutter(ArkUINodeHandle node)
119 {
120     auto* frameNode = reinterpret_cast<FrameNode*>(node);
121     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
122     auto ret = static_cast<ArkUI_Float32>(ListModelNG::GetLaneGutter(frameNode));
123     return ret;
124 }
125 
SetEditMode(ArkUINodeHandle node,ArkUI_Bool editMode)126 void SetEditMode(ArkUINodeHandle node, ArkUI_Bool editMode)
127 {
128     auto* frameNode = reinterpret_cast<FrameNode*>(node);
129     CHECK_NULL_VOID(frameNode);
130     ListModelNG::SetEditMode(frameNode, editMode);
131 }
132 
ResetEditMode(ArkUINodeHandle node)133 void ResetEditMode(ArkUINodeHandle node)
134 {
135     auto* frameNode = reinterpret_cast<FrameNode*>(node);
136     CHECK_NULL_VOID(frameNode);
137     ListModelNG::SetEditMode(frameNode, false);
138 }
139 
SetMultiSelectable(ArkUINodeHandle node,ArkUI_Bool selectable)140 void SetMultiSelectable(ArkUINodeHandle node, ArkUI_Bool selectable)
141 {
142     auto* frameNode = reinterpret_cast<FrameNode*>(node);
143     CHECK_NULL_VOID(frameNode);
144     ListModelNG::SetMultiSelectable(frameNode, selectable);
145 }
146 
ResetMultiSelectable(ArkUINodeHandle node)147 void ResetMultiSelectable(ArkUINodeHandle node)
148 {
149     auto* frameNode = reinterpret_cast<FrameNode*>(node);
150     CHECK_NULL_VOID(frameNode);
151     ListModelNG::SetMultiSelectable(frameNode, false);
152 }
153 
SetChainAnimation(ArkUINodeHandle node,ArkUI_Bool chainAnimation)154 void SetChainAnimation(ArkUINodeHandle node, ArkUI_Bool chainAnimation)
155 {
156     auto* frameNode = reinterpret_cast<FrameNode*>(node);
157     CHECK_NULL_VOID(frameNode);
158     ListModelNG::SetChainAnimation(frameNode, chainAnimation);
159 }
160 
ResetChainAnimation(ArkUINodeHandle node)161 void ResetChainAnimation(ArkUINodeHandle node)
162 {
163     auto* frameNode = reinterpret_cast<FrameNode*>(node);
164     CHECK_NULL_VOID(frameNode);
165     ListModelNG::SetChainAnimation(frameNode, false);
166 }
167 
SetCachedCount(ArkUINodeHandle node,ArkUI_Int32 cachedCount)168 void SetCachedCount(ArkUINodeHandle node, ArkUI_Int32 cachedCount)
169 {
170     auto* frameNode = reinterpret_cast<FrameNode*>(node);
171     CHECK_NULL_VOID(frameNode);
172     if (cachedCount < 0) {
173         cachedCount = 1;
174     }
175     ListModelNG::SetCachedCount(frameNode, cachedCount);
176 }
177 
ResetCachedCount(ArkUINodeHandle node)178 void ResetCachedCount(ArkUINodeHandle node)
179 {
180     auto* frameNode = reinterpret_cast<FrameNode*>(node);
181     CHECK_NULL_VOID(frameNode);
182     ListModelNG::SetCachedCount(frameNode, DEFAULT_CACHED_COUNT);
183 }
184 
SetCachedIsShown(ArkUINodeHandle node,ArkUI_Bool isShown)185 void SetCachedIsShown(ArkUINodeHandle node, ArkUI_Bool isShown)
186 {
187     auto* frameNode = reinterpret_cast<FrameNode*>(node);
188     CHECK_NULL_VOID(frameNode);
189     ListModelNG::SetShowCached(frameNode, isShown);
190 }
191 
ResetCachedIsShown(ArkUINodeHandle node)192 void ResetCachedIsShown(ArkUINodeHandle node)
193 {
194     auto* frameNode = reinterpret_cast<FrameNode*>(node);
195     CHECK_NULL_VOID(frameNode);
196     ListModelNG::SetShowCached(frameNode, DEFAULT_CACHED_IS_SHOWN);
197 }
198 
GetCachedIsShown(ArkUINodeHandle node)199 ArkUI_Int32 GetCachedIsShown(ArkUINodeHandle node)
200 {
201     auto* frameNode = reinterpret_cast<FrameNode*>(node);
202     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
203     return static_cast<ArkUI_Int32>(ListModelNG::GetShowCached(frameNode));
204 }
205 
GetEnableScrollInteraction(ArkUINodeHandle node)206 ArkUI_Bool GetEnableScrollInteraction(ArkUINodeHandle node)
207 {
208     auto* frameNode = reinterpret_cast<FrameNode*>(node);
209     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
210     return ListModelNG::GetScrollEnabled(frameNode);
211 }
212 
SetEnableScrollInteraction(ArkUINodeHandle node,ArkUI_Bool enableScrollInteraction)213 void SetEnableScrollInteraction(ArkUINodeHandle node, ArkUI_Bool enableScrollInteraction)
214 {
215     auto* frameNode = reinterpret_cast<FrameNode*>(node);
216     CHECK_NULL_VOID(frameNode);
217     ListModelNG::SetScrollEnabled(frameNode, enableScrollInteraction);
218 }
219 
ResetEnableScrollInteraction(ArkUINodeHandle node)220 void ResetEnableScrollInteraction(ArkUINodeHandle node)
221 {
222     auto* frameNode = reinterpret_cast<FrameNode*>(node);
223     CHECK_NULL_VOID(frameNode);
224     ListModelNG::SetScrollEnabled(frameNode, DEFAULT_SCROLL_ENABLE);
225 }
226 
GetSticky(ArkUINodeHandle node)227 ArkUI_Int32 GetSticky(ArkUINodeHandle node)
228 {
229     auto* frameNode = reinterpret_cast<FrameNode*>(node);
230     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
231     return ListModelNG::GetSticky(frameNode);
232 }
233 
SetSticky(ArkUINodeHandle node,ArkUI_Int32 stickyStyle)234 void SetSticky(ArkUINodeHandle node, ArkUI_Int32 stickyStyle)
235 {
236     auto* frameNode = reinterpret_cast<FrameNode*>(node);
237     CHECK_NULL_VOID(frameNode);
238     ListModelNG::SetSticky(frameNode, stickyStyle);
239 }
240 
ResetSticky(ArkUINodeHandle node)241 void ResetSticky(ArkUINodeHandle node)
242 {
243     auto* frameNode = reinterpret_cast<FrameNode*>(node);
244     CHECK_NULL_VOID(frameNode);
245     ListModelNG::SetSticky(frameNode, DEFAULT_STICKY_STYLE);
246 }
247 
GetListSpace(ArkUINodeHandle node)248 ArkUI_Float32 GetListSpace(ArkUINodeHandle node)
249 {
250     auto* frameNode = reinterpret_cast<FrameNode*>(node);
251     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
252     return ListModelNG::GetListSpace(frameNode);
253 }
254 
SetListSpace(ArkUINodeHandle node,ArkUI_Float32 space)255 void SetListSpace(ArkUINodeHandle node, ArkUI_Float32 space)
256 {
257     auto* frameNode = reinterpret_cast<FrameNode*>(node);
258     CHECK_NULL_VOID(frameNode);
259     ListModelNG::SetListSpace(frameNode, Dimension(space, DimensionUnit::VP));
260 }
261 
ResetListSpace(ArkUINodeHandle node)262 void ResetListSpace(ArkUINodeHandle node)
263 {
264     auto* frameNode = reinterpret_cast<FrameNode*>(node);
265     CHECK_NULL_VOID(frameNode);
266     ListModelNG::SetListSpace(frameNode, Dimension(0, DimensionUnit::VP));
267 }
268 
GetListEdgeEffect(ArkUINodeHandle node,ArkUI_Int32 (* values)[2])269 ArkUI_Int32 GetListEdgeEffect(ArkUINodeHandle node, ArkUI_Int32 (*values)[2])
270 {
271     auto* frameNode = reinterpret_cast<FrameNode*>(node);
272     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
273     (*values)[INDEX_0] = ListModelNG::GetEdgeEffect(frameNode);
274     (*values)[INDEX_1] = ListModelNG::GetEdgeEffectAlways(frameNode);
275     return INDEX_2;
276 }
277 
SetListEdgeEffect(ArkUINodeHandle node,ArkUI_Int32 edgeEffect,ArkUI_Bool alwaysEnabled)278 void SetListEdgeEffect(ArkUINodeHandle node, ArkUI_Int32 edgeEffect, ArkUI_Bool alwaysEnabled)
279 {
280     auto* frameNode = reinterpret_cast<FrameNode*>(node);
281     CHECK_NULL_VOID(frameNode);
282     ListModelNG::SetEdgeEffect(frameNode, edgeEffect, alwaysEnabled);
283 }
284 
ResetListEdgeEffect(ArkUINodeHandle node)285 void ResetListEdgeEffect(ArkUINodeHandle node)
286 {
287     auto* frameNode = reinterpret_cast<FrameNode*>(node);
288     CHECK_NULL_VOID(frameNode);
289     ListModelNG::SetEdgeEffect(frameNode, DEFAULT_EDGE_EFFECT, false);
290 }
291 
GetListDirection(ArkUINodeHandle node)292 ArkUI_Int32 GetListDirection(ArkUINodeHandle node)
293 {
294     auto* frameNode = reinterpret_cast<FrameNode*>(node);
295     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
296     return ListModelNG::GetListDirection(frameNode);
297 }
298 
SetListDirection(ArkUINodeHandle node,ArkUI_Int32 axis)299 void SetListDirection(ArkUINodeHandle node, ArkUI_Int32 axis)
300 {
301     auto* frameNode = reinterpret_cast<FrameNode*>(node);
302     CHECK_NULL_VOID(frameNode);
303     ListModelNG::SetListDirection(frameNode, axis);
304 }
305 
ResetListDirection(ArkUINodeHandle node)306 void ResetListDirection(ArkUINodeHandle node)
307 {
308     auto* frameNode = reinterpret_cast<FrameNode*>(node);
309     CHECK_NULL_VOID(frameNode);
310     ListModelNG::SetListDirection(frameNode, DEFAULT_DIRECTION);
311 }
312 
GetListFriction(ArkUINodeHandle node)313 ArkUI_Float32 GetListFriction(ArkUINodeHandle node)
314 {
315     auto* frameNode = reinterpret_cast<FrameNode*>(node);
316     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
317     return ListModelNG::GetListFriction(frameNode);
318 }
319 
SetListFriction(ArkUINodeHandle node,ArkUI_Float32 friction)320 void SetListFriction(ArkUINodeHandle node, ArkUI_Float32 friction)
321 {
322     auto* frameNode = reinterpret_cast<FrameNode*>(node);
323     CHECK_NULL_VOID(frameNode);
324     ListModelNG::SetListFriction(frameNode, friction);
325 }
326 
ResetListFriction(ArkUINodeHandle node)327 void ResetListFriction(ArkUINodeHandle node)
328 {
329     auto* frameNode = reinterpret_cast<FrameNode*>(node);
330     CHECK_NULL_VOID(frameNode);
331     double friction = -1.0;
332     ListModelNG::SetListFriction(frameNode, friction);
333 }
334 
GetListNestedScroll(ArkUINodeHandle node,ArkUI_Int32 (* values)[2])335 void GetListNestedScroll(ArkUINodeHandle node, ArkUI_Int32 (*values)[2])
336 {
337     auto* frameNode = reinterpret_cast<FrameNode*>(node);
338     CHECK_NULL_VOID(frameNode);
339     NestedScrollOptions options = ListModelNG::GetListNestedScroll(frameNode);
340     (*values)[0] = static_cast<ArkUI_Int32>(options.forward);
341     (*values)[1] = static_cast<ArkUI_Int32>(options.backward);
342 }
343 
SetListNestedScroll(ArkUINodeHandle node,ArkUI_Int32 forward,ArkUI_Int32 backward)344 void SetListNestedScroll(ArkUINodeHandle node, ArkUI_Int32 forward, ArkUI_Int32 backward)
345 {
346     NestedScrollOptions opt = {
347         .forward = static_cast<NestedScrollMode>(forward),
348         .backward = static_cast<NestedScrollMode>(backward),
349     };
350     auto* frameNode = reinterpret_cast<FrameNode*>(node);
351     CHECK_NULL_VOID(frameNode);
352     ListModelNG::SetListNestedScroll(frameNode, opt);
353 }
354 
ResetListNestedScroll(ArkUINodeHandle node)355 void ResetListNestedScroll(ArkUINodeHandle node)
356 {
357     auto* frameNode = reinterpret_cast<FrameNode*>(node);
358     CHECK_NULL_VOID(frameNode);
359     const NestedScrollOptions nestedOpt = {
360         .forward = NestedScrollMode::SELF_ONLY,
361         .backward = NestedScrollMode::SELF_ONLY,
362     };
363     ListModelNG::SetListNestedScroll(frameNode, nestedOpt);
364 }
365 
GetListScrollBar(ArkUINodeHandle node)366 ArkUI_Int32 GetListScrollBar(ArkUINodeHandle node)
367 {
368     auto* frameNode = reinterpret_cast<FrameNode*>(node);
369     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
370     return ListModelNG::GetListScrollBar(frameNode);
371 }
372 
SetListScrollBar(ArkUINodeHandle node,ArkUI_Int32 barState)373 void SetListScrollBar(ArkUINodeHandle node, ArkUI_Int32 barState)
374 {
375     auto* frameNode = reinterpret_cast<FrameNode*>(node);
376     CHECK_NULL_VOID(frameNode);
377     ListModelNG::SetListScrollBar(frameNode, barState);
378 }
379 
ResetListScrollBar(ArkUINodeHandle node)380 void ResetListScrollBar(ArkUINodeHandle node)
381 {
382     auto* frameNode = reinterpret_cast<FrameNode*>(node);
383     CHECK_NULL_VOID(frameNode);
384     ListModelNG::SetListScrollBar(frameNode, DEFAULT_SCROLL_BAR);
385 }
386 
GetListScrollBarWidth(ArkUINodeHandle node)387 ArkUI_Float32 GetListScrollBarWidth(ArkUINodeHandle node)
388 {
389     auto* frameNode = reinterpret_cast<FrameNode*>(node);
390     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
391     return ListModelNG::GetScrollBarWidth(frameNode);
392 }
393 
SetListScrollBarWidth(ArkUINodeHandle node,ArkUI_CharPtr value)394 void SetListScrollBarWidth(ArkUINodeHandle node, ArkUI_CharPtr value)
395 {
396     CHECK_NULL_VOID(value);
397     auto* frameNode = reinterpret_cast<FrameNode*>(node);
398     CHECK_NULL_VOID(frameNode);
399     ListModelNG::SetListScrollBarWidth(frameNode, value);
400 }
401 
ResetListScrollBarWidth(ArkUINodeHandle node)402 void ResetListScrollBarWidth(ArkUINodeHandle node)
403 {
404     auto* frameNode = reinterpret_cast<FrameNode*>(node);
405     CHECK_NULL_VOID(frameNode);
406     ListModelNG::SetListScrollBarWidth(frameNode, "0vp");
407 }
408 
GetListScrollBarColor(ArkUINodeHandle node)409 ArkUI_Uint32 GetListScrollBarColor(ArkUINodeHandle node)
410 {
411     auto* frameNode = reinterpret_cast<FrameNode*>(node);
412     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
413     return ListModelNG::GetScrollBarColor(frameNode);
414 }
415 
SetListScrollBarColor(ArkUINodeHandle node,ArkUI_CharPtr value)416 void SetListScrollBarColor(ArkUINodeHandle node, ArkUI_CharPtr value)
417 {
418     CHECK_NULL_VOID(value);
419     auto* frameNode = reinterpret_cast<FrameNode*>(node);
420     CHECK_NULL_VOID(frameNode);
421     ListModelNG::SetListScrollBarColor(frameNode, value);
422 }
423 
ResetListScrollBarColor(ArkUINodeHandle node)424 void ResetListScrollBarColor(ArkUINodeHandle node)
425 {
426     auto* frameNode = reinterpret_cast<FrameNode*>(node);
427     CHECK_NULL_VOID(frameNode);
428     ListModelNG::SetListScrollBarColor(frameNode, "#FF000000");
429 }
430 
GetAlignListItem(ArkUINodeHandle node)431 ArkUI_Int32 GetAlignListItem(ArkUINodeHandle node)
432 {
433     auto* frameNode = reinterpret_cast<FrameNode*>(node);
434     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
435     return ListModelNG::GetListItemAlign(frameNode);
436 }
437 
SetAlignListItem(ArkUINodeHandle node,ArkUI_Int32 listItemAlign)438 void SetAlignListItem(ArkUINodeHandle node, ArkUI_Int32 listItemAlign)
439 {
440     auto* frameNode = reinterpret_cast<FrameNode*>(node);
441     CHECK_NULL_VOID(frameNode);
442     ListModelNG::SetListItemAlign(frameNode, static_cast<V2::ListItemAlign>(listItemAlign));
443 }
444 
ResetAlignListItem(ArkUINodeHandle node)445 void ResetAlignListItem(ArkUINodeHandle node)
446 {
447     auto* frameNode = reinterpret_cast<FrameNode*>(node);
448     CHECK_NULL_VOID(frameNode);
449     ListModelNG::SetListItemAlign(frameNode, V2::ListItemAlign::START);
450 }
451 
SetScrollSnapAlign(ArkUINodeHandle node,ArkUI_Int32 scrollSnapAlign)452 void SetScrollSnapAlign(ArkUINodeHandle node, ArkUI_Int32 scrollSnapAlign)
453 {
454     auto* frameNode = reinterpret_cast<FrameNode*>(node);
455     CHECK_NULL_VOID(frameNode);
456     ListModelNG::SetScrollSnapAlign(frameNode, static_cast<V2::ScrollSnapAlign>(scrollSnapAlign));
457 }
458 
ResetScrollSnapAlign(ArkUINodeHandle node)459 void ResetScrollSnapAlign(ArkUINodeHandle node)
460 {
461     auto* frameNode = reinterpret_cast<FrameNode*>(node);
462     CHECK_NULL_VOID(frameNode);
463     ListModelNG::SetScrollSnapAlign(frameNode, V2::ScrollSnapAlign::NONE);
464 }
465 
GetScrollSnapAlign(ArkUINodeHandle node)466 ArkUI_Int32 GetScrollSnapAlign(ArkUINodeHandle node)
467 {
468     auto* frameNode = reinterpret_cast<FrameNode*>(node);
469     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
470     return ListModelNG::GetScrollSnapAlign(frameNode);
471 }
472 
SetContentStartOffset(ArkUINodeHandle node,ArkUI_Float32 startOffset)473 void SetContentStartOffset(ArkUINodeHandle node, ArkUI_Float32 startOffset)
474 {
475     auto* frameNode = reinterpret_cast<FrameNode*>(node);
476     CHECK_NULL_VOID(frameNode);
477     ListModelNG::SetContentStartOffset(frameNode, startOffset);
478 }
479 
ResetContentStartOffset(ArkUINodeHandle node)480 void ResetContentStartOffset(ArkUINodeHandle node)
481 {
482     auto* frameNode = reinterpret_cast<FrameNode*>(node);
483     CHECK_NULL_VOID(frameNode);
484     ListModelNG::SetContentStartOffset(frameNode, DEFAULT_OFFSET);
485 }
486 
GetContentStartOffset(ArkUINodeHandle node)487 ArkUI_Float32 GetContentStartOffset(ArkUINodeHandle node)
488 {
489     auto* frameNode = reinterpret_cast<FrameNode*>(node);
490     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
491     return ListModelNG::GetContentStartOffset(frameNode);
492 }
493 
SetContentEndOffset(ArkUINodeHandle node,ArkUI_Float32 endOffset)494 void SetContentEndOffset(ArkUINodeHandle node, ArkUI_Float32 endOffset)
495 {
496     auto* frameNode = reinterpret_cast<FrameNode*>(node);
497     CHECK_NULL_VOID(frameNode);
498     ListModelNG::SetContentEndOffset(frameNode, endOffset);
499 }
500 
ResetContentEndOffset(ArkUINodeHandle node)501 void ResetContentEndOffset(ArkUINodeHandle node)
502 {
503     auto* frameNode = reinterpret_cast<FrameNode*>(node);
504     CHECK_NULL_VOID(frameNode);
505     ListModelNG::SetContentEndOffset(frameNode, DEFAULT_OFFSET);
506 }
507 
GetContentEndOffset(ArkUINodeHandle node)508 ArkUI_Float32 GetContentEndOffset(ArkUINodeHandle node)
509 {
510     auto* frameNode = reinterpret_cast<FrameNode*>(node);
511     CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
512     return ListModelNG::GetContentEndOffset(frameNode);
513 }
514 
ListSetDivider(ArkUINodeHandle node,ArkUI_Uint32 color,const ArkUI_Float32 * values,const int32_t * units,ArkUI_Int32 length)515 void ListSetDivider(
516     ArkUINodeHandle node, ArkUI_Uint32 color, const ArkUI_Float32* values, const int32_t* units, ArkUI_Int32 length)
517 {
518     auto* frameNode = reinterpret_cast<FrameNode*>(node);
519     CHECK_NULL_VOID(frameNode);
520 
521     if (length != DEFAULT_DIVIDER_VALUES_COUNT) {
522         return;
523     }
524 
525     V2::ItemDivider divider;
526     divider.color = Color(color);
527     divider.strokeWidth =
528         Dimension(values[CALL_STROKE_WIDTH], static_cast<OHOS::Ace::DimensionUnit>(units[CALL_STROKE_WIDTH]));
529     divider.startMargin =
530         Dimension(values[CALL_START_MARGIN], static_cast<OHOS::Ace::DimensionUnit>(units[CALL_START_MARGIN]));
531     divider.endMargin =
532         Dimension(values[CALL_END_MARGIN], static_cast<OHOS::Ace::DimensionUnit>(units[CALL_END_MARGIN]));
533 
534     ListModelNG::SetDivider(frameNode, divider);
535 }
536 
ListResetDivider(ArkUINodeHandle node)537 void ListResetDivider(ArkUINodeHandle node)
538 {
539     auto* frameNode = reinterpret_cast<FrameNode*>(node);
540     CHECK_NULL_VOID(frameNode);
541     const V2::ItemDivider divider;
542 
543     ListModelNG::SetDivider(frameNode, divider);
544 }
545 
SetChainAnimationOptions(ArkUINodeHandle node,const struct ArkUIChainAnimationOptionsType * chainAnimationOptions)546 void SetChainAnimationOptions(ArkUINodeHandle node, const struct ArkUIChainAnimationOptionsType* chainAnimationOptions)
547 {
548     auto* frameNode = reinterpret_cast<FrameNode*>(node);
549     CHECK_NULL_VOID(frameNode);
550 
551     ChainAnimationOptions options;
552     options.minSpace = CalcDimension(
553         chainAnimationOptions->minSpace, static_cast<OHOS::Ace::DimensionUnit>(chainAnimationOptions->minSpaceUnits));
554     options.maxSpace = CalcDimension(
555         chainAnimationOptions->maxSpace, static_cast<OHOS::Ace::DimensionUnit>(chainAnimationOptions->maxSpaceUnits));
556     options.conductivity = chainAnimationOptions->conductivity;
557     options.intensity = chainAnimationOptions->intensity;
558     options.edgeEffect = chainAnimationOptions->edgeEffect;
559     options.stiffness = chainAnimationOptions->stiffness;
560     options.damping = chainAnimationOptions->damping;
561     ListModelNG::SetChainAnimationOptions(frameNode, options);
562 }
563 
ResetChainAnimationOptions(ArkUINodeHandle node)564 void ResetChainAnimationOptions(ArkUINodeHandle node)
565 {
566     auto* frameNode = reinterpret_cast<FrameNode*>(node);
567     CHECK_NULL_VOID(frameNode);
568     RefPtr<ListTheme> listTheme = GetTheme<ListTheme>();
569     CHECK_NULL_VOID(listTheme);
570     ChainAnimationOptions options = {
571         .minSpace = listTheme->GetChainMinSpace(),
572         .maxSpace = listTheme->GetChainMaxSpace(),
573         .conductivity = listTheme->GetChainConductivity(),
574         .intensity = listTheme->GetChainIntensity(),
575         .edgeEffect = 0,
576         .stiffness = listTheme->GetChainStiffness(),
577         .damping = listTheme->GetChainDamping(),
578     };
579 
580     ListModelNG::SetChainAnimationOptions(frameNode, options);
581 }
582 
SetNodeAdapter(ArkUINodeHandle node,ArkUINodeAdapterHandle handle)583 ArkUI_Int32 SetNodeAdapter(ArkUINodeHandle node, ArkUINodeAdapterHandle handle)
584 {
585     auto* frameNode = reinterpret_cast<FrameNode*>(node);
586     CHECK_NULL_RETURN(frameNode, ERROR_CODE_PARAM_INVALID);
587     auto totalChildCount = frameNode->TotalChildCount();
588     if (totalChildCount > 0) {
589         return ERROR_CODE_NATIVE_IMPL_NODE_ADAPTER_CHILD_NODE_EXIST;
590     }
591     NodeAdapter::GetNodeAdapterAPI()->attachHostNode(handle, node);
592     return ERROR_CODE_NO_ERROR;
593 }
594 
ResetNodeAdapter(ArkUINodeHandle node)595 void ResetNodeAdapter(ArkUINodeHandle node)
596 {
597     NodeAdapter::GetNodeAdapterAPI()->detachHostNode(node);
598 }
599 
GetNodeAdapter(ArkUINodeHandle node)600 ArkUINodeAdapterHandle GetNodeAdapter(ArkUINodeHandle node)
601 {
602     return NodeAdapter::GetNodeAdapterAPI()->getNodeAdapter(node);
603 }
604 
GetCachedCount(ArkUINodeHandle node)605 ArkUI_Int32 GetCachedCount(ArkUINodeHandle node)
606 {
607     auto* frameNode = reinterpret_cast<FrameNode*>(node);
608     CHECK_NULL_RETURN(frameNode, 1);
609     return ListModelNG::GetCachedCount(frameNode);
610 }
611 
SetScrollToIndex(ArkUINodeHandle node,ArkUI_Int32 index,ArkUI_Int32 animation,ArkUI_Int32 alignment,float options)612 void SetScrollToIndex(
613     ArkUINodeHandle node, ArkUI_Int32 index, ArkUI_Int32 animation, ArkUI_Int32 alignment, float options)
614 {
615     auto* frameNode = reinterpret_cast<FrameNode*>(node);
616     CHECK_NULL_VOID(frameNode);
617     std::optional<float> extraOffset = options;
618     ListModelNG::SetScrollToIndex(frameNode, index, animation, alignment, extraOffset);
619 }
620 
SetScrollBy(ArkUINodeHandle node,ArkUI_Float64 x,ArkUI_Float64 y)621 void SetScrollBy(ArkUINodeHandle node, ArkUI_Float64 x, ArkUI_Float64 y)
622 {
623     auto* frameNode = reinterpret_cast<FrameNode*>(node);
624     CHECK_NULL_VOID(frameNode);
625     ListModelNG::SetScrollBy(frameNode, x, y);
626 }
627 
SetInitialIndex(ArkUINodeHandle node,ArkUI_Int32 index)628 void SetInitialIndex(ArkUINodeHandle node, ArkUI_Int32 index)
629 {
630     auto* frameNode = reinterpret_cast<FrameNode*>(node);
631     CHECK_NULL_VOID(frameNode);
632     ListModelNG::SetInitialIndex(frameNode, index);
633 }
634 
ResetInitialIndex(ArkUINodeHandle node)635 void ResetInitialIndex(ArkUINodeHandle node)
636 {
637     auto* frameNode = reinterpret_cast<FrameNode*>(node);
638     CHECK_NULL_VOID(frameNode);
639     ListModelNG::SetInitialIndex(frameNode, 0);
640 }
641 
SetListChildrenMainSize(ArkUINodeHandle node,ArkUIListChildrenMainSize option,ArkUI_Int32 unit)642 void SetListChildrenMainSize(ArkUINodeHandle node, ArkUIListChildrenMainSize option, ArkUI_Int32 unit)
643 {
644     auto* frameNode = reinterpret_cast<FrameNode*>(node);
645     CHECK_NULL_VOID(frameNode);
646     for (uint32_t i = 0; i < option->mainSize.size(); i++) {
647         if (option->mainSize[i] > 0) {
648             option->mainSize[i] =
649                 Dimension(option->mainSize[i], static_cast<OHOS::Ace::DimensionUnit>(unit)).ConvertToPx();
650         }
651     }
652     if (option->defaultMainSize > 0) {
653         option->defaultMainSize =
654             Dimension(option->defaultMainSize, static_cast<OHOS::Ace::DimensionUnit>(unit)).ConvertToPx();
655     }
656     ListModelNG::SetListChildrenMainSize(frameNode, option->defaultMainSize, option->mainSize);
657 }
658 
ResetListChildrenMainSize(ArkUINodeHandle node)659 void ResetListChildrenMainSize(ArkUINodeHandle node)
660 {
661     auto* frameNode = reinterpret_cast<FrameNode*>(node);
662     CHECK_NULL_VOID(frameNode);
663     ListModelNG::ResetListChildrenMainSize(frameNode);
664 }
665 
SetListCloseAllSwipeActions(ArkUINodeHandle node,void * userData,void (onFinish)(void * userData))666 void SetListCloseAllSwipeActions(ArkUINodeHandle node, void* userData, void (onFinish) (void* userData))
667 {
668     auto* frameNode = reinterpret_cast<FrameNode*>(node);
669     CHECK_NULL_VOID(frameNode);
670     RefPtr<ScrollControllerBase> scrollControllerBase = ListModelNG::GetOrCreateController(frameNode);
671     if (onFinish) {
672         auto onEvent = [userData, onFinish]() {
673             onFinish(userData);
674         };
675         scrollControllerBase->CloseAllSwipeActions(std::move(onEvent));
676     } else {
677         scrollControllerBase->CloseAllSwipeActions(nullptr);
678     }
679 }
680 
SetListFlingSpeedLimit(ArkUINodeHandle node,ArkUI_Float32 maxSpeed)681 void SetListFlingSpeedLimit(ArkUINodeHandle node, ArkUI_Float32 maxSpeed)
682 {
683     auto* frameNode = reinterpret_cast<FrameNode*>(node);
684     CHECK_NULL_VOID(frameNode);
685     ListModelNG::SetFlingSpeedLimit(frameNode, maxSpeed);
686 }
687 
ResetListFlingSpeedLimit(ArkUINodeHandle node)688 void ResetListFlingSpeedLimit(ArkUINodeHandle node)
689 {
690     auto* frameNode = reinterpret_cast<FrameNode*>(node);
691     CHECK_NULL_VOID(frameNode);
692     ListModelNG::SetFlingSpeedLimit(frameNode, -1.0);
693 }
694 
GetInitialIndex(ArkUINodeHandle node)695 ArkUI_Int32 GetInitialIndex(ArkUINodeHandle node)
696 {
697     auto* frameNode = reinterpret_cast<FrameNode*>(node);
698     CHECK_NULL_RETURN(frameNode, 0);
699     return ListModelNG::GetInitialIndex(frameNode);
700 }
701 
GetlistDivider(ArkUINodeHandle node,ArkUIdividerOptions * option,ArkUI_Int32 unit)702 void GetlistDivider(ArkUINodeHandle node, ArkUIdividerOptions* option, ArkUI_Int32 unit)
703 {
704     auto* frameNode = reinterpret_cast<FrameNode*>(node);
705     CHECK_NULL_VOID(frameNode);
706     auto divider = ListModelNG::GetDivider(frameNode);
707     option->color = divider.color.GetValue();
708     option->strokeWidth = divider.strokeWidth.GetNativeValue(static_cast<DimensionUnit>(unit));
709     option->startMargin = divider.startMargin.GetNativeValue(static_cast<DimensionUnit>(unit));
710     option->endMargin = divider.endMargin.GetNativeValue(static_cast<DimensionUnit>(unit));
711 }
712 
SetInitialScroller(ArkUINodeHandle node,ArkUINodeHandle controller,ArkUINodeHandle proxy)713 void SetInitialScroller(ArkUINodeHandle node, ArkUINodeHandle controller, ArkUINodeHandle proxy)
714 {
715     auto* frameNode = reinterpret_cast<FrameNode*>(node);
716     CHECK_NULL_VOID(frameNode);
717     auto listProxy = AceType::Claim(reinterpret_cast<ScrollProxy*>(proxy));
718     auto listController = AceType::Claim(reinterpret_cast<ScrollControllerBase*>(controller));
719     ListModelNG::SetScroller(frameNode, listController, listProxy);
720 }
721 
ResetInitialScroller(ArkUINodeHandle node)722 void ResetInitialScroller(ArkUINodeHandle node)
723 {
724     auto* frameNode = reinterpret_cast<FrameNode*>(node);
725     CHECK_NULL_VOID(frameNode);
726     RefPtr<ScrollControllerBase> listController;
727     RefPtr<ScrollProxy> listProxy;
728     ListModelNG::SetScroller(frameNode, listController, listProxy);
729 }
730 
SetScrollToItemInGroup(ArkUINodeHandle node,ArkUI_Int32 index,ArkUI_Int32 indexInGroup,ArkUI_Bool smooth,ArkUI_Int32 align)731 void SetScrollToItemInGroup(
732     ArkUINodeHandle node, ArkUI_Int32 index, ArkUI_Int32 indexInGroup, ArkUI_Bool smooth, ArkUI_Int32 align)
733 {
734     auto* frameNode = reinterpret_cast<FrameNode*>(node);
735     CHECK_NULL_VOID(frameNode);
736     ScrollAlign scrollAlign = static_cast<OHOS::Ace::ScrollAlign>(align);
737     ListModelNG::ScrollToItemInGroup(frameNode, index, indexInGroup, smooth, scrollAlign);
738 }
739 
SetListMaintainVisibleContentPosition(ArkUINodeHandle node,ArkUI_Bool enabled)740 void SetListMaintainVisibleContentPosition(ArkUINodeHandle node, ArkUI_Bool enabled)
741 {
742     auto* frameNode = reinterpret_cast<FrameNode*>(node);
743     CHECK_NULL_VOID(frameNode);
744     ListModelNG::SetListMaintainVisibleContentPosition(frameNode, enabled);
745 }
746 
ResetListMaintainVisibleContentPosition(ArkUINodeHandle node)747 void ResetListMaintainVisibleContentPosition(ArkUINodeHandle node)
748 {
749     auto* frameNode = reinterpret_cast<FrameNode*>(node);
750     CHECK_NULL_VOID(frameNode);
751     ListModelNG::SetListMaintainVisibleContentPosition(frameNode, false);
752 }
753 
GetListMaintainVisibleContentPosition(ArkUINodeHandle node)754 ArkUI_Bool GetListMaintainVisibleContentPosition(ArkUINodeHandle node)
755 {
756     auto* frameNode = reinterpret_cast<FrameNode*>(node);
757     CHECK_NULL_RETURN(frameNode, false);
758     return ListModelNG::GetListMaintainVisibleContentPosition(frameNode);
759 }
760 
SetListFadingEdge(ArkUINodeHandle node,ArkUI_Bool fadingEdge,ArkUI_Float32 fadingEdgeLengthValue,ArkUI_Int32 fadingEdgeLengthUnit)761 void SetListFadingEdge(
762     ArkUINodeHandle node, ArkUI_Bool fadingEdge, ArkUI_Float32 fadingEdgeLengthValue, ArkUI_Int32 fadingEdgeLengthUnit)
763 {
764     auto* frameNode = reinterpret_cast<FrameNode*>(node);
765     CHECK_NULL_VOID(frameNode);
766     Dimension fadingEdgeLengthDimension =
767         Dimension(fadingEdgeLengthValue, static_cast<OHOS::Ace::DimensionUnit>(fadingEdgeLengthUnit));
768     NG::ScrollableModelNG::SetFadingEdge(frameNode, fadingEdge, fadingEdgeLengthDimension);
769 }
770 
ResetListFadingEdge(ArkUINodeHandle node)771 void ResetListFadingEdge(ArkUINodeHandle node)
772 {
773     auto* frameNode = reinterpret_cast<FrameNode*>(node);
774     CHECK_NULL_VOID(frameNode);
775     NG::ScrollableModelNG::SetFadingEdge(frameNode, false, DEFAULT_FADING_EDGE_LENGTH);
776 }
777 
SetShowCached(ArkUINodeHandle node,ArkUI_Bool show)778 void SetShowCached(ArkUINodeHandle node, ArkUI_Bool show)
779 {
780     auto* frameNode = reinterpret_cast<FrameNode*>(node);
781     CHECK_NULL_VOID(frameNode);
782     ListModelNG::SetShowCached(frameNode, show);
783 }
784 
ResetShowCached(ArkUINodeHandle node)785 void ResetShowCached(ArkUINodeHandle node)
786 {
787     auto* frameNode = reinterpret_cast<FrameNode*>(node);
788     CHECK_NULL_VOID(frameNode);
789     ListModelNG::SetShowCached(frameNode, false);
790 }
791 
GetShowCached(ArkUINodeHandle node)792 ArkUI_Bool GetShowCached(ArkUINodeHandle node)
793 {
794     auto* frameNode = reinterpret_cast<FrameNode*>(node);
795     CHECK_NULL_RETURN(frameNode, false);
796     return ListModelNG::GetShowCached(frameNode);
797 }
798 } // namespace
799 
800 namespace NodeModifier {
GetListModifier()801 const ArkUIListModifier* GetListModifier()
802 {
803     static const ArkUIListModifier modifier = { SetListLanes, ResetListLanes, ResetlistLaneMinAndMaxLength,
804         GetListLanes, GetlistLaneMinLength, GetListLaneMaxLength, GetListLaneGutter, SetEditMode, ResetEditMode,
805         SetMultiSelectable, ResetMultiSelectable, SetChainAnimation, ResetChainAnimation, SetCachedCount,
806         ResetCachedCount, SetCachedIsShown, ResetCachedIsShown, GetCachedIsShown, GetEnableScrollInteraction,
807         SetEnableScrollInteraction, ResetEnableScrollInteraction, GetSticky, SetSticky, ResetSticky, GetListEdgeEffect,
808         SetListEdgeEffect, ResetListEdgeEffect, GetListDirection, SetListDirection, ResetListDirection, GetListFriction,
809         SetListFriction, ResetListFriction, GetListNestedScroll, SetListNestedScroll, ResetListNestedScroll,
810         GetListScrollBar, SetListScrollBar, ResetListScrollBar, GetListScrollBarWidth, SetListScrollBarWidth,
811         ResetListScrollBarWidth, GetListScrollBarColor, SetListScrollBarColor, ResetListScrollBarColor,
812         GetAlignListItem, SetAlignListItem, ResetAlignListItem, SetScrollSnapAlign, ResetScrollSnapAlign,
813         GetScrollSnapAlign, SetContentStartOffset, ResetContentStartOffset, GetContentStartOffset, SetContentEndOffset,
814         ResetContentEndOffset, GetContentEndOffset, ListSetDivider, ListResetDivider, SetChainAnimationOptions,
815         ResetChainAnimationOptions, GetListSpace, SetListSpace, ResetListSpace, SetNodeAdapter, ResetNodeAdapter,
816         GetNodeAdapter, GetCachedCount, SetScrollToIndex, SetScrollBy, SetInitialIndex, ResetInitialIndex,
817         SetListChildrenMainSize, ResetListChildrenMainSize, SetListCloseAllSwipeActions, SetListFlingSpeedLimit,
818         ResetListFlingSpeedLimit, GetInitialIndex, GetlistDivider, SetInitialScroller, ResetInitialScroller,
819         SetScrollToItemInGroup, SetListMaintainVisibleContentPosition, ResetListMaintainVisibleContentPosition,
820         GetListMaintainVisibleContentPosition, SetListFadingEdge, ResetListFadingEdge, SetShowCached, ResetShowCached,
821         GetShowCached, SetOnListScrollIndexCallBack, SetOnScrollVisibleContentChange, SetOnItemMove, SetOnItemDragStart,
822         SetOnItemDragEnter, SetOnItemDragMove, SetOnItemDragLeave, SetOnItemDrop, SetOnListScrollFrameBeginCallBack,
823         SetOnListWillScrollCallBack, SetOnListDidScrollCallBack, SetOnListReachStartCallBack, SetOnListReachEndCallBack,
824         SetOnListScrollStartCallBack, SetOnListScrollStopCallBack, ResetOnListScrollIndex,
825         ResetOnScrollVisibleContentChange, ResetOnItemMove, ResetOnItemDragStart, ResetOnItemDragEnter,
826         ResetOnItemDragMove, ResetOnItemDragLeave, ResetOnItemDrop, ResetOnListScrollStart, ResetOnListScrollStop,
827         ResetOnListScrollFrameBegin, ResetOnListWillScroll, ResetOnListDidScroll, ResetOnListReachStart,
828         ResetOnListReachEnd };
829     return &modifier;
830 }
831 
GetCJUIListModifier()832 const CJUIListModifier* GetCJUIListModifier()
833 {
834     static const CJUIListModifier modifier = { SetListLanes, ResetListLanes, SetEditMode, ResetEditMode,
835         SetMultiSelectable, ResetMultiSelectable, SetChainAnimation, ResetChainAnimation, SetCachedCount,
836         ResetCachedCount, GetEnableScrollInteraction, SetEnableScrollInteraction, ResetEnableScrollInteraction,
837         GetSticky, SetSticky, ResetSticky, GetListEdgeEffect, SetListEdgeEffect, ResetListEdgeEffect, GetListDirection,
838         SetListDirection, ResetListDirection, GetListFriction, SetListFriction, ResetListFriction,
839         GetListNestedScroll, SetListNestedScroll, ResetListNestedScroll, GetListScrollBar, SetListScrollBar,
840         ResetListScrollBar, GetListScrollBarWidth, SetListScrollBarWidth, ResetListScrollBarWidth,
841         GetListScrollBarColor, SetListScrollBarColor, ResetListScrollBarColor, GetAlignListItem, SetAlignListItem,
842         ResetAlignListItem, SetScrollSnapAlign, ResetScrollSnapAlign, SetContentStartOffset, ResetContentStartOffset,
843         SetContentEndOffset, ResetContentEndOffset, ListSetDivider, ListResetDivider, SetChainAnimationOptions,
844         ResetChainAnimationOptions, GetListSpace, SetListSpace, ResetListSpace, SetNodeAdapter, ResetNodeAdapter,
845         GetNodeAdapter, GetCachedCount, SetScrollToIndex, SetScrollBy, SetInitialIndex, ResetInitialIndex,
846         SetListChildrenMainSize, ResetListChildrenMainSize, SetListCloseAllSwipeActions,
847         SetListFlingSpeedLimit, ResetListFlingSpeedLimit, GetInitialIndex, GetlistDivider };
848     return &modifier;
849 }
850 
SetOnListScroll(ArkUINodeHandle node,void * extraParam)851 void SetOnListScroll(ArkUINodeHandle node, void* extraParam)
852 {
853     auto* frameNode = reinterpret_cast<FrameNode*>(node);
854     CHECK_NULL_VOID(frameNode);
855     auto onScroll = [node, extraParam](Dimension scrollOffset, ScrollState scrollState) {
856         ArkUINodeEvent event;
857         event.kind = COMPONENT_ASYNC_EVENT;
858         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
859         event.componentAsyncEvent.subKind = ON_LIST_SCROLL;
860         event.componentAsyncEvent.data[0].f32 = static_cast<float>(scrollOffset.Value());
861         event.componentAsyncEvent.data[1].i32 = static_cast<int>(scrollState);
862         SendArkUIAsyncEvent(&event);
863     };
864     ListModelNG::SetOnScroll(frameNode, std::move(onScroll));
865 }
866 
SetOnListScrollFrameBegin(ArkUINodeHandle node,void * extraParam)867 void SetOnListScrollFrameBegin(ArkUINodeHandle node, void* extraParam)
868 {
869     auto* frameNode = reinterpret_cast<FrameNode*>(node);
870     CHECK_NULL_VOID(frameNode);
871     int32_t nodeId = frameNode->GetId();
872     auto onScrollFrameBegin = [nodeId, node, extraParam](
873                                   const Dimension& offset, const ScrollState& state) -> ScrollFrameResult {
874         ScrollFrameResult scrollRes { .offset = offset };
875         ArkUINodeEvent event;
876         event.kind = COMPONENT_ASYNC_EVENT;
877         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
878         event.componentAsyncEvent.subKind = ON_LIST_SCROLL_FRAME_BEGIN;
879         event.componentAsyncEvent.data[0].f32 = static_cast<float>(offset.Value());
880         event.componentAsyncEvent.data[1].i32 = static_cast<int>(state);
881         SendArkUIAsyncEvent(&event);
882         scrollRes.offset = Dimension(event.componentAsyncEvent.data[0].f32, DimensionUnit::VP);
883         return scrollRes;
884     };
885     ListModelNG::SetOnScrollFrameBegin(frameNode, std::move(onScrollFrameBegin));
886 }
887 
SetOnListScrollStart(ArkUINodeHandle node,void * extraParam)888 void SetOnListScrollStart(ArkUINodeHandle node, void* extraParam)
889 {
890     auto* frameNode = reinterpret_cast<FrameNode*>(node);
891     CHECK_NULL_VOID(frameNode);
892     int32_t nodeId = frameNode->GetId();
893     auto onScrollStart = [nodeId, node, extraParam]() -> void {
894         ArkUINodeEvent event;
895         event.kind = COMPONENT_ASYNC_EVENT;
896         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
897         event.componentAsyncEvent.subKind = ON_LIST_SCROLL_START;
898         SendArkUIAsyncEvent(&event);
899     };
900     ListModelNG::SetOnScrollStart(frameNode, std::move(onScrollStart));
901 }
902 
SetOnListScrollStop(ArkUINodeHandle node,void * extraParam)903 void SetOnListScrollStop(ArkUINodeHandle node, void* extraParam)
904 {
905     auto* frameNode = reinterpret_cast<FrameNode*>(node);
906     CHECK_NULL_VOID(frameNode);
907     int32_t nodeId = frameNode->GetId();
908     auto onScrollStop = [nodeId, node, extraParam]() -> void {
909         ArkUINodeEvent event;
910         event.kind = COMPONENT_ASYNC_EVENT;
911         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
912         event.componentAsyncEvent.subKind = ON_LIST_SCROLL_STOP;
913         SendArkUIAsyncEvent(&event);
914     };
915     ListModelNG::SetOnScrollStop(frameNode, std::move(onScrollStop));
916 }
917 
SetOnListWillScroll(ArkUINodeHandle node,void * extraParam)918 void SetOnListWillScroll(ArkUINodeHandle node, void* extraParam)
919 {
920     auto* frameNode = reinterpret_cast<FrameNode*>(node);
921     CHECK_NULL_VOID(frameNode);
922     int32_t nodeId = frameNode->GetId();
923     auto onWillScroll = [nodeId, node, extraParam](const Dimension& offset, const ScrollState& state,
924                             ScrollSource source) -> ScrollFrameResult {
925         ScrollFrameResult scrollRes { .offset = offset };
926         ArkUINodeEvent event;
927         bool usePx = NodeModel::UsePXUnit(reinterpret_cast<ArkUI_Node*>(extraParam));
928         event.kind = COMPONENT_ASYNC_EVENT;
929         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
930         event.componentAsyncEvent.subKind = ON_LIST_WILL_SCROLL;
931         event.componentAsyncEvent.data[0].f32 =
932             usePx ? static_cast<float>(offset.ConvertToPx()) : static_cast<float>(offset.Value());
933         event.componentAsyncEvent.data[1].i32 = static_cast<int>(state);
934         event.componentAsyncEvent.data[2].i32 = static_cast<int>(source);
935         SendArkUIAsyncEvent(&event);
936         scrollRes.offset =
937             Dimension(event.componentAsyncEvent.data[0].f32, usePx ? DimensionUnit::PX : DimensionUnit::VP);
938         return scrollRes;
939     };
940     ScrollableModelNG::SetOnWillScroll(frameNode, std::move(onWillScroll));
941 }
942 
SetOnListDidScroll(ArkUINodeHandle node,void * extraParam)943 void SetOnListDidScroll(ArkUINodeHandle node, void* extraParam)
944 {
945     auto* frameNode = reinterpret_cast<FrameNode*>(node);
946     CHECK_NULL_VOID(frameNode);
947     int32_t nodeId = frameNode->GetId();
948     auto onDidScroll = [nodeId, node, extraParam](const Dimension& offset, const ScrollState& state) -> void {
949         ArkUINodeEvent event;
950         event.kind = COMPONENT_ASYNC_EVENT;
951         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
952         bool usePx = NodeModel::UsePXUnit(reinterpret_cast<ArkUI_Node*>(extraParam));
953         event.componentAsyncEvent.subKind = ON_LIST_DID_SCROLL;
954         event.componentAsyncEvent.data[0].f32 =
955             usePx ? static_cast<float>(offset.ConvertToPx()) : static_cast<float>(offset.Value());
956         event.componentAsyncEvent.data[1].i32 = static_cast<int32_t>(state);
957         SendArkUIAsyncEvent(&event);
958     };
959     ScrollableModelNG::SetOnDidScroll(frameNode, std::move(onDidScroll));
960 }
961 
SetOnListScrollIndex(ArkUINodeHandle node,void * extraParam)962 void SetOnListScrollIndex(ArkUINodeHandle node, void* extraParam)
963 {
964     auto* frameNode = reinterpret_cast<FrameNode*>(node);
965     CHECK_NULL_VOID(frameNode);
966     int32_t nodeId = frameNode->GetId();
967     auto onScrollIndex = [nodeId, node, extraParam](int32_t first, int32_t last, int32_t center) -> void {
968         ArkUINodeEvent event;
969         event.kind = COMPONENT_ASYNC_EVENT;
970         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
971         event.componentAsyncEvent.subKind = ON_LIST_SCROLL_INDEX;
972         event.componentAsyncEvent.data[0].i32 = first;
973         event.componentAsyncEvent.data[1].i32 = last;
974         event.componentAsyncEvent.data[2].i32 = center;
975         SendArkUIAsyncEvent(&event);
976     };
977     ListModelNG::SetOnScrollIndex(frameNode, std::move(onScrollIndex));
978 }
979 
SetOnListReachStart(ArkUINodeHandle node,void * extraParam)980 void SetOnListReachStart(ArkUINodeHandle node, void* extraParam)
981 {
982     auto* frameNode = reinterpret_cast<FrameNode*>(node);
983     CHECK_NULL_VOID(frameNode);
984     auto onReachStart = [node, extraParam]() -> void {
985         ArkUINodeEvent event;
986         event.kind = COMPONENT_ASYNC_EVENT;
987         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
988         event.componentAsyncEvent.subKind = ON_LIST_REACH_START;
989         SendArkUIAsyncEvent(&event);
990     };
991     ListModelNG::SetOnReachStart(frameNode, std::move(onReachStart));
992 }
993 
SetOnListReachEnd(ArkUINodeHandle node,void * extraParam)994 void SetOnListReachEnd(ArkUINodeHandle node, void* extraParam)
995 {
996     auto* frameNode = reinterpret_cast<FrameNode*>(node);
997     CHECK_NULL_VOID(frameNode);
998     auto onReachEnd = [node, extraParam]() -> void {
999         ArkUINodeEvent event;
1000         event.kind = COMPONENT_ASYNC_EVENT;
1001         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
1002         event.componentAsyncEvent.subKind = ON_LIST_REACH_END;
1003         SendArkUIAsyncEvent(&event);
1004     };
1005     ListModelNG::SetOnReachEnd(frameNode, std::move(onReachEnd));
1006 }
1007 
SetOnListScrollVisibleContentChange(ArkUINodeHandle node,void * extraParam)1008 void SetOnListScrollVisibleContentChange(ArkUINodeHandle node, void* extraParam)
1009 {
1010     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1011     CHECK_NULL_VOID(frameNode);
1012     auto onScrollVisibleContentChange = [node, extraParam](const ListItemIndex start, const ListItemIndex end) -> void {
1013         ArkUINodeEvent event;
1014         event.kind = COMPONENT_ASYNC_EVENT;
1015         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
1016         event.componentAsyncEvent.subKind = ON_LIST_SCROLL_VISIBLE_CONTENT_CHANGE;
1017         event.componentAsyncEvent.data[0].i32 = start.index;
1018         event.componentAsyncEvent.data[1].i32 = start.area;
1019         event.componentAsyncEvent.data[2].i32 = start.indexInGroup;
1020         event.componentAsyncEvent.data[3].i32 = end.index;
1021         event.componentAsyncEvent.data[4].i32 = end.area;
1022         event.componentAsyncEvent.data[5].i32 = end.indexInGroup;
1023         SendArkUIAsyncEvent(&event);
1024     };
1025     ListModelNG::SetOnScrollVisibleContentChange(frameNode, std::move(onScrollVisibleContentChange));
1026 }
1027 
SetOnListScrollIndexCallBack(ArkUINodeHandle node,void * extraParam)1028 void SetOnListScrollIndexCallBack(ArkUINodeHandle node, void* extraParam)
1029 {
1030     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1031     CHECK_NULL_VOID(frameNode);
1032     if (extraParam) {
1033         auto onScrollIndex = reinterpret_cast<OnScrollIndexEvent*>(extraParam);
1034         ListModelNG::SetOnScrollIndex(frameNode, std::move(*onScrollIndex));
1035     } else {
1036         ListModelNG::SetOnScrollIndex(frameNode, nullptr);
1037     }
1038 }
1039 
SetOnScrollVisibleContentChange(ArkUINodeHandle node,void * extraParam)1040 void SetOnScrollVisibleContentChange(ArkUINodeHandle node, void* extraParam)
1041 {
1042     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1043     CHECK_NULL_VOID(frameNode);
1044     if (extraParam) {
1045         auto onScrollVisibleContentChange = reinterpret_cast<OnScrollVisibleContentChangeEvent*>(extraParam);
1046         ListModelNG::SetOnScrollVisibleContentChange(frameNode, std::move(*onScrollVisibleContentChange));
1047     } else {
1048         ListModelNG::SetOnScrollVisibleContentChange(frameNode, nullptr);
1049     }
1050 }
1051 
SetOnItemMove(ArkUINodeHandle node,void * extraParam)1052 void SetOnItemMove(ArkUINodeHandle node, void* extraParam)
1053 {
1054     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1055     CHECK_NULL_VOID(frameNode);
1056     if (extraParam) {
1057         auto onItemMove = reinterpret_cast<OnItemMoveEvent*>(extraParam);
1058         ListModelNG::SetOnItemMove(frameNode, std::move(*onItemMove));
1059     } else {
1060         ListModelNG::SetOnItemMove(frameNode, nullptr);
1061     }
1062 }
1063 
SetOnItemDragStart(ArkUINodeHandle node,void * extraParam)1064 void SetOnItemDragStart(ArkUINodeHandle node, void* extraParam)
1065 {
1066     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1067     CHECK_NULL_VOID(frameNode);
1068     if (extraParam) {
1069         auto onItemDragStart = reinterpret_cast<OnItemDragStartFunc*>(extraParam);
1070         ListModelNG::SetOnItemDragStart(frameNode, std::move(*onItemDragStart));
1071     } else {
1072         ListModelNG::SetOnItemDragStart(frameNode, nullptr);
1073     }
1074 }
1075 
SetOnItemDragEnter(ArkUINodeHandle node,void * extraParam)1076 void SetOnItemDragEnter(ArkUINodeHandle node, void* extraParam)
1077 {
1078     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1079     CHECK_NULL_VOID(frameNode);
1080     if (extraParam) {
1081         auto onItemDragEnter = reinterpret_cast<OnItemDragEnterFunc*>(extraParam);
1082         ListModelNG::SetOnItemDragEnter(frameNode, std::move(*onItemDragEnter));
1083     } else {
1084         ListModelNG::SetOnItemDragEnter(frameNode, nullptr);
1085     }
1086 }
1087 
SetOnItemDragMove(ArkUINodeHandle node,void * extraParam)1088 void SetOnItemDragMove(ArkUINodeHandle node, void* extraParam)
1089 {
1090     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1091     CHECK_NULL_VOID(frameNode);
1092     if (extraParam) {
1093         auto onItemDragMove = reinterpret_cast<OnItemDragMoveFunc*>(extraParam);
1094         ListModelNG::SetOnItemDragMove(frameNode, std::move(*onItemDragMove));
1095     } else {
1096         ListModelNG::SetOnItemDragMove(frameNode, nullptr);
1097     }
1098 }
1099 
SetOnItemDragLeave(ArkUINodeHandle node,void * extraParam)1100 void SetOnItemDragLeave(ArkUINodeHandle node, void* extraParam)
1101 {
1102     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1103     CHECK_NULL_VOID(frameNode);
1104     if (extraParam) {
1105         auto onItemDragLeave = reinterpret_cast<OnItemDragLeaveFunc*>(extraParam);
1106         ListModelNG::SetOnItemDragLeave(frameNode, std::move(*onItemDragLeave));
1107     } else {
1108         ListModelNG::SetOnItemDragLeave(frameNode, nullptr);
1109     }
1110 }
1111 
SetOnItemDrop(ArkUINodeHandle node,void * extraParam)1112 void SetOnItemDrop(ArkUINodeHandle node, void* extraParam)
1113 {
1114     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1115     CHECK_NULL_VOID(frameNode);
1116     if (extraParam) {
1117         auto onItemDrop = reinterpret_cast<OnItemDropFunc*>(extraParam);
1118         ListModelNG::SetOnItemDrop(frameNode, std::move(*onItemDrop));
1119     } else {
1120         ListModelNG::SetOnItemDrop(frameNode, nullptr);
1121     }
1122 }
1123 
SetOnListScrollFrameBeginCallBack(ArkUINodeHandle node,void * extraParam)1124 void SetOnListScrollFrameBeginCallBack(ArkUINodeHandle node, void* extraParam)
1125 {
1126     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1127     CHECK_NULL_VOID(frameNode);
1128     if (extraParam) {
1129         auto onScrollFrameBegin = reinterpret_cast<OnScrollFrameBeginEvent*>(extraParam);
1130         ListModelNG::SetOnScrollFrameBegin(frameNode, std::move(*onScrollFrameBegin));
1131     } else {
1132         ListModelNG::SetOnScrollFrameBegin(frameNode, nullptr);
1133     }
1134 }
1135 
SetOnListWillScrollCallBack(ArkUINodeHandle node,void * extraParam)1136 void SetOnListWillScrollCallBack(ArkUINodeHandle node, void* extraParam)
1137 {
1138     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1139     CHECK_NULL_VOID(frameNode);
1140     if (extraParam) {
1141         auto onWillScroll = reinterpret_cast<OnWillScrollEvent*>(extraParam);
1142         ScrollableModelNG::SetOnWillScroll(frameNode, std::move(*onWillScroll));
1143     } else {
1144         ScrollableModelNG::SetOnWillScroll(frameNode, nullptr);
1145     }
1146 }
1147 
SetOnListDidScrollCallBack(ArkUINodeHandle node,void * extraParam)1148 void SetOnListDidScrollCallBack(ArkUINodeHandle node, void* extraParam)
1149 {
1150     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1151     CHECK_NULL_VOID(frameNode);
1152     if (extraParam) {
1153         auto onDidScroll = reinterpret_cast<OnScrollEvent*>(extraParam);
1154         ScrollableModelNG::SetOnDidScroll(frameNode, std::move(*onDidScroll));
1155     } else {
1156         ScrollableModelNG::SetOnDidScroll(frameNode, nullptr);
1157     }
1158 }
1159 
SetOnListReachStartCallBack(ArkUINodeHandle node,void * extraParam)1160 void SetOnListReachStartCallBack(ArkUINodeHandle node, void* extraParam)
1161 {
1162     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1163     CHECK_NULL_VOID(frameNode);
1164     if (extraParam) {
1165         auto onReachStart = reinterpret_cast<OnReachEvent*>(extraParam);
1166         ListModelNG::SetOnReachStart(frameNode, std::move(*onReachStart));
1167     } else {
1168         ListModelNG::SetOnReachStart(frameNode, nullptr);
1169     }
1170 }
1171 
SetOnListReachEndCallBack(ArkUINodeHandle node,void * extraParam)1172 void SetOnListReachEndCallBack(ArkUINodeHandle node, void* extraParam)
1173 {
1174     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1175     CHECK_NULL_VOID(frameNode);
1176     if (extraParam) {
1177         auto onReachEnd = reinterpret_cast<OnReachEvent*>(extraParam);
1178         ListModelNG::SetOnReachEnd(frameNode, std::move(*onReachEnd));
1179     } else {
1180         ListModelNG::SetOnReachEnd(frameNode, nullptr);
1181     }
1182 }
1183 
SetOnListScrollStartCallBack(ArkUINodeHandle node,void * extraParam)1184 void SetOnListScrollStartCallBack(ArkUINodeHandle node, void* extraParam)
1185 {
1186     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1187     CHECK_NULL_VOID(frameNode);
1188     if (extraParam) {
1189         auto onScrollStart = reinterpret_cast<OnScrollStartEvent*>(extraParam);
1190         ListModelNG::SetOnScrollStart(frameNode, std::move(*onScrollStart));
1191     } else {
1192         ListModelNG::SetOnScrollStart(frameNode, nullptr);
1193     }
1194 }
1195 
SetOnListScrollStopCallBack(ArkUINodeHandle node,void * extraParam)1196 void SetOnListScrollStopCallBack(ArkUINodeHandle node, void* extraParam)
1197 {
1198     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1199     CHECK_NULL_VOID(frameNode);
1200     if (extraParam) {
1201         auto onScrollStop = reinterpret_cast<OnScrollStopEvent*>(extraParam);
1202         ListModelNG::SetOnScrollStop(frameNode, std::move(*onScrollStop));
1203     } else {
1204         ListModelNG::SetOnScrollStop(frameNode, nullptr);
1205     }
1206 }
1207 
ResetOnListScroll(ArkUINodeHandle node)1208 void ResetOnListScroll(ArkUINodeHandle node)
1209 {
1210     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1211     CHECK_NULL_VOID(frameNode);
1212     ListModelNG::SetOnScroll(frameNode, nullptr);
1213 }
1214 
ResetOnListScrollIndex(ArkUINodeHandle node)1215 void ResetOnListScrollIndex(ArkUINodeHandle node)
1216 {
1217     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1218     CHECK_NULL_VOID(frameNode);
1219     ListModelNG::SetOnScrollIndex(frameNode, nullptr);
1220 }
1221 
ResetOnScrollVisibleContentChange(ArkUINodeHandle node)1222 void ResetOnScrollVisibleContentChange(ArkUINodeHandle node)
1223 {
1224     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1225     CHECK_NULL_VOID(frameNode);
1226     ListModelNG::SetOnScrollVisibleContentChange(frameNode, nullptr);
1227 }
1228 
ResetOnItemMove(ArkUINodeHandle node)1229 void ResetOnItemMove(ArkUINodeHandle node)
1230 {
1231     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1232     CHECK_NULL_VOID(frameNode);
1233     ListModelNG::SetOnItemMove(frameNode, nullptr);
1234 }
1235 
ResetOnItemDragStart(ArkUINodeHandle node)1236 void ResetOnItemDragStart(ArkUINodeHandle node)
1237 {
1238     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1239     CHECK_NULL_VOID(frameNode);
1240     ListModelNG::SetOnItemDragStart(frameNode, nullptr);
1241 }
1242 
ResetOnItemDragEnter(ArkUINodeHandle node)1243 void ResetOnItemDragEnter(ArkUINodeHandle node)
1244 {
1245     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1246     CHECK_NULL_VOID(frameNode);
1247     ListModelNG::SetOnItemDragEnter(frameNode, nullptr);
1248 }
1249 
ResetOnItemDragMove(ArkUINodeHandle node)1250 void ResetOnItemDragMove(ArkUINodeHandle node)
1251 {
1252     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1253     CHECK_NULL_VOID(frameNode);
1254     ListModelNG::SetOnItemDragMove(frameNode, nullptr);
1255 }
1256 
ResetOnItemDragLeave(ArkUINodeHandle node)1257 void ResetOnItemDragLeave(ArkUINodeHandle node)
1258 {
1259     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1260     CHECK_NULL_VOID(frameNode);
1261     ListModelNG::SetOnItemDragLeave(frameNode, nullptr);
1262 }
1263 
ResetOnItemDrop(ArkUINodeHandle node)1264 void ResetOnItemDrop(ArkUINodeHandle node)
1265 {
1266     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1267     CHECK_NULL_VOID(frameNode);
1268     ListModelNG::SetOnItemDrop(frameNode, nullptr);
1269 }
1270 
ResetOnListScrollStart(ArkUINodeHandle node)1271 void ResetOnListScrollStart(ArkUINodeHandle node)
1272 {
1273     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1274     CHECK_NULL_VOID(frameNode);
1275     ListModelNG::SetOnScrollStart(frameNode, nullptr);
1276 }
1277 
ResetOnListScrollStop(ArkUINodeHandle node)1278 void ResetOnListScrollStop(ArkUINodeHandle node)
1279 {
1280     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1281     CHECK_NULL_VOID(frameNode);
1282     ListModelNG::SetOnScrollStop(frameNode, nullptr);
1283 }
1284 
ResetOnListScrollFrameBegin(ArkUINodeHandle node)1285 void ResetOnListScrollFrameBegin(ArkUINodeHandle node)
1286 {
1287     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1288     CHECK_NULL_VOID(frameNode);
1289     ListModelNG::SetOnScrollFrameBegin(frameNode, nullptr);
1290 }
1291 
ResetOnListWillScroll(ArkUINodeHandle node)1292 void ResetOnListWillScroll(ArkUINodeHandle node)
1293 {
1294     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1295     CHECK_NULL_VOID(frameNode);
1296     ScrollableModelNG::SetOnWillScroll(frameNode, nullptr);
1297 }
1298 
ResetOnListDidScroll(ArkUINodeHandle node)1299 void ResetOnListDidScroll(ArkUINodeHandle node)
1300 {
1301     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1302     CHECK_NULL_VOID(frameNode);
1303     ScrollableModelNG::SetOnDidScroll(frameNode, nullptr);
1304 }
1305 
ResetOnListReachStart(ArkUINodeHandle node)1306 void ResetOnListReachStart(ArkUINodeHandle node)
1307 {
1308     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1309     CHECK_NULL_VOID(frameNode);
1310     ListModelNG::SetOnReachStart(frameNode, nullptr);
1311 }
1312 
ResetOnListReachEnd(ArkUINodeHandle node)1313 void ResetOnListReachEnd(ArkUINodeHandle node)
1314 {
1315     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1316     CHECK_NULL_VOID(frameNode);
1317     ListModelNG::SetOnReachEnd(frameNode, nullptr);
1318 }
1319 } // namespace NodeModifier
1320 } // namespace OHOS::Ace::NG
1321