• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-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 
16 #include "core/components_ng/pattern/swiper/swiper_model_ng.h"
17 
18 #include <cstdint>
19 #include <functional>
20 #include <memory>
21 
22 #include "base/error/error_code.h"
23 #include "base/geometry/axis.h"
24 #include "base/memory/referenced.h"
25 #include "base/utils/utils.h"
26 #include "core/components/swiper/swiper_component.h"
27 #include "core/components_ng/base/frame_node.h"
28 #include "core/components_ng/base/view_stack_processor.h"
29 #include "core/components_ng/pattern/swiper/swiper_pattern.h"
30 #include "core/components_ng/pattern/swiper/swiper_node.h"
31 #include "core/components_ng/pattern/swiper_indicator/indicator_common/swiper_indicator_pattern.h"
32 #include "core/components_ng/pattern/swiper_indicator/indicator_common/swiper_indicator_utils.h"
33 #include "core/components_v2/inspector/inspector_constants.h"
34 
35 namespace OHOS::Ace::NG {
36 typedef enum {
37     ARKUI_SWIPER_ARROW_HIDE = 0,
38     ARKUI_SWIPER_ARROW_SHOW,
39     ARKUI_SWIPER_ARROW_SHOW_ON_HOVER,
40 } SwiperArrow;
41 
42 
Create()43 RefPtr<SwiperController> SwiperModelNG::Create()
44 {
45     auto* stack = ViewStackProcessor::GetInstance();
46     CHECK_NULL_RETURN(stack, nullptr);
47     auto nodeId = stack->ClaimNodeId();
48     ACE_LAYOUT_SCOPED_TRACE("Create[%s][self:%d]", V2::SWIPER_ETS_TAG, nodeId);
49     auto swiperNode = FrameNode::GetOrCreateFrameNode(
50         V2::SWIPER_ETS_TAG, nodeId, []() { return AceType::MakeRefPtr<SwiperPattern>(); });
51 
52     stack->Push(swiperNode);
53     auto pattern = swiperNode->GetPattern<SwiperPattern>();
54     CHECK_NULL_RETURN(pattern, nullptr);
55     return pattern->GetSwiperController();
56 }
57 
CreateFrameNode(int32_t nodeId)58 RefPtr<FrameNode> SwiperModelNG::CreateFrameNode(int32_t nodeId)
59 {
60     auto swiperNode = ElementRegister::GetInstance()->GetSpecificItemById<SwiperNode>(nodeId);
61     if (swiperNode) {
62         if (swiperNode->GetTag() == V2::SWIPER_ETS_TAG) {
63             return swiperNode;
64         }
65         ElementRegister::GetInstance()->RemoveItemSilently(nodeId);
66         auto parent = swiperNode->GetParent();
67         if (parent) {
68             parent->RemoveChild(swiperNode);
69         }
70     }
71     // adapt for capi
72     swiperNode = AceType::MakeRefPtr<SwiperNode>(V2::SWIPER_ETS_TAG, nodeId, AceType::MakeRefPtr<SwiperPattern>());
73     swiperNode->InitializePatternAndContext();
74     ElementRegister::GetInstance()->AddUINode(swiperNode);
75     return swiperNode;
76 }
77 
SetDirection(Axis axis)78 void SwiperModelNG::SetDirection(Axis axis)
79 {
80     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, Direction, axis);
81 }
82 
SetIndex(uint32_t index)83 void SwiperModelNG::SetIndex(uint32_t index)
84 {
85     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, Index, index);
86 }
87 
SetDisplayMode(SwiperDisplayMode displayMode)88 void SwiperModelNG::SetDisplayMode(SwiperDisplayMode displayMode)
89 {
90     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisplayMode, displayMode);
91 }
92 
SetDisplayCount(int32_t displayCount)93 void SwiperModelNG::SetDisplayCount(int32_t displayCount)
94 {
95     if (displayCount <= 0) {
96         return;
97     }
98 
99     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisplayCount, displayCount);
100 }
101 
ResetDisplayCount()102 void SwiperModelNG::ResetDisplayCount()
103 {
104     ACE_RESET_LAYOUT_PROPERTY(SwiperLayoutProperty, DisplayCount);
105 }
106 
SetMinSize(const Dimension & minSize)107 void SwiperModelNG::SetMinSize(const Dimension& minSize)
108 {
109     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, MinSize, minSize);
110 }
111 
SetShowIndicator(bool showIndicator)112 void SwiperModelNG::SetShowIndicator(bool showIndicator)
113 {
114     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, ShowIndicator, showIndicator);
115 }
116 
SetIndicatorType(SwiperIndicatorType indicatorType)117 void SwiperModelNG::SetIndicatorType(SwiperIndicatorType indicatorType)
118 {
119     SwiperIndicatorUtils::SetSwiperIndicatorType(indicatorType);
120     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, IndicatorType, indicatorType);
121 }
122 
SetItemSpace(const Dimension & itemSpace)123 void SwiperModelNG::SetItemSpace(const Dimension& itemSpace)
124 {
125     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, ItemSpace, itemSpace);
126 }
127 
SetCachedCount(int32_t cachedCount)128 void SwiperModelNG::SetCachedCount(int32_t cachedCount)
129 {
130     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
131     CHECK_NULL_VOID(swiperNode);
132     auto pattern = swiperNode->GetPattern<SwiperPattern>();
133     CHECK_NULL_VOID(pattern);
134     pattern->SetCachedCount(cachedCount);
135 
136     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, CachedCount, cachedCount);
137 }
138 
SetCachedIsShown(bool isShown)139 void SwiperModelNG::SetCachedIsShown(bool isShown)
140 {
141     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, CachedIsShown, isShown);
142 }
143 
SetCachedIsShown(FrameNode * frameNode,bool isShown)144 void SwiperModelNG::SetCachedIsShown(FrameNode* frameNode, bool isShown)
145 {
146     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, CachedIsShown, isShown, frameNode);
147 }
148 
SetIsIndicatorCustomSize(bool isCustomSize)149 void SwiperModelNG::SetIsIndicatorCustomSize(bool isCustomSize)
150 {
151     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
152     CHECK_NULL_VOID(swiperNode);
153     auto pattern = swiperNode->GetPattern<SwiperPattern>();
154     CHECK_NULL_VOID(pattern);
155     pattern->SetIsIndicatorCustomSize(isCustomSize);
156 }
157 
SetIndicatorInteractive(bool interactive)158 void SwiperModelNG::SetIndicatorInteractive(bool interactive)
159 {
160     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
161     CHECK_NULL_VOID(swiperNode);
162     auto pattern = swiperNode->GetPattern<SwiperPattern>();
163     CHECK_NULL_VOID(pattern);
164     pattern->SetIndicatorInteractive(interactive);
165 }
166 
SetAutoPlay(bool autoPlay)167 void SwiperModelNG::SetAutoPlay(bool autoPlay)
168 {
169     ACE_UPDATE_PAINT_PROPERTY(SwiperPaintProperty, AutoPlay, autoPlay);
170 }
171 
SetAutoPlayInterval(uint32_t interval)172 void SwiperModelNG::SetAutoPlayInterval(uint32_t interval)
173 {
174     ACE_UPDATE_PAINT_PROPERTY(SwiperPaintProperty, AutoPlayInterval, interval);
175 }
176 
SetDuration(uint32_t duration)177 void SwiperModelNG::SetDuration(uint32_t duration)
178 {
179     ACE_UPDATE_PAINT_PROPERTY(SwiperPaintProperty, Duration, duration);
180 }
181 
SetLoop(bool loop)182 void SwiperModelNG::SetLoop(bool loop)
183 {
184     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, Loop, loop);
185 }
186 
SetEnabled(bool enabled)187 void SwiperModelNG::SetEnabled(bool enabled)
188 {
189     ACE_UPDATE_PAINT_PROPERTY(SwiperPaintProperty, Enabled, enabled);
190 }
191 
SetDisableSwipe(bool disableSwipe)192 void SwiperModelNG::SetDisableSwipe(bool disableSwipe)
193 {
194     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisableSwipe, disableSwipe);
195 }
196 
SetEdgeEffect(EdgeEffect edgeEffect)197 void SwiperModelNG::SetEdgeEffect(EdgeEffect edgeEffect)
198 {
199     ACE_UPDATE_PAINT_PROPERTY(SwiperPaintProperty, EdgeEffect, edgeEffect);
200 }
201 
SetCurve(const RefPtr<Curve> & curve)202 void SwiperModelNG::SetCurve(const RefPtr<Curve>& curve)
203 {
204     ACE_UPDATE_PAINT_PROPERTY(SwiperPaintProperty, Curve, curve);
205 }
206 
SetOnChange(std::function<void (const BaseEventInfo * info)> && onChange)207 void SwiperModelNG::SetOnChange(std::function<void(const BaseEventInfo* info)>&& onChange)
208 {
209     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
210     CHECK_NULL_VOID(swiperNode);
211     auto pattern = swiperNode->GetPattern<SwiperPattern>();
212     CHECK_NULL_VOID(pattern);
213 
214     pattern->UpdateChangeEvent([event = std::move(onChange)](int32_t index) {
215         SwiperChangeEvent eventInfo(index);
216         event(&eventInfo);
217     });
218 }
219 
SetOnAnimationStart(AnimationStartEvent && onAnimationStart)220 void SwiperModelNG::SetOnAnimationStart(AnimationStartEvent&& onAnimationStart)
221 {
222     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
223     CHECK_NULL_VOID(swiperNode);
224     auto pattern = swiperNode->GetPattern<SwiperPattern>();
225     CHECK_NULL_VOID(pattern);
226 
227     pattern->UpdateAnimationStartEvent([event = std::move(onAnimationStart)](int32_t index, int32_t targetIndex,
228                                            const AnimationCallbackInfo& info) { event(index, targetIndex, info); });
229 }
230 
SetOnAnimationEnd(AnimationEndEvent && onAnimationEnd)231 void SwiperModelNG::SetOnAnimationEnd(AnimationEndEvent&& onAnimationEnd)
232 {
233     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
234     CHECK_NULL_VOID(swiperNode);
235     auto pattern = swiperNode->GetPattern<SwiperPattern>();
236     CHECK_NULL_VOID(pattern);
237 
238     pattern->UpdateAnimationEndEvent(
239         [event = std::move(onAnimationEnd)](int32_t index, const AnimationCallbackInfo& info) { event(index, info); });
240 }
241 
242 
SetOnGestureSwipe(GestureSwipeEvent && onGestureSwipe)243 void SwiperModelNG::SetOnGestureSwipe(GestureSwipeEvent&& onGestureSwipe)
244 {
245     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
246     CHECK_NULL_VOID(swiperNode);
247     auto eventHub = swiperNode->GetEventHub<SwiperEventHub>();
248     CHECK_NULL_VOID(eventHub);
249 
250     eventHub->SetGestureSwipeEvent(
251         [event = std::move(onGestureSwipe)](int32_t index, const AnimationCallbackInfo& info) { event(index, info); });
252 }
253 
SetNestedScroll(FrameNode * frameNode,const int32_t nestedOpt)254 void SwiperModelNG::SetNestedScroll(FrameNode* frameNode, const int32_t nestedOpt)
255 {
256     CHECK_NULL_VOID(frameNode);
257     auto pattern = frameNode->GetPattern<SwiperPattern>();
258     CHECK_NULL_VOID(pattern);
259     NestedScrollOptions option;
260     option.forward = static_cast<NestedScrollMode>(nestedOpt);
261     option.backward = static_cast<NestedScrollMode>(nestedOpt);
262     pattern->SetNestedScroll(option);
263 }
264 
SetSwipeByGroup(FrameNode * frameNode,bool swipeByGroup)265 void SwiperModelNG::SetSwipeByGroup(FrameNode* frameNode, bool swipeByGroup)
266 {
267     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, SwipeByGroup, swipeByGroup, frameNode);
268 }
269 
SetRemoteMessageEventId(RemoteCallback && remoteCallback)270 void SwiperModelNG::SetRemoteMessageEventId(RemoteCallback&& remoteCallback) {}
271 
SetIndicatorStyle(const SwiperParameters & swiperParameters)272 void SwiperModelNG::SetIndicatorStyle(const SwiperParameters& swiperParameters)
273 {
274     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
275     CHECK_NULL_VOID(swiperNode);
276     auto pattern = swiperNode->GetPattern<SwiperPattern>();
277     CHECK_NULL_VOID(pattern);
278     pattern->SetSwiperParameters(swiperParameters);
279 };
280 
SetDotIndicatorStyle(const SwiperParameters & swiperParameters)281 void SwiperModelNG::SetDotIndicatorStyle(const SwiperParameters& swiperParameters)
282 {
283     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
284     CHECK_NULL_VOID(swiperNode);
285     auto pattern = swiperNode->GetPattern<SwiperPattern>();
286     CHECK_NULL_VOID(pattern);
287     pattern->SetSwiperParameters(swiperParameters);
288 };
289 
SetBindIndicator(bool bind)290 void SwiperModelNG::SetBindIndicator(bool bind)
291 {
292     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
293     CHECK_NULL_VOID(swiperNode);
294     auto pattern = swiperNode->GetPattern<SwiperPattern>();
295     CHECK_NULL_VOID(pattern);
296     pattern->SetBindIndicator(bind);
297 }
298 
SetDigitIndicatorStyle(const SwiperDigitalParameters & swiperDigitalParameters)299 void SwiperModelNG::SetDigitIndicatorStyle(const SwiperDigitalParameters& swiperDigitalParameters)
300 {
301     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
302     CHECK_NULL_VOID(swiperNode);
303     auto pattern = swiperNode->GetPattern<SwiperPattern>();
304     CHECK_NULL_VOID(pattern);
305     pattern->SetSwiperDigitalParameters(swiperDigitalParameters);
306 };
307 
SetOnClick(std::function<void (const BaseEventInfo * info,const RefPtr<V2::InspectorFunctionImpl> & impl)> && value)308 void SwiperModelNG::SetOnClick(
309     std::function<void(const BaseEventInfo* info, const RefPtr<V2::InspectorFunctionImpl>& impl)>&& value)
310 {}
311 
SetMainSwiperSizeWidth()312 void SwiperModelNG::SetMainSwiperSizeWidth() {}
313 
SetMainSwiperSizeHeight()314 void SwiperModelNG::SetMainSwiperSizeHeight() {}
315 
SetPreviousMargin(const Dimension & prevMargin,bool ignoreBlank)316 void SwiperModelNG::SetPreviousMargin(const Dimension& prevMargin, bool ignoreBlank)
317 {
318     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, PrevMargin, prevMargin);
319     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, PrevMarginIgnoreBlank, ignoreBlank);
320     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
321     CHECK_NULL_VOID(swiperNode);
322     auto pattern = swiperNode->GetPattern<SwiperPattern>();
323     CHECK_NULL_VOID(pattern);
324     pattern->SetPrevMarginIgnoreBlank(ignoreBlank);
325 }
326 
SetNextMargin(const Dimension & nextMargin,bool ignoreBlank)327 void SwiperModelNG::SetNextMargin(const Dimension& nextMargin, bool ignoreBlank)
328 {
329     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, NextMargin, nextMargin);
330     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, NextMarginIgnoreBlank, ignoreBlank);
331     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
332     CHECK_NULL_VOID(swiperNode);
333     auto pattern = swiperNode->GetPattern<SwiperPattern>();
334     CHECK_NULL_VOID(pattern);
335     pattern->SetNextMarginIgnoreBlank(ignoreBlank);
336 }
337 
SetIndicatorInteractive(FrameNode * frameNode,bool interactive)338 void SwiperModelNG::SetIndicatorInteractive(FrameNode* frameNode, bool interactive)
339 {
340     CHECK_NULL_VOID(frameNode);
341     auto pattern = frameNode->GetPattern<SwiperPattern>();
342     CHECK_NULL_VOID(pattern);
343     pattern->SetIndicatorInteractive(interactive);
344 }
345 
SetOnChangeEvent(std::function<void (const BaseEventInfo * info)> && onChangeEvent)346 void SwiperModelNG::SetOnChangeEvent(std::function<void(const BaseEventInfo* info)>&& onChangeEvent)
347 {
348     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
349     CHECK_NULL_VOID(swiperNode);
350     auto pattern = swiperNode->GetPattern<SwiperPattern>();
351     CHECK_NULL_VOID(pattern);
352 
353     pattern->UpdateOnChangeEvent([event = std::move(onChangeEvent)](int32_t index) {
354         SwiperChangeEvent eventInfo(index);
355         event(&eventInfo);
356     });
357 }
358 
SetIndicatorIsBoolean(bool isBoolean)359 void SwiperModelNG::SetIndicatorIsBoolean(bool isBoolean)
360 {
361     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
362     CHECK_NULL_VOID(swiperNode);
363     auto pattern = swiperNode->GetPattern<SwiperPattern>();
364     CHECK_NULL_VOID(pattern);
365     pattern->SetIndicatorIsBoolean(isBoolean);
366 }
367 
SetArrowStyle(const SwiperArrowParameters & swiperArrowParameters)368 void SwiperModelNG::SetArrowStyle(const SwiperArrowParameters& swiperArrowParameters)
369 {
370     if (swiperArrowParameters.isShowBackground.has_value()) {
371         ACE_UPDATE_LAYOUT_PROPERTY(
372             SwiperLayoutProperty, IsShowBackground, swiperArrowParameters.isShowBackground.value());
373     }
374     if (swiperArrowParameters.backgroundSize.has_value()) {
375         ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, BackgroundSize, swiperArrowParameters.backgroundSize.value());
376     }
377     if (swiperArrowParameters.backgroundColor.has_value()) {
378         ACE_UPDATE_LAYOUT_PROPERTY(
379             SwiperLayoutProperty, BackgroundColor, swiperArrowParameters.backgroundColor.value());
380     }
381     if (swiperArrowParameters.arrowSize.has_value()) {
382         ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, ArrowSize, swiperArrowParameters.arrowSize.value());
383     }
384     if (swiperArrowParameters.arrowColor.has_value()) {
385         ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, ArrowColor, swiperArrowParameters.arrowColor.value());
386     }
387     if (swiperArrowParameters.isSidebarMiddle.has_value()) {
388         ACE_UPDATE_LAYOUT_PROPERTY(
389             SwiperLayoutProperty, IsSidebarMiddle, swiperArrowParameters.isSidebarMiddle.value());
390     }
391 }
392 
SetDisplayArrow(bool displayArrow)393 void SwiperModelNG::SetDisplayArrow(bool displayArrow)
394 {
395     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisplayArrow, displayArrow);
396 }
397 
SetHoverShow(bool hoverShow)398 void SwiperModelNG::SetHoverShow(bool hoverShow)
399 {
400     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, HoverShow, hoverShow);
401 }
402 
SetNestedScroll(const NestedScrollOptions & nestedOpt)403 void SwiperModelNG::SetNestedScroll(const NestedScrollOptions& nestedOpt)
404 {
405     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
406     CHECK_NULL_VOID(swiperNode);
407     auto pattern = swiperNode->GetPattern<SwiperPattern>();
408     CHECK_NULL_VOID(pattern);
409     pattern->SetNestedScroll(nestedOpt);
410 }
411 
SetSwipeByGroup(bool swipeByGroup)412 void SwiperModelNG::SetSwipeByGroup(bool swipeByGroup)
413 {
414     ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, SwipeByGroup, swipeByGroup);
415 }
416 
SetCustomContentTransition(SwiperContentAnimatedTransition & transition)417 void SwiperModelNG::SetCustomContentTransition(SwiperContentAnimatedTransition& transition)
418 {
419     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
420     CHECK_NULL_VOID(swiperNode);
421     auto pattern = swiperNode->GetPattern<SwiperPattern>();
422     CHECK_NULL_VOID(pattern);
423     pattern->SetSwiperCustomContentTransition(transition);
424 }
425 
SetCustomContentTransition(FrameNode * frameNode,SwiperContentAnimatedTransition & transition)426 void SwiperModelNG::SetCustomContentTransition(FrameNode* frameNode, SwiperContentAnimatedTransition& transition)
427 {
428     auto pattern = frameNode->GetPattern<SwiperPattern>();
429     CHECK_NULL_VOID(pattern);
430     pattern->SetSwiperCustomContentTransition(transition);
431 }
432 
SetOnContentDidScroll(ContentDidScrollEvent && onContentDidScroll)433 void SwiperModelNG::SetOnContentDidScroll(ContentDidScrollEvent&& onContentDidScroll)
434 {
435     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
436     CHECK_NULL_VOID(swiperNode);
437     auto pattern = swiperNode->GetPattern<SwiperPattern>();
438     CHECK_NULL_VOID(pattern);
439     pattern->SetOnContentDidScroll(std::move(onContentDidScroll));
440 }
441 
SetOnContentDidScroll(FrameNode * frameNode,ContentDidScrollEvent && onContentDidScroll)442 void SwiperModelNG::SetOnContentDidScroll(FrameNode* frameNode, ContentDidScrollEvent&& onContentDidScroll)
443 {
444     CHECK_NULL_VOID(frameNode);
445     auto pattern = frameNode->GetPattern<SwiperPattern>();
446     CHECK_NULL_VOID(pattern);
447     pattern->SetOnContentDidScroll(std::move(onContentDidScroll));
448 }
449 
SetOnContentWillScroll(ContentWillScrollEvent && onContentWillScroll)450 void SwiperModelNG::SetOnContentWillScroll(ContentWillScrollEvent&& onContentWillScroll)
451 {
452     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
453     CHECK_NULL_VOID(swiperNode);
454     auto pattern = swiperNode->GetPattern<SwiperPattern>();
455     CHECK_NULL_VOID(pattern);
456     pattern->SetOnContentWillScroll(std::move(onContentWillScroll));
457 }
458 
SetOnContentWillScroll(FrameNode * frameNode,ContentWillScrollEvent && onContentWillScroll)459 void SwiperModelNG::SetOnContentWillScroll(FrameNode* frameNode, ContentWillScrollEvent&& onContentWillScroll)
460 {
461     CHECK_NULL_VOID(frameNode);
462     auto pattern = frameNode->GetPattern<SwiperPattern>();
463     CHECK_NULL_VOID(pattern);
464     pattern->SetOnContentWillScroll(std::move(onContentWillScroll));
465 }
466 
SetPageFlipMode(int32_t pageFlipMode)467 void SwiperModelNG::SetPageFlipMode(int32_t pageFlipMode)
468 {
469     auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
470     CHECK_NULL_VOID(swiperNode);
471     auto pattern = swiperNode->GetPattern<SwiperPattern>();
472     CHECK_NULL_VOID(pattern);
473     pattern->SetPageFlipMode(pageFlipMode);
474 }
475 
SetPageFlipMode(FrameNode * frameNode,int32_t options)476 void SwiperModelNG::SetPageFlipMode(FrameNode* frameNode, int32_t options)
477 {
478     CHECK_NULL_VOID(frameNode);
479     auto pattern = frameNode->GetPattern<SwiperPattern>();
480     CHECK_NULL_VOID(pattern);
481     pattern->SetPageFlipMode(options);
482 }
483 
GetPageFlipMode(FrameNode * frameNode)484 int32_t SwiperModelNG::GetPageFlipMode(FrameNode* frameNode)
485 {
486     CHECK_NULL_RETURN(frameNode, 0);
487     auto pattern = frameNode->GetPattern<SwiperPattern>();
488     CHECK_NULL_RETURN(pattern, 0);
489     return pattern->GetPageFlipMode();
490 }
491 
SetNextMargin(FrameNode * frameNode,const Dimension & nextMargin,bool ignoreBlank)492 void SwiperModelNG::SetNextMargin(FrameNode* frameNode, const Dimension& nextMargin, bool ignoreBlank)
493 {
494     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, NextMargin, nextMargin, frameNode);
495     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, NextMarginIgnoreBlank, ignoreBlank, frameNode);
496     CHECK_NULL_VOID(frameNode);
497     auto pattern = frameNode->GetPattern<SwiperPattern>();
498     CHECK_NULL_VOID(pattern);
499     pattern->SetNextMarginIgnoreBlank(ignoreBlank);
500 }
501 
SetPreviousMargin(FrameNode * frameNode,const Dimension & prevMargin,bool ignoreBlank)502 void SwiperModelNG::SetPreviousMargin(FrameNode* frameNode, const Dimension& prevMargin, bool ignoreBlank)
503 {
504     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, PrevMargin, prevMargin, frameNode);
505     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, PrevMarginIgnoreBlank, ignoreBlank, frameNode);
506     CHECK_NULL_VOID(frameNode);
507     auto pattern = frameNode->GetPattern<SwiperPattern>();
508     CHECK_NULL_VOID(pattern);
509     pattern->SetPrevMarginIgnoreBlank(ignoreBlank);
510 }
511 
SetIndex(FrameNode * frameNode,uint32_t index)512 void SwiperModelNG::SetIndex(FrameNode* frameNode, uint32_t index)
513 {
514     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, Index, index, frameNode);
515 }
516 
SetAutoPlayInterval(FrameNode * frameNode,uint32_t interval)517 void SwiperModelNG::SetAutoPlayInterval(FrameNode* frameNode, uint32_t interval)
518 {
519     ACE_UPDATE_NODE_PAINT_PROPERTY(SwiperPaintProperty, AutoPlayInterval, interval, frameNode);
520 }
521 
SetDuration(FrameNode * frameNode,uint32_t duration)522 void SwiperModelNG::SetDuration(FrameNode* frameNode, uint32_t duration)
523 {
524     ACE_UPDATE_NODE_PAINT_PROPERTY(SwiperPaintProperty, Duration, duration, frameNode);
525 }
526 
SetCachedCount(FrameNode * frameNode,int32_t cachedCount)527 void SwiperModelNG::SetCachedCount(FrameNode* frameNode, int32_t cachedCount)
528 {
529     CHECK_NULL_VOID(frameNode);
530     auto pattern = frameNode->GetPattern<SwiperPattern>();
531     CHECK_NULL_VOID(pattern);
532     pattern->SetCachedCount(cachedCount);
533 
534     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, CachedCount, cachedCount, frameNode);
535 }
536 
GetCachedCount(FrameNode * frameNode)537 int32_t SwiperModelNG::GetCachedCount(FrameNode* frameNode)
538 {
539     int32_t cachedCount = 1;
540     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, CachedCount, cachedCount, frameNode, 1);
541     return cachedCount;
542 }
543 
GetCachedIsShown(FrameNode * frameNode)544 bool SwiperModelNG::GetCachedIsShown(FrameNode* frameNode)
545 {
546     bool isShown = false;
547     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, CachedIsShown, isShown, frameNode, false);
548     return isShown;
549 }
550 
SetAutoPlay(FrameNode * frameNode,bool autoPlay)551 void SwiperModelNG::SetAutoPlay(FrameNode* frameNode, bool autoPlay)
552 {
553     ACE_UPDATE_NODE_PAINT_PROPERTY(SwiperPaintProperty, AutoPlay, autoPlay, frameNode);
554 }
555 
SetLoop(FrameNode * frameNode,bool loop)556 void SwiperModelNG::SetLoop(FrameNode* frameNode, bool loop)
557 {
558     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, Loop, loop, frameNode);
559 }
560 
SetDirection(FrameNode * frameNode,Axis axis)561 void SwiperModelNG::SetDirection(FrameNode* frameNode, Axis axis)
562 {
563     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, Direction, axis, frameNode);
564 }
565 
SetDisableSwipe(FrameNode * frameNode,bool disableSwipe)566 void SwiperModelNG::SetDisableSwipe(FrameNode* frameNode, bool disableSwipe)
567 {
568     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisableSwipe, disableSwipe, frameNode);
569 }
570 
SetItemSpace(FrameNode * frameNode,const Dimension & itemSpace)571 void SwiperModelNG::SetItemSpace(FrameNode* frameNode, const Dimension& itemSpace)
572 {
573     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, ItemSpace, itemSpace, frameNode);
574 }
575 
SetDisplayMode(FrameNode * frameNode,SwiperDisplayMode displayMode)576 void SwiperModelNG::SetDisplayMode(FrameNode* frameNode, SwiperDisplayMode displayMode)
577 {
578     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisplayMode, displayMode, frameNode);
579 }
580 
SetEdgeEffect(FrameNode * frameNode,EdgeEffect edgeEffect)581 void SwiperModelNG::SetEdgeEffect(FrameNode* frameNode, EdgeEffect edgeEffect)
582 {
583     ACE_UPDATE_NODE_PAINT_PROPERTY(SwiperPaintProperty, EdgeEffect, edgeEffect, frameNode);
584 }
585 
SetMinSize(FrameNode * frameNode,const Dimension & minSize)586 void SwiperModelNG::SetMinSize(FrameNode* frameNode, const Dimension& minSize)
587 {
588     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, MinSize, minSize, frameNode);
589 }
590 
SetDisplayCount(FrameNode * frameNode,int32_t displayCount)591 void SwiperModelNG::SetDisplayCount(FrameNode* frameNode, int32_t displayCount)
592 {
593     if (displayCount <= 0) {
594         return;
595     }
596 
597     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisplayCount, displayCount, frameNode);
598 }
599 
ResetDisplayCount(FrameNode * frameNode)600 void SwiperModelNG::ResetDisplayCount(FrameNode* frameNode)
601 {
602     ACE_RESET_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisplayCount, frameNode);
603 }
604 
SetCurve(FrameNode * frameNode,const RefPtr<Curve> & curve)605 void SwiperModelNG::SetCurve(FrameNode* frameNode, const RefPtr<Curve>& curve)
606 {
607     ACE_UPDATE_NODE_PAINT_PROPERTY(SwiperPaintProperty, Curve, curve, frameNode);
608 }
609 
SetArrowStyle(FrameNode * frameNode,const SwiperArrowParameters & swiperArrowParameters)610 void SwiperModelNG::SetArrowStyle(FrameNode* frameNode, const SwiperArrowParameters& swiperArrowParameters)
611 {
612     if (swiperArrowParameters.isShowBackground.has_value()) {
613         ACE_UPDATE_NODE_LAYOUT_PROPERTY(
614             SwiperLayoutProperty, IsShowBackground, swiperArrowParameters.isShowBackground.value(), frameNode);
615     }
616     if (swiperArrowParameters.backgroundSize.has_value()) {
617         ACE_UPDATE_NODE_LAYOUT_PROPERTY(
618             SwiperLayoutProperty, BackgroundSize, swiperArrowParameters.backgroundSize.value(), frameNode);
619     }
620     if (swiperArrowParameters.backgroundColor.has_value()) {
621         ACE_UPDATE_NODE_LAYOUT_PROPERTY(
622             SwiperLayoutProperty, BackgroundColor, swiperArrowParameters.backgroundColor.value(), frameNode);
623     }
624     if (swiperArrowParameters.arrowSize.has_value()) {
625         ACE_UPDATE_NODE_LAYOUT_PROPERTY(
626             SwiperLayoutProperty, ArrowSize, swiperArrowParameters.arrowSize.value(), frameNode);
627     }
628     if (swiperArrowParameters.arrowColor.has_value()) {
629         ACE_UPDATE_NODE_LAYOUT_PROPERTY(
630             SwiperLayoutProperty, ArrowColor, swiperArrowParameters.arrowColor.value(), frameNode);
631     }
632     if (swiperArrowParameters.isSidebarMiddle.has_value()) {
633         ACE_UPDATE_NODE_LAYOUT_PROPERTY(
634             SwiperLayoutProperty, IsSidebarMiddle, swiperArrowParameters.isSidebarMiddle.value(), frameNode);
635     }
636 }
637 
SetDisplayArrow(FrameNode * frameNode,bool displayArrow)638 void SwiperModelNG::SetDisplayArrow(FrameNode* frameNode, bool displayArrow)
639 {
640     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisplayArrow, displayArrow, frameNode);
641 }
642 
SetHoverShow(FrameNode * frameNode,bool hoverShow)643 void SwiperModelNG::SetHoverShow(FrameNode* frameNode, bool hoverShow)
644 {
645     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, HoverShow, hoverShow, frameNode);
646 }
647 
SetShowIndicator(FrameNode * frameNode,bool showIndicator)648 void SwiperModelNG::SetShowIndicator(FrameNode* frameNode, bool showIndicator)
649 {
650     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, ShowIndicator, showIndicator, frameNode);
651 }
652 
SetIndicatorIsBoolean(FrameNode * frameNode,bool isBoolean)653 void SwiperModelNG::SetIndicatorIsBoolean(FrameNode* frameNode, bool isBoolean)
654 {
655     CHECK_NULL_VOID(frameNode);
656     auto pattern = frameNode->GetPattern<SwiperPattern>();
657     CHECK_NULL_VOID(pattern);
658     pattern->SetIndicatorIsBoolean(isBoolean);
659 }
660 
SetDigitIndicatorStyle(FrameNode * frameNode,const SwiperDigitalParameters & swiperDigitalParameters)661 void SwiperModelNG::SetDigitIndicatorStyle(FrameNode* frameNode, const SwiperDigitalParameters& swiperDigitalParameters)
662 {
663     CHECK_NULL_VOID(frameNode);
664     auto pattern = frameNode->GetPattern<SwiperPattern>();
665     CHECK_NULL_VOID(pattern);
666     pattern->SetSwiperDigitalParameters(swiperDigitalParameters);
667 }
668 
SetIndicatorType(FrameNode * frameNode,SwiperIndicatorType indicatorType)669 void SwiperModelNG::SetIndicatorType(FrameNode* frameNode, SwiperIndicatorType indicatorType)
670 {
671     SwiperIndicatorUtils::SetSwiperIndicatorType(indicatorType);
672     ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, IndicatorType, indicatorType, frameNode);
673 }
674 
SetIsIndicatorCustomSize(FrameNode * frameNode,bool isCustomSize)675 void SwiperModelNG::SetIsIndicatorCustomSize(FrameNode* frameNode, bool isCustomSize)
676 {
677     CHECK_NULL_VOID(frameNode);
678     auto pattern = frameNode->GetPattern<SwiperPattern>();
679     CHECK_NULL_VOID(pattern);
680     pattern->SetIsIndicatorCustomSize(isCustomSize);
681 }
682 
SetDotIndicatorStyle(FrameNode * frameNode,const SwiperParameters & swiperParameters)683 void SwiperModelNG::SetDotIndicatorStyle(FrameNode* frameNode, const SwiperParameters& swiperParameters)
684 {
685     CHECK_NULL_VOID(frameNode);
686     auto pattern = frameNode->GetPattern<SwiperPattern>();
687     CHECK_NULL_VOID(pattern);
688     pattern->SetSwiperParameters(swiperParameters);
689 }
690 
SetBindIndicator(FrameNode * frameNode,bool bind)691 void SwiperModelNG::SetBindIndicator(FrameNode* frameNode, bool bind)
692 {
693     CHECK_NULL_VOID(frameNode);
694     auto pattern = frameNode->GetPattern<SwiperPattern>();
695     CHECK_NULL_VOID(pattern);
696     pattern->SetBindIndicator(bind);
697 }
698 
SetEnabled(FrameNode * frameNode,bool enabled)699 void SwiperModelNG::SetEnabled(FrameNode* frameNode, bool enabled)
700 {
701     ACE_UPDATE_NODE_PAINT_PROPERTY(SwiperPaintProperty, Enabled, enabled, frameNode);
702 }
703 
SetOnChange(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && onChange)704 void SwiperModelNG::SetOnChange(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& onChange)
705 {
706     CHECK_NULL_VOID(frameNode);
707     auto pattern = frameNode->GetPattern<SwiperPattern>();
708     CHECK_NULL_VOID(pattern);
709     pattern->UpdateChangeEvent([event = std::move(onChange)](int32_t index) {
710         SwiperChangeEvent eventInfo(index);
711         event(&eventInfo);
712     });
713 }
714 
SetOnAnimationStart(FrameNode * frameNode,AnimationStartEvent && onAnimationStart)715 void SwiperModelNG::SetOnAnimationStart(FrameNode* frameNode, AnimationStartEvent&& onAnimationStart)
716 {
717     CHECK_NULL_VOID(frameNode);
718     auto pattern = frameNode->GetPattern<SwiperPattern>();
719     CHECK_NULL_VOID(pattern);
720     pattern->UpdateAnimationStartEvent([event = std::move(onAnimationStart)](int32_t index, int32_t targetIndex,
721         const AnimationCallbackInfo& info) { event(index, targetIndex, info); });
722 }
723 
SetOnAnimationEnd(FrameNode * frameNode,AnimationEndEvent && onAnimationEnd)724 void SwiperModelNG::SetOnAnimationEnd(FrameNode* frameNode, AnimationEndEvent&& onAnimationEnd)
725 {
726     CHECK_NULL_VOID(frameNode);
727     auto pattern = frameNode->GetPattern<SwiperPattern>();
728     CHECK_NULL_VOID(pattern);
729     pattern->UpdateAnimationEndEvent(
730         [event = std::move(onAnimationEnd)](int32_t index, const AnimationCallbackInfo& info) { event(index, info); });
731 }
732 
SetOnGestureSwipe(FrameNode * frameNode,GestureSwipeEvent && onGestureSwipe)733 void SwiperModelNG::SetOnGestureSwipe(FrameNode* frameNode, GestureSwipeEvent&& onGestureSwipe)
734 {
735     CHECK_NULL_VOID(frameNode);
736     auto eventHub = frameNode->GetEventHub<SwiperEventHub>();
737     CHECK_NULL_VOID(eventHub);
738     eventHub->SetGestureSwipeEvent(
739         [event = std::move(onGestureSwipe)](int32_t index, const AnimationCallbackInfo& info) { event(index, info); });
740 }
741 
GetLoop(FrameNode * frameNode)742 bool SwiperModelNG::GetLoop(FrameNode* frameNode)
743 {
744     bool value = true;
745     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, Loop, value, frameNode, value);
746     return value;
747 }
748 
GetAutoPlay(FrameNode * frameNode)749 bool SwiperModelNG::GetAutoPlay(FrameNode* frameNode)
750 {
751     bool value = false;
752     ACE_GET_NODE_PAINT_PROPERTY_WITH_DEFAULT_VALUE(SwiperPaintProperty, AutoPlay, value, frameNode, value);
753     return value;
754 }
755 
GetIndex(FrameNode * frameNode)756 int SwiperModelNG::GetIndex(FrameNode* frameNode)
757 {
758     int value = 0;
759     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, Index, value, frameNode, value);
760     return value;
761 }
762 
GetDirection(FrameNode * frameNode)763 Axis SwiperModelNG::GetDirection(FrameNode* frameNode)
764 {
765     Axis value = Axis::HORIZONTAL;
766     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, Direction, value, frameNode, value);
767     return value;
768 }
769 
GetDuration(FrameNode * frameNode)770 uint32_t SwiperModelNG::GetDuration(FrameNode* frameNode)
771 {
772     uint32_t value = SwiperAnimationStyle::DEFAULT_DURATION;
773     ACE_GET_NODE_PAINT_PROPERTY_WITH_DEFAULT_VALUE(SwiperPaintProperty, Duration, value, frameNode, value);
774     return value;
775 }
776 
GetDisplayCount(FrameNode * frameNode)777 int SwiperModelNG::GetDisplayCount(FrameNode* frameNode)
778 {
779     int value = 1;
780     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, DisplayCount, value, frameNode, value);
781     return value;
782 }
783 
GetAutoPlayInterval(FrameNode * frameNode)784 int SwiperModelNG::GetAutoPlayInterval(FrameNode* frameNode)
785 {
786     int value = SwiperAnimationStyle::DEFAULT_INTERVAL;
787     ACE_GET_NODE_PAINT_PROPERTY_WITH_DEFAULT_VALUE(SwiperPaintProperty, AutoPlayInterval, value, frameNode, value);
788     return value;
789 }
790 
GetCurve(FrameNode * frameNode)791 RefPtr<Curve> SwiperModelNG::GetCurve(FrameNode* frameNode)
792 {
793     RefPtr<Curve> value = OHOS::Ace::Curves::LINEAR;
794     ACE_GET_NODE_PAINT_PROPERTY_WITH_DEFAULT_VALUE(SwiperPaintProperty, Curve, value, frameNode, value);
795     return value;
796 }
797 
GetDisableSwipe(FrameNode * frameNode)798 bool SwiperModelNG::GetDisableSwipe(FrameNode* frameNode)
799 {
800     bool value = false;
801     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, DisableSwipe, value, frameNode, value);
802     return value;
803 }
804 
GetItemSpace(FrameNode * frameNode)805 float SwiperModelNG::GetItemSpace(FrameNode* frameNode)
806 {
807     Dimension value(0, DimensionUnit::VP);
808     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, ItemSpace, value, frameNode, value);
809     return value.Value();
810 }
811 
GetShowIndicator(FrameNode * frameNode)812 bool SwiperModelNG::GetShowIndicator(FrameNode* frameNode)
813 {
814     bool value = true;
815     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, ShowIndicator, value, frameNode, value);
816     return value;
817 }
818 
GetShowDisplayArrow(FrameNode * frameNode)819 int SwiperModelNG::GetShowDisplayArrow(FrameNode* frameNode)
820 {
821     bool show = false;
822     bool hoverShow = false;
823     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, DisplayArrow, show, frameNode, show);
824     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, HoverShow, hoverShow, frameNode, hoverShow);
825     int ArrowType = 0;
826     if (show && hoverShow) {
827         return ArrowType = static_cast<int>(SwiperArrow::ARKUI_SWIPER_ARROW_SHOW_ON_HOVER);
828     }
829     if (show) {
830         ArrowType = static_cast<int>(SwiperArrow::ARKUI_SWIPER_ARROW_SHOW);
831     } else {
832         ArrowType = static_cast<int>(SwiperArrow::ARKUI_SWIPER_ARROW_HIDE);
833     }
834     return ArrowType;
835 }
836 
GetEffectMode(FrameNode * frameNode)837 EdgeEffect SwiperModelNG::GetEffectMode(FrameNode* frameNode)
838 {
839     EdgeEffect mode = EdgeEffect::SPRING;
840     ACE_GET_NODE_PAINT_PROPERTY_WITH_DEFAULT_VALUE(SwiperPaintProperty, EdgeEffect, mode, frameNode, mode);
841     return mode;
842 }
843 
GetNestedScroll(FrameNode * frameNode)844 int32_t SwiperModelNG::GetNestedScroll(FrameNode* frameNode)
845 {
846     CHECK_NULL_RETURN(frameNode, ERROR_CODE_PARAM_INVALID);
847     auto pattern = frameNode->GetPattern<SwiperPattern>();
848     CHECK_NULL_RETURN(pattern, ERROR_CODE_PARAM_INVALID);
849     return static_cast<int>(pattern->GetNestedScroll().forward);
850 }
851 
RealTotalCount(FrameNode * frameNode)852 int32_t SwiperModelNG::RealTotalCount(FrameNode* frameNode)
853 {
854     CHECK_NULL_RETURN(frameNode, 0);
855     auto pattern = frameNode->GetPattern<SwiperPattern>();
856     CHECK_NULL_RETURN(pattern, 0);
857     return pattern->RealTotalCount();
858 }
859 
SetSwiperToIndex(FrameNode * frameNode,int32_t index,bool useAnimation)860 void SwiperModelNG::SetSwiperToIndex(FrameNode* frameNode, int32_t index, bool useAnimation)
861 {
862     CHECK_NULL_VOID(frameNode);
863     auto pattern = frameNode->GetPattern<SwiperPattern>();
864     CHECK_NULL_VOID(pattern);
865     pattern->ChangeIndex(index, useAnimation);
866 }
867 
SetSwiperToIndex(FrameNode * frameNode,int32_t index,SwiperAnimationMode animationMode)868 void SwiperModelNG::SetSwiperToIndex(FrameNode* frameNode, int32_t index, SwiperAnimationMode animationMode)
869 {
870     CHECK_NULL_VOID(frameNode);
871     auto pattern = frameNode->GetPattern<SwiperPattern>();
872     CHECK_NULL_VOID(pattern);
873     pattern->ChangeIndex(index, animationMode);
874 }
875 
GetPreviousMargin(FrameNode * frameNode,int32_t unit,SwiperMarginOptions * options)876 void SwiperModelNG::GetPreviousMargin(FrameNode* frameNode, int32_t unit, SwiperMarginOptions* options)
877 {
878     Dimension prevMargin(0.0f, static_cast<DimensionUnit>(unit));
879     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(
880         SwiperLayoutProperty, PrevMargin, prevMargin, frameNode, prevMargin);
881     options->margin = prevMargin.GetNativeValue(static_cast<DimensionUnit>(unit));
882     auto pattern = frameNode->GetPattern<SwiperPattern>();
883     CHECK_NULL_VOID(pattern);
884     options->ignoreBlank = pattern->GetPrevMarginIgnoreBlank();
885 }
886 
GetNextMargin(FrameNode * frameNode,int32_t unit,SwiperMarginOptions * options)887 void SwiperModelNG::GetNextMargin(FrameNode* frameNode, int32_t unit, SwiperMarginOptions* options)
888 {
889     Dimension nextMargin(0.0f, static_cast<DimensionUnit>(unit));
890     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(
891         SwiperLayoutProperty, NextMargin, nextMargin, frameNode, nextMargin);
892     options->margin = nextMargin.GetNativeValue(static_cast<DimensionUnit>(unit));
893     auto pattern = frameNode->GetPattern<SwiperPattern>();
894     CHECK_NULL_VOID(pattern);
895     options->ignoreBlank = pattern->GetNextMarginIgnoreBlank();
896 }
897 
GetDotIndicator(FrameNode * frameNode)898 std::shared_ptr<SwiperParameters> SwiperModelNG::GetDotIndicator(FrameNode* frameNode)
899 {
900     CHECK_NULL_RETURN(frameNode, nullptr);
901     auto pattern = frameNode->GetPattern<SwiperPattern>();
902     CHECK_NULL_RETURN(pattern, nullptr);
903     return pattern->GetSwiperParameters();
904 }
905 
GetIndicatorType(FrameNode * frameNode)906 int32_t SwiperModelNG::GetIndicatorType(FrameNode* frameNode)
907 {
908     CHECK_NULL_RETURN(frameNode, 0);
909     SwiperIndicatorType value = SwiperIndicatorType::DOT;
910     ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, IndicatorType,
911         value, frameNode, value);
912     return static_cast<int32_t>(value);
913 }
914 
GetOrCreateSwiperController(FrameNode * frameNode)915 RefPtr<SwiperController> SwiperModelNG::GetOrCreateSwiperController(FrameNode* frameNode)
916 {
917     CHECK_NULL_RETURN(frameNode, nullptr);
918     auto pattern = frameNode->GetPattern<SwiperPattern>();
919     CHECK_NULL_RETURN(pattern, nullptr);
920     if (!pattern->GetSwiperController()) {
921         auto controller = AceType::MakeRefPtr<SwiperController>();
922         pattern->SetSwiperController(controller);
923     }
924     return pattern->GetSwiperController();
925 }
926 
GetSwiperController(FrameNode * frameNode)927 RefPtr<SwiperController> SwiperModelNG::GetSwiperController(FrameNode* frameNode)
928 {
929     auto pattern = frameNode->GetPattern<SwiperPattern>();
930     CHECK_NULL_RETURN(pattern, nullptr);
931     return pattern->GetSwiperController();
932 }
933 
GetIndicatorInteractive(FrameNode * frameNode)934 bool SwiperModelNG::GetIndicatorInteractive(FrameNode* frameNode)
935 {
936     CHECK_NULL_RETURN(frameNode, false);
937     auto pattern = frameNode->GetPattern<SwiperPattern>();
938     CHECK_NULL_RETURN(pattern, false);
939     return pattern->IsIndicatorInteractive();
940 }
941 } // namespace OHOS::Ace::NG
942