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
SetIsIndicatorCustomSize(bool isCustomSize)139 void SwiperModelNG::SetIsIndicatorCustomSize(bool isCustomSize)
140 {
141 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
142 CHECK_NULL_VOID(swiperNode);
143 auto pattern = swiperNode->GetPattern<SwiperPattern>();
144 CHECK_NULL_VOID(pattern);
145 pattern->SetIsIndicatorCustomSize(isCustomSize);
146 }
147
SetIndicatorInteractive(bool interactive)148 void SwiperModelNG::SetIndicatorInteractive(bool interactive)
149 {
150 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
151 CHECK_NULL_VOID(swiperNode);
152 auto pattern = swiperNode->GetPattern<SwiperPattern>();
153 CHECK_NULL_VOID(pattern);
154 pattern->SetIndicatorInteractive(interactive);
155 }
156
SetAutoPlay(bool autoPlay)157 void SwiperModelNG::SetAutoPlay(bool autoPlay)
158 {
159 ACE_UPDATE_PAINT_PROPERTY(SwiperPaintProperty, AutoPlay, autoPlay);
160 }
161
SetAutoPlayInterval(uint32_t interval)162 void SwiperModelNG::SetAutoPlayInterval(uint32_t interval)
163 {
164 ACE_UPDATE_PAINT_PROPERTY(SwiperPaintProperty, AutoPlayInterval, interval);
165 }
166
SetDuration(uint32_t duration)167 void SwiperModelNG::SetDuration(uint32_t duration)
168 {
169 ACE_UPDATE_PAINT_PROPERTY(SwiperPaintProperty, Duration, duration);
170 }
171
SetLoop(bool loop)172 void SwiperModelNG::SetLoop(bool loop)
173 {
174 ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, Loop, loop);
175 }
176
SetEnabled(bool enabled)177 void SwiperModelNG::SetEnabled(bool enabled)
178 {
179 ACE_UPDATE_PAINT_PROPERTY(SwiperPaintProperty, Enabled, enabled);
180 }
181
SetDisableSwipe(bool disableSwipe)182 void SwiperModelNG::SetDisableSwipe(bool disableSwipe)
183 {
184 ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisableSwipe, disableSwipe);
185 }
186
SetEdgeEffect(EdgeEffect edgeEffect)187 void SwiperModelNG::SetEdgeEffect(EdgeEffect edgeEffect)
188 {
189 ACE_UPDATE_PAINT_PROPERTY(SwiperPaintProperty, EdgeEffect, edgeEffect);
190 }
191
SetCurve(const RefPtr<Curve> & curve)192 void SwiperModelNG::SetCurve(const RefPtr<Curve>& curve)
193 {
194 ACE_UPDATE_PAINT_PROPERTY(SwiperPaintProperty, Curve, curve);
195 }
196
SetOnChange(std::function<void (const BaseEventInfo * info)> && onChange)197 void SwiperModelNG::SetOnChange(std::function<void(const BaseEventInfo* info)>&& onChange)
198 {
199 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
200 CHECK_NULL_VOID(swiperNode);
201 auto pattern = swiperNode->GetPattern<SwiperPattern>();
202 CHECK_NULL_VOID(pattern);
203
204 pattern->UpdateChangeEvent([event = std::move(onChange)](int32_t index) {
205 SwiperChangeEvent eventInfo(index);
206 event(&eventInfo);
207 });
208 }
209
SetOnAnimationStart(AnimationStartEvent && onAnimationStart)210 void SwiperModelNG::SetOnAnimationStart(AnimationStartEvent&& onAnimationStart)
211 {
212 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
213 CHECK_NULL_VOID(swiperNode);
214 auto pattern = swiperNode->GetPattern<SwiperPattern>();
215 CHECK_NULL_VOID(pattern);
216
217 pattern->UpdateAnimationStartEvent([event = std::move(onAnimationStart)](int32_t index, int32_t targetIndex,
218 const AnimationCallbackInfo& info) { event(index, targetIndex, info); });
219 }
220
SetOnAnimationEnd(AnimationEndEvent && onAnimationEnd)221 void SwiperModelNG::SetOnAnimationEnd(AnimationEndEvent&& onAnimationEnd)
222 {
223 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
224 CHECK_NULL_VOID(swiperNode);
225 auto pattern = swiperNode->GetPattern<SwiperPattern>();
226 CHECK_NULL_VOID(pattern);
227
228 pattern->UpdateAnimationEndEvent(
229 [event = std::move(onAnimationEnd)](int32_t index, const AnimationCallbackInfo& info) { event(index, info); });
230 }
231
232
SetOnGestureSwipe(GestureSwipeEvent && onGestureSwipe)233 void SwiperModelNG::SetOnGestureSwipe(GestureSwipeEvent&& onGestureSwipe)
234 {
235 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
236 CHECK_NULL_VOID(swiperNode);
237 auto eventHub = swiperNode->GetEventHub<SwiperEventHub>();
238 CHECK_NULL_VOID(eventHub);
239
240 eventHub->SetGestureSwipeEvent(
241 [event = std::move(onGestureSwipe)](int32_t index, const AnimationCallbackInfo& info) { event(index, info); });
242 }
243
SetNestedScroll(FrameNode * frameNode,const int32_t nestedOpt)244 void SwiperModelNG::SetNestedScroll(FrameNode* frameNode, const int32_t nestedOpt)
245 {
246 CHECK_NULL_VOID(frameNode);
247 auto pattern = frameNode->GetPattern<SwiperPattern>();
248 CHECK_NULL_VOID(pattern);
249 NestedScrollOptions option;
250 option.forward = static_cast<NestedScrollMode>(nestedOpt);
251 option.backward = static_cast<NestedScrollMode>(nestedOpt);
252 pattern->SetNestedScroll(option);
253 }
254
SetSwipeByGroup(FrameNode * frameNode,bool swipeByGroup)255 void SwiperModelNG::SetSwipeByGroup(FrameNode* frameNode, bool swipeByGroup)
256 {
257 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, SwipeByGroup, swipeByGroup, frameNode);
258 }
259
SetRemoteMessageEventId(RemoteCallback && remoteCallback)260 void SwiperModelNG::SetRemoteMessageEventId(RemoteCallback&& remoteCallback) {}
261
SetIndicatorStyle(const SwiperParameters & swiperParameters)262 void SwiperModelNG::SetIndicatorStyle(const SwiperParameters& swiperParameters)
263 {
264 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
265 CHECK_NULL_VOID(swiperNode);
266 auto pattern = swiperNode->GetPattern<SwiperPattern>();
267 CHECK_NULL_VOID(pattern);
268 pattern->SetSwiperParameters(swiperParameters);
269 };
270
SetDotIndicatorStyle(const SwiperParameters & swiperParameters)271 void SwiperModelNG::SetDotIndicatorStyle(const SwiperParameters& swiperParameters)
272 {
273 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
274 CHECK_NULL_VOID(swiperNode);
275 auto pattern = swiperNode->GetPattern<SwiperPattern>();
276 CHECK_NULL_VOID(pattern);
277 pattern->SetSwiperParameters(swiperParameters);
278 };
279
SetDigitIndicatorStyle(const SwiperDigitalParameters & swiperDigitalParameters)280 void SwiperModelNG::SetDigitIndicatorStyle(const SwiperDigitalParameters& swiperDigitalParameters)
281 {
282 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
283 CHECK_NULL_VOID(swiperNode);
284 auto pattern = swiperNode->GetPattern<SwiperPattern>();
285 CHECK_NULL_VOID(pattern);
286 pattern->SetSwiperDigitalParameters(swiperDigitalParameters);
287 };
288
SetOnClick(std::function<void (const BaseEventInfo * info,const RefPtr<V2::InspectorFunctionImpl> & impl)> && value)289 void SwiperModelNG::SetOnClick(
290 std::function<void(const BaseEventInfo* info, const RefPtr<V2::InspectorFunctionImpl>& impl)>&& value)
291 {}
292
SetMainSwiperSizeWidth()293 void SwiperModelNG::SetMainSwiperSizeWidth() {}
294
SetMainSwiperSizeHeight()295 void SwiperModelNG::SetMainSwiperSizeHeight() {}
296
SetPreviousMargin(const Dimension & prevMargin,bool ignoreBlank)297 void SwiperModelNG::SetPreviousMargin(const Dimension& prevMargin, bool ignoreBlank)
298 {
299 ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, PrevMargin, prevMargin);
300 ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, PrevMarginIgnoreBlank, ignoreBlank);
301 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
302 CHECK_NULL_VOID(swiperNode);
303 auto pattern = swiperNode->GetPattern<SwiperPattern>();
304 CHECK_NULL_VOID(pattern);
305 pattern->SetPrevMarginIgnoreBlank(ignoreBlank);
306 }
307
SetNextMargin(const Dimension & nextMargin,bool ignoreBlank)308 void SwiperModelNG::SetNextMargin(const Dimension& nextMargin, bool ignoreBlank)
309 {
310 ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, NextMargin, nextMargin);
311 ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, NextMarginIgnoreBlank, ignoreBlank);
312 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
313 CHECK_NULL_VOID(swiperNode);
314 auto pattern = swiperNode->GetPattern<SwiperPattern>();
315 CHECK_NULL_VOID(pattern);
316 pattern->SetNextMarginIgnoreBlank(ignoreBlank);
317 }
318
SetIndicatorInteractive(FrameNode * frameNode,bool interactive)319 void SwiperModelNG::SetIndicatorInteractive(FrameNode* frameNode, bool interactive)
320 {
321 CHECK_NULL_VOID(frameNode);
322 auto pattern = frameNode->GetPattern<SwiperPattern>();
323 CHECK_NULL_VOID(pattern);
324 pattern->SetIndicatorInteractive(interactive);
325 }
326
SetOnChangeEvent(std::function<void (const BaseEventInfo * info)> && onChangeEvent)327 void SwiperModelNG::SetOnChangeEvent(std::function<void(const BaseEventInfo* info)>&& onChangeEvent)
328 {
329 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
330 CHECK_NULL_VOID(swiperNode);
331 auto pattern = swiperNode->GetPattern<SwiperPattern>();
332 CHECK_NULL_VOID(pattern);
333
334 pattern->UpdateOnChangeEvent([event = std::move(onChangeEvent)](int32_t index) {
335 SwiperChangeEvent eventInfo(index);
336 event(&eventInfo);
337 });
338 }
339
SetIndicatorIsBoolean(bool isBoolean)340 void SwiperModelNG::SetIndicatorIsBoolean(bool isBoolean)
341 {
342 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
343 CHECK_NULL_VOID(swiperNode);
344 auto pattern = swiperNode->GetPattern<SwiperPattern>();
345 CHECK_NULL_VOID(pattern);
346 pattern->SetIndicatorIsBoolean(isBoolean);
347 }
348
SetArrowStyle(const SwiperArrowParameters & swiperArrowParameters)349 void SwiperModelNG::SetArrowStyle(const SwiperArrowParameters& swiperArrowParameters)
350 {
351 if (swiperArrowParameters.isShowBackground.has_value()) {
352 ACE_UPDATE_LAYOUT_PROPERTY(
353 SwiperLayoutProperty, IsShowBackground, swiperArrowParameters.isShowBackground.value());
354 }
355 if (swiperArrowParameters.backgroundSize.has_value()) {
356 ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, BackgroundSize, swiperArrowParameters.backgroundSize.value());
357 }
358 if (swiperArrowParameters.backgroundColor.has_value()) {
359 ACE_UPDATE_LAYOUT_PROPERTY(
360 SwiperLayoutProperty, BackgroundColor, swiperArrowParameters.backgroundColor.value());
361 }
362 if (swiperArrowParameters.arrowSize.has_value()) {
363 ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, ArrowSize, swiperArrowParameters.arrowSize.value());
364 }
365 if (swiperArrowParameters.arrowColor.has_value()) {
366 ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, ArrowColor, swiperArrowParameters.arrowColor.value());
367 }
368 if (swiperArrowParameters.isSidebarMiddle.has_value()) {
369 ACE_UPDATE_LAYOUT_PROPERTY(
370 SwiperLayoutProperty, IsSidebarMiddle, swiperArrowParameters.isSidebarMiddle.value());
371 }
372 }
373
SetDisplayArrow(bool displayArrow)374 void SwiperModelNG::SetDisplayArrow(bool displayArrow)
375 {
376 ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisplayArrow, displayArrow);
377 }
378
SetHoverShow(bool hoverShow)379 void SwiperModelNG::SetHoverShow(bool hoverShow)
380 {
381 ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, HoverShow, hoverShow);
382 }
383
SetNestedScroll(const NestedScrollOptions & nestedOpt)384 void SwiperModelNG::SetNestedScroll(const NestedScrollOptions& nestedOpt)
385 {
386 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
387 CHECK_NULL_VOID(swiperNode);
388 auto pattern = swiperNode->GetPattern<SwiperPattern>();
389 CHECK_NULL_VOID(pattern);
390 pattern->SetNestedScroll(nestedOpt);
391 }
392
SetSwipeByGroup(bool swipeByGroup)393 void SwiperModelNG::SetSwipeByGroup(bool swipeByGroup)
394 {
395 ACE_UPDATE_LAYOUT_PROPERTY(SwiperLayoutProperty, SwipeByGroup, swipeByGroup);
396 }
397
SetCustomContentTransition(SwiperContentAnimatedTransition & transition)398 void SwiperModelNG::SetCustomContentTransition(SwiperContentAnimatedTransition& transition)
399 {
400 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
401 CHECK_NULL_VOID(swiperNode);
402 auto pattern = swiperNode->GetPattern<SwiperPattern>();
403 CHECK_NULL_VOID(pattern);
404 pattern->SetSwiperCustomContentTransition(transition);
405 }
406
SetCustomContentTransition(FrameNode * frameNode,SwiperContentAnimatedTransition & transition)407 void SwiperModelNG::SetCustomContentTransition(FrameNode* frameNode, SwiperContentAnimatedTransition& transition)
408 {
409 auto pattern = frameNode->GetPattern<SwiperPattern>();
410 CHECK_NULL_VOID(pattern);
411 pattern->SetSwiperCustomContentTransition(transition);
412 }
413
SetOnContentDidScroll(ContentDidScrollEvent && onContentDidScroll)414 void SwiperModelNG::SetOnContentDidScroll(ContentDidScrollEvent&& onContentDidScroll)
415 {
416 auto swiperNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
417 CHECK_NULL_VOID(swiperNode);
418 auto pattern = swiperNode->GetPattern<SwiperPattern>();
419 CHECK_NULL_VOID(pattern);
420 pattern->SetOnContentDidScroll(std::move(onContentDidScroll));
421 }
422
SetOnContentDidScroll(FrameNode * frameNode,ContentDidScrollEvent && onContentDidScroll)423 void SwiperModelNG::SetOnContentDidScroll(FrameNode* frameNode, ContentDidScrollEvent&& onContentDidScroll)
424 {
425 CHECK_NULL_VOID(frameNode);
426 auto pattern = frameNode->GetPattern<SwiperPattern>();
427 CHECK_NULL_VOID(pattern);
428 pattern->SetOnContentDidScroll(std::move(onContentDidScroll));
429 }
430
SetNextMargin(FrameNode * frameNode,const Dimension & nextMargin,bool ignoreBlank)431 void SwiperModelNG::SetNextMargin(FrameNode* frameNode, const Dimension& nextMargin, bool ignoreBlank)
432 {
433 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, NextMargin, nextMargin, frameNode);
434 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, NextMarginIgnoreBlank, ignoreBlank, frameNode);
435 CHECK_NULL_VOID(frameNode);
436 auto pattern = frameNode->GetPattern<SwiperPattern>();
437 CHECK_NULL_VOID(pattern);
438 pattern->SetNextMarginIgnoreBlank(ignoreBlank);
439 }
440
SetPreviousMargin(FrameNode * frameNode,const Dimension & prevMargin,bool ignoreBlank)441 void SwiperModelNG::SetPreviousMargin(FrameNode* frameNode, const Dimension& prevMargin, bool ignoreBlank)
442 {
443 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, PrevMargin, prevMargin, frameNode);
444 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, PrevMarginIgnoreBlank, ignoreBlank, frameNode);
445 CHECK_NULL_VOID(frameNode);
446 auto pattern = frameNode->GetPattern<SwiperPattern>();
447 CHECK_NULL_VOID(pattern);
448 pattern->SetPrevMarginIgnoreBlank(ignoreBlank);
449 }
450
SetIndex(FrameNode * frameNode,uint32_t index)451 void SwiperModelNG::SetIndex(FrameNode* frameNode, uint32_t index)
452 {
453 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, Index, index, frameNode);
454 }
455
SetAutoPlayInterval(FrameNode * frameNode,uint32_t interval)456 void SwiperModelNG::SetAutoPlayInterval(FrameNode* frameNode, uint32_t interval)
457 {
458 ACE_UPDATE_NODE_PAINT_PROPERTY(SwiperPaintProperty, AutoPlayInterval, interval, frameNode);
459 }
460
SetDuration(FrameNode * frameNode,uint32_t duration)461 void SwiperModelNG::SetDuration(FrameNode* frameNode, uint32_t duration)
462 {
463 ACE_UPDATE_NODE_PAINT_PROPERTY(SwiperPaintProperty, Duration, duration, frameNode);
464 }
465
SetCachedCount(FrameNode * frameNode,int32_t cachedCount)466 void SwiperModelNG::SetCachedCount(FrameNode* frameNode, int32_t cachedCount)
467 {
468 CHECK_NULL_VOID(frameNode);
469 auto pattern = frameNode->GetPattern<SwiperPattern>();
470 CHECK_NULL_VOID(pattern);
471 pattern->SetCachedCount(cachedCount);
472
473 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, CachedCount, cachedCount, frameNode);
474 }
475
GetCachedCount(FrameNode * frameNode)476 int32_t SwiperModelNG::GetCachedCount(FrameNode* frameNode)
477 {
478 int32_t cachedCount = 1;
479 ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, CachedCount, cachedCount, frameNode, 1);
480 return cachedCount;
481 }
482
SetAutoPlay(FrameNode * frameNode,bool autoPlay)483 void SwiperModelNG::SetAutoPlay(FrameNode* frameNode, bool autoPlay)
484 {
485 ACE_UPDATE_NODE_PAINT_PROPERTY(SwiperPaintProperty, AutoPlay, autoPlay, frameNode);
486 }
487
SetLoop(FrameNode * frameNode,bool loop)488 void SwiperModelNG::SetLoop(FrameNode* frameNode, bool loop)
489 {
490 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, Loop, loop, frameNode);
491 }
492
SetDirection(FrameNode * frameNode,Axis axis)493 void SwiperModelNG::SetDirection(FrameNode* frameNode, Axis axis)
494 {
495 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, Direction, axis, frameNode);
496 }
497
SetDisableSwipe(FrameNode * frameNode,bool disableSwipe)498 void SwiperModelNG::SetDisableSwipe(FrameNode* frameNode, bool disableSwipe)
499 {
500 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisableSwipe, disableSwipe, frameNode);
501 }
502
SetItemSpace(FrameNode * frameNode,const Dimension & itemSpace)503 void SwiperModelNG::SetItemSpace(FrameNode* frameNode, const Dimension& itemSpace)
504 {
505 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, ItemSpace, itemSpace, frameNode);
506 }
507
SetDisplayMode(FrameNode * frameNode,SwiperDisplayMode displayMode)508 void SwiperModelNG::SetDisplayMode(FrameNode* frameNode, SwiperDisplayMode displayMode)
509 {
510 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisplayMode, displayMode, frameNode);
511 }
512
SetEdgeEffect(FrameNode * frameNode,EdgeEffect edgeEffect)513 void SwiperModelNG::SetEdgeEffect(FrameNode* frameNode, EdgeEffect edgeEffect)
514 {
515 ACE_UPDATE_NODE_PAINT_PROPERTY(SwiperPaintProperty, EdgeEffect, edgeEffect, frameNode);
516 }
517
SetMinSize(FrameNode * frameNode,const Dimension & minSize)518 void SwiperModelNG::SetMinSize(FrameNode* frameNode, const Dimension& minSize)
519 {
520 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, MinSize, minSize, frameNode);
521 }
522
SetDisplayCount(FrameNode * frameNode,int32_t displayCount)523 void SwiperModelNG::SetDisplayCount(FrameNode* frameNode, int32_t displayCount)
524 {
525 if (displayCount <= 0) {
526 return;
527 }
528
529 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisplayCount, displayCount, frameNode);
530 }
531
ResetDisplayCount(FrameNode * frameNode)532 void SwiperModelNG::ResetDisplayCount(FrameNode* frameNode)
533 {
534 ACE_RESET_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisplayCount, frameNode);
535 }
536
SetCurve(FrameNode * frameNode,const RefPtr<Curve> & curve)537 void SwiperModelNG::SetCurve(FrameNode* frameNode, const RefPtr<Curve>& curve)
538 {
539 ACE_UPDATE_NODE_PAINT_PROPERTY(SwiperPaintProperty, Curve, curve, frameNode);
540 }
541
SetArrowStyle(FrameNode * frameNode,const SwiperArrowParameters & swiperArrowParameters)542 void SwiperModelNG::SetArrowStyle(FrameNode* frameNode, const SwiperArrowParameters& swiperArrowParameters)
543 {
544 if (swiperArrowParameters.isShowBackground.has_value()) {
545 ACE_UPDATE_NODE_LAYOUT_PROPERTY(
546 SwiperLayoutProperty, IsShowBackground, swiperArrowParameters.isShowBackground.value(), frameNode);
547 }
548 if (swiperArrowParameters.backgroundSize.has_value()) {
549 ACE_UPDATE_NODE_LAYOUT_PROPERTY(
550 SwiperLayoutProperty, BackgroundSize, swiperArrowParameters.backgroundSize.value(), frameNode);
551 }
552 if (swiperArrowParameters.backgroundColor.has_value()) {
553 ACE_UPDATE_NODE_LAYOUT_PROPERTY(
554 SwiperLayoutProperty, BackgroundColor, swiperArrowParameters.backgroundColor.value(), frameNode);
555 }
556 if (swiperArrowParameters.arrowSize.has_value()) {
557 ACE_UPDATE_NODE_LAYOUT_PROPERTY(
558 SwiperLayoutProperty, ArrowSize, swiperArrowParameters.arrowSize.value(), frameNode);
559 }
560 if (swiperArrowParameters.arrowColor.has_value()) {
561 ACE_UPDATE_NODE_LAYOUT_PROPERTY(
562 SwiperLayoutProperty, ArrowColor, swiperArrowParameters.arrowColor.value(), frameNode);
563 }
564 if (swiperArrowParameters.isSidebarMiddle.has_value()) {
565 ACE_UPDATE_NODE_LAYOUT_PROPERTY(
566 SwiperLayoutProperty, IsSidebarMiddle, swiperArrowParameters.isSidebarMiddle.value(), frameNode);
567 }
568 }
569
SetDisplayArrow(FrameNode * frameNode,bool displayArrow)570 void SwiperModelNG::SetDisplayArrow(FrameNode* frameNode, bool displayArrow)
571 {
572 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, DisplayArrow, displayArrow, frameNode);
573 }
574
SetHoverShow(FrameNode * frameNode,bool hoverShow)575 void SwiperModelNG::SetHoverShow(FrameNode* frameNode, bool hoverShow)
576 {
577 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, HoverShow, hoverShow, frameNode);
578 }
579
SetShowIndicator(FrameNode * frameNode,bool showIndicator)580 void SwiperModelNG::SetShowIndicator(FrameNode* frameNode, bool showIndicator)
581 {
582 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, ShowIndicator, showIndicator, frameNode);
583 }
584
SetIndicatorIsBoolean(FrameNode * frameNode,bool isBoolean)585 void SwiperModelNG::SetIndicatorIsBoolean(FrameNode* frameNode, bool isBoolean)
586 {
587 CHECK_NULL_VOID(frameNode);
588 auto pattern = frameNode->GetPattern<SwiperPattern>();
589 CHECK_NULL_VOID(pattern);
590 pattern->SetIndicatorIsBoolean(isBoolean);
591 }
592
SetDigitIndicatorStyle(FrameNode * frameNode,const SwiperDigitalParameters & swiperDigitalParameters)593 void SwiperModelNG::SetDigitIndicatorStyle(FrameNode* frameNode, const SwiperDigitalParameters& swiperDigitalParameters)
594 {
595 CHECK_NULL_VOID(frameNode);
596 auto pattern = frameNode->GetPattern<SwiperPattern>();
597 CHECK_NULL_VOID(pattern);
598 pattern->SetSwiperDigitalParameters(swiperDigitalParameters);
599 }
600
SetIndicatorType(FrameNode * frameNode,SwiperIndicatorType indicatorType)601 void SwiperModelNG::SetIndicatorType(FrameNode* frameNode, SwiperIndicatorType indicatorType)
602 {
603 SwiperIndicatorUtils::SetSwiperIndicatorType(indicatorType);
604 ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, IndicatorType, indicatorType, frameNode);
605 }
606
SetIsIndicatorCustomSize(FrameNode * frameNode,bool isCustomSize)607 void SwiperModelNG::SetIsIndicatorCustomSize(FrameNode* frameNode, bool isCustomSize)
608 {
609 CHECK_NULL_VOID(frameNode);
610 auto pattern = frameNode->GetPattern<SwiperPattern>();
611 CHECK_NULL_VOID(pattern);
612 pattern->SetIsIndicatorCustomSize(isCustomSize);
613 }
614
SetDotIndicatorStyle(FrameNode * frameNode,const SwiperParameters & swiperParameters)615 void SwiperModelNG::SetDotIndicatorStyle(FrameNode* frameNode, const SwiperParameters& swiperParameters)
616 {
617 CHECK_NULL_VOID(frameNode);
618 auto pattern = frameNode->GetPattern<SwiperPattern>();
619 CHECK_NULL_VOID(pattern);
620 pattern->SetSwiperParameters(swiperParameters);
621 }
622
SetEnabled(FrameNode * frameNode,bool enabled)623 void SwiperModelNG::SetEnabled(FrameNode* frameNode, bool enabled)
624 {
625 ACE_UPDATE_NODE_PAINT_PROPERTY(SwiperPaintProperty, Enabled, enabled, frameNode);
626 }
627
SetOnChange(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && onChange)628 void SwiperModelNG::SetOnChange(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& onChange)
629 {
630 CHECK_NULL_VOID(frameNode);
631 auto pattern = frameNode->GetPattern<SwiperPattern>();
632 CHECK_NULL_VOID(pattern);
633 pattern->UpdateChangeEvent([event = std::move(onChange)](int32_t index) {
634 SwiperChangeEvent eventInfo(index);
635 event(&eventInfo);
636 });
637 }
638
SetOnAnimationStart(FrameNode * frameNode,AnimationStartEvent && onAnimationStart)639 void SwiperModelNG::SetOnAnimationStart(FrameNode* frameNode, AnimationStartEvent&& onAnimationStart)
640 {
641 CHECK_NULL_VOID(frameNode);
642 auto pattern = frameNode->GetPattern<SwiperPattern>();
643 CHECK_NULL_VOID(pattern);
644 pattern->UpdateAnimationStartEvent([event = std::move(onAnimationStart)](int32_t index, int32_t targetIndex,
645 const AnimationCallbackInfo& info) { event(index, targetIndex, info); });
646 }
647
SetOnAnimationEnd(FrameNode * frameNode,AnimationEndEvent && onAnimationEnd)648 void SwiperModelNG::SetOnAnimationEnd(FrameNode* frameNode, AnimationEndEvent&& onAnimationEnd)
649 {
650 CHECK_NULL_VOID(frameNode);
651 auto pattern = frameNode->GetPattern<SwiperPattern>();
652 CHECK_NULL_VOID(pattern);
653 pattern->UpdateAnimationEndEvent(
654 [event = std::move(onAnimationEnd)](int32_t index, const AnimationCallbackInfo& info) { event(index, info); });
655 }
656
SetOnGestureSwipe(FrameNode * frameNode,GestureSwipeEvent && onGestureSwipe)657 void SwiperModelNG::SetOnGestureSwipe(FrameNode* frameNode, GestureSwipeEvent&& onGestureSwipe)
658 {
659 CHECK_NULL_VOID(frameNode);
660 auto eventHub = frameNode->GetEventHub<SwiperEventHub>();
661 CHECK_NULL_VOID(eventHub);
662 eventHub->SetGestureSwipeEvent(
663 [event = std::move(onGestureSwipe)](int32_t index, const AnimationCallbackInfo& info) { event(index, info); });
664 }
665
GetLoop(FrameNode * frameNode)666 bool SwiperModelNG::GetLoop(FrameNode* frameNode)
667 {
668 bool value = true;
669 ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, Loop, value, frameNode, value);
670 return value;
671 }
672
GetAutoPlay(FrameNode * frameNode)673 bool SwiperModelNG::GetAutoPlay(FrameNode* frameNode)
674 {
675 bool value = false;
676 ACE_GET_NODE_PAINT_PROPERTY_WITH_DEFAULT_VALUE(SwiperPaintProperty, AutoPlay, value, frameNode, value);
677 return value;
678 }
679
GetIndex(FrameNode * frameNode)680 int SwiperModelNG::GetIndex(FrameNode* frameNode)
681 {
682 int value = 0;
683 ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, Index, value, frameNode, value);
684 return value;
685 }
686
GetDirection(FrameNode * frameNode)687 Axis SwiperModelNG::GetDirection(FrameNode* frameNode)
688 {
689 Axis value = Axis::HORIZONTAL;
690 ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, Direction, value, frameNode, value);
691 return value;
692 }
693
GetDuration(FrameNode * frameNode)694 uint32_t SwiperModelNG::GetDuration(FrameNode* frameNode)
695 {
696 uint32_t value = SwiperAnimationStyle::DEFAULT_DURATION;
697 ACE_GET_NODE_PAINT_PROPERTY_WITH_DEFAULT_VALUE(SwiperPaintProperty, Duration, value, frameNode, value);
698 return value;
699 }
700
GetDisplayCount(FrameNode * frameNode)701 int SwiperModelNG::GetDisplayCount(FrameNode* frameNode)
702 {
703 int value = 1;
704 ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, DisplayCount, value, frameNode, value);
705 return value;
706 }
707
GetAutoPlayInterval(FrameNode * frameNode)708 int SwiperModelNG::GetAutoPlayInterval(FrameNode* frameNode)
709 {
710 int value = SwiperAnimationStyle::DEFAULT_INTERVAL;
711 ACE_GET_NODE_PAINT_PROPERTY_WITH_DEFAULT_VALUE(SwiperPaintProperty, AutoPlayInterval, value, frameNode, value);
712 return value;
713 }
714
GetCurve(FrameNode * frameNode)715 RefPtr<Curve> SwiperModelNG::GetCurve(FrameNode* frameNode)
716 {
717 RefPtr<Curve> value = OHOS::Ace::Curves::LINEAR;
718 ACE_GET_NODE_PAINT_PROPERTY_WITH_DEFAULT_VALUE(SwiperPaintProperty, Curve, value, frameNode, value);
719 return value;
720 }
721
GetDisableSwipe(FrameNode * frameNode)722 bool SwiperModelNG::GetDisableSwipe(FrameNode* frameNode)
723 {
724 bool value = false;
725 ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, DisableSwipe, value, frameNode, value);
726 return value;
727 }
728
GetItemSpace(FrameNode * frameNode)729 float SwiperModelNG::GetItemSpace(FrameNode* frameNode)
730 {
731 Dimension value(0, DimensionUnit::VP);
732 ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, ItemSpace, value, frameNode, value);
733 return value.Value();
734 }
735
GetShowIndicator(FrameNode * frameNode)736 bool SwiperModelNG::GetShowIndicator(FrameNode* frameNode)
737 {
738 bool value = true;
739 ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, ShowIndicator, value, frameNode, value);
740 return value;
741 }
742
GetShowDisplayArrow(FrameNode * frameNode)743 int SwiperModelNG::GetShowDisplayArrow(FrameNode* frameNode)
744 {
745 bool show = false;
746 bool hoverShow = false;
747 ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, DisplayArrow, show, frameNode, show);
748 ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, HoverShow, hoverShow, frameNode, hoverShow);
749 int ArrowType = 0;
750 if (show && hoverShow) {
751 return ArrowType = static_cast<int>(SwiperArrow::ARKUI_SWIPER_ARROW_SHOW_ON_HOVER);
752 }
753 if (show) {
754 ArrowType = static_cast<int>(SwiperArrow::ARKUI_SWIPER_ARROW_SHOW);
755 } else {
756 ArrowType = static_cast<int>(SwiperArrow::ARKUI_SWIPER_ARROW_HIDE);
757 }
758 return ArrowType;
759 }
760
GetEffectMode(FrameNode * frameNode)761 EdgeEffect SwiperModelNG::GetEffectMode(FrameNode* frameNode)
762 {
763 EdgeEffect mode = EdgeEffect::SPRING;
764 ACE_GET_NODE_PAINT_PROPERTY_WITH_DEFAULT_VALUE(SwiperPaintProperty, EdgeEffect, mode, frameNode, mode);
765 return mode;
766 }
767
GetNestedScroll(FrameNode * frameNode)768 int32_t SwiperModelNG::GetNestedScroll(FrameNode* frameNode)
769 {
770 CHECK_NULL_RETURN(frameNode, ERROR_CODE_PARAM_INVALID);
771 auto pattern = frameNode->GetPattern<SwiperPattern>();
772 CHECK_NULL_RETURN(pattern, ERROR_CODE_PARAM_INVALID);
773 return static_cast<int>(pattern->GetNestedScroll().forward);
774 }
775
RealTotalCount(FrameNode * frameNode)776 int32_t SwiperModelNG::RealTotalCount(FrameNode* frameNode)
777 {
778 CHECK_NULL_RETURN(frameNode, 0);
779 auto pattern = frameNode->GetPattern<SwiperPattern>();
780 CHECK_NULL_RETURN(pattern, 0);
781 return pattern->RealTotalCount();
782 }
783
SetSwiperToIndex(FrameNode * frameNode,int32_t index,bool useAnimation)784 void SwiperModelNG::SetSwiperToIndex(FrameNode* frameNode, int32_t index, bool useAnimation)
785 {
786 CHECK_NULL_VOID(frameNode);
787 auto pattern = frameNode->GetPattern<SwiperPattern>();
788 CHECK_NULL_VOID(pattern);
789 pattern->ChangeIndex(index, useAnimation);
790 }
791
GetPreviousMargin(FrameNode * frameNode,int32_t unit,SwiperMarginOptions * options)792 void SwiperModelNG::GetPreviousMargin(FrameNode* frameNode, int32_t unit, SwiperMarginOptions* options)
793 {
794 Dimension prevMargin(0.0f, static_cast<DimensionUnit>(unit));
795 ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(
796 SwiperLayoutProperty, PrevMargin, prevMargin, frameNode, prevMargin);
797 options->margin = prevMargin.GetNativeValue(static_cast<DimensionUnit>(unit));
798 auto pattern = frameNode->GetPattern<SwiperPattern>();
799 CHECK_NULL_VOID(pattern);
800 options->ignoreBlank = pattern->GetPrevMarginIgnoreBlank();
801 }
802
GetNextMargin(FrameNode * frameNode,int32_t unit,SwiperMarginOptions * options)803 void SwiperModelNG::GetNextMargin(FrameNode* frameNode, int32_t unit, SwiperMarginOptions* options)
804 {
805 Dimension nextMargin(0.0f, static_cast<DimensionUnit>(unit));
806 ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(
807 SwiperLayoutProperty, NextMargin, nextMargin, frameNode, nextMargin);
808 options->margin = nextMargin.GetNativeValue(static_cast<DimensionUnit>(unit));
809 auto pattern = frameNode->GetPattern<SwiperPattern>();
810 CHECK_NULL_VOID(pattern);
811 options->ignoreBlank = pattern->GetNextMarginIgnoreBlank();
812 }
813
GetDotIndicator(FrameNode * frameNode)814 std::shared_ptr<SwiperParameters> SwiperModelNG::GetDotIndicator(FrameNode* frameNode)
815 {
816 CHECK_NULL_RETURN(frameNode, nullptr);
817 auto pattern = frameNode->GetPattern<SwiperPattern>();
818 CHECK_NULL_RETURN(pattern, nullptr);
819 return pattern->GetSwiperParameters();
820 }
821
GetIndicatorType(FrameNode * frameNode)822 int32_t SwiperModelNG::GetIndicatorType(FrameNode* frameNode)
823 {
824 CHECK_NULL_RETURN(frameNode, 0);
825 SwiperIndicatorType value = SwiperIndicatorType::DOT;
826 ACE_GET_NODE_LAYOUT_PROPERTY_WITH_DEFAULT_VALUE(SwiperLayoutProperty, IndicatorType,
827 value, frameNode, value);
828 return static_cast<int32_t>(value);
829 }
830
GetOrCreateSwiperController(FrameNode * frameNode)831 RefPtr<SwiperController> SwiperModelNG::GetOrCreateSwiperController(FrameNode* frameNode)
832 {
833 CHECK_NULL_RETURN(frameNode, nullptr);
834 auto pattern = frameNode->GetPattern<SwiperPattern>();
835 CHECK_NULL_RETURN(pattern, nullptr);
836 if (!pattern->GetSwiperController()) {
837 auto controller = AceType::MakeRefPtr<SwiperController>();
838 pattern->SetSwiperController(controller);
839 }
840 return pattern->GetSwiperController();
841 }
842
GetSwiperController(FrameNode * frameNode)843 RefPtr<SwiperController> SwiperModelNG::GetSwiperController(FrameNode* frameNode)
844 {
845 auto pattern = frameNode->GetPattern<SwiperPattern>();
846 CHECK_NULL_RETURN(pattern, nullptr);
847 return pattern->GetSwiperController();
848 }
849
GetIndicatorInteractive(FrameNode * frameNode)850 bool SwiperModelNG::GetIndicatorInteractive(FrameNode* frameNode)
851 {
852 CHECK_NULL_RETURN(frameNode, false);
853 auto pattern = frameNode->GetPattern<SwiperPattern>();
854 CHECK_NULL_RETURN(pattern, false);
855 return pattern->IsIndicatorInteractive();
856 }
857 } // namespace OHOS::Ace::NG
858