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 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_SWIPER_SWIPER_MODEL_NG_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_SWIPER_SWIPER_MODEL_NG_H 18 19 #include <cstdint> 20 21 #include "base/geometry/axis.h" 22 #include "base/geometry/dimension.h" 23 #include "base/memory/referenced.h" 24 #include "base/utils/macros.h" 25 #include "core/components/common/layout/constants.h" 26 #include "core/components/common/properties/scroll_bar.h" 27 #include "core/components/declaration/swiper/swiper_declaration.h" 28 #include "core/components_ng/base/frame_node.h" 29 #include "core/components_ng/pattern/swiper/swiper_model.h" 30 31 namespace OHOS::Ace::NG { 32 class ACE_EXPORT SwiperModelNG : public OHOS::Ace::SwiperModel { 33 public: 34 RefPtr<SwiperController> Create() override; 35 void SetDirection(Axis axis) override; 36 void SetIndex(uint32_t index) override; 37 void SetIndicatorInteractive(bool interactive) override; 38 void SetAutoPlay(bool autoPlay) override; 39 void SetAutoPlayInterval(uint32_t interval) override; 40 void SetDuration(uint32_t duration) override; 41 void SetCurve(const RefPtr<Curve>& curve) override; 42 void SetLoop(bool loop) override; 43 void SetEnabled(bool enabled) override; 44 void SetDisableSwipe(bool disableSwipe) override; 45 void SetEdgeEffect(EdgeEffect EdgeEffect) override; 46 void SetDisplayMode(SwiperDisplayMode displayMode) override; 47 void SetDisplayCount(int32_t displayCount) override; 48 void ResetDisplayCount() override; 49 void SetMinSize(const Dimension& minSize) override; 50 void SetShowIndicator(bool showIndicator) override; 51 void SetIndicatorType(SwiperIndicatorType indicatorType) override; 52 void SetIsIndicatorCustomSize(bool isCustomSize) override; 53 void SetItemSpace(const Dimension& itemSpace) override; 54 void SetCachedCount(int32_t cachedCount) override; 55 void SetOnChange(std::function<void(const BaseEventInfo* info)>&& onChange) override; 56 void SetOnAnimationStart(AnimationStartEvent&& onAnimationStart) override; 57 void SetOnAnimationEnd(AnimationEndEvent&& onAnimationEnd) override; 58 void SetOnGestureSwipe(GestureSwipeEvent&& gestureSwipe) override; 59 60 void SetRemoteMessageEventId(RemoteCallback&& remoteCallback) override; 61 void SetOnClick( 62 std::function<void(const BaseEventInfo* info, const RefPtr<V2::InspectorFunctionImpl>& impl)>&& value) override; 63 void SetMainSwiperSizeWidth() override; 64 void SetMainSwiperSizeHeight() override; 65 void SetIndicatorStyle(const SwiperParameters& swiperParameters) override; 66 void SetDotIndicatorStyle(const SwiperParameters& swiperParameters) override; 67 void SetDigitIndicatorStyle(const SwiperDigitalParameters& swiperDigitalParameters) override; 68 void SetPreviousMargin(const Dimension& prevMargin, bool ignoreBlank) override; 69 void SetNextMargin(const Dimension& nextMargi, bool ignoreBlankn) override; 70 void SetOnChangeEvent(std::function<void(const BaseEventInfo* info)>&& onChangeEvent) override; 71 void SetIndicatorIsBoolean(bool isBoolean) override; 72 void SetArrowStyle(const SwiperArrowParameters& swiperArrowParameters) override; 73 void SetDisplayArrow(bool displayArrow) override; 74 void SetHoverShow(bool hoverShow) override; 75 void SetNestedScroll(const NestedScrollOptions& nestedOpt) override; 76 void SetSwipeByGroup(bool swipeByGroup) override; 77 void SetCustomContentTransition(SwiperContentAnimatedTransition& transition) override; 78 void SetOnContentDidScroll(ContentDidScrollEvent&& onContentDidScroll) override; 79 static RefPtr<FrameNode> CreateFrameNode(int32_t nodeId); 80 static void SetIndicatorInteractive(FrameNode* frameNode, bool interactive); 81 static void SetNextMargin(FrameNode* frameNode, const Dimension& nextMargin, bool ignoreBlankn = false); 82 static void SetPreviousMargin(FrameNode* frameNode, const Dimension& prevMargin, bool ignoreBlankn = false); 83 static void SetIndex(FrameNode* frameNode, uint32_t index); 84 static void SetAutoPlayInterval(FrameNode* frameNode, uint32_t interval); 85 static void SetDuration(FrameNode* frameNode, uint32_t duration); 86 static void SetCachedCount(FrameNode* frameNode, int32_t cachedCount); 87 static int32_t GetCachedCount(FrameNode* frameNode); 88 static void SetAutoPlay(FrameNode* frameNode, bool autoPlay); 89 static void SetLoop(FrameNode* frameNode, bool loop); 90 static void SetDirection(FrameNode* frameNode, Axis axis); 91 static void SetDisableSwipe(FrameNode* frameNode, bool disableSwipe); 92 static void SetItemSpace(FrameNode* frameNode, const Dimension& itemSpace); 93 static void SetDisplayMode(FrameNode* frameNode, SwiperDisplayMode displayMode); 94 static void SetEdgeEffect(FrameNode* frameNode, EdgeEffect EdgeEffect); 95 static void SetMinSize(FrameNode* frameNode, const Dimension& minSize); 96 static void SetDisplayCount(FrameNode* frameNode, int32_t displayCount); 97 static void ResetDisplayCount(FrameNode* frameNode); 98 static void SetCurve(FrameNode* frameNode, const RefPtr<Curve>& curve); 99 static void SetArrowStyle(FrameNode* frameNode, const SwiperArrowParameters& swiperArrowParameters); 100 static void SetDisplayArrow(FrameNode* frameNode, bool displayArrow); 101 static void SetHoverShow(FrameNode* frameNode, bool hoverShow); 102 static void SetShowIndicator(FrameNode* frameNode, bool showIndicator); 103 static void SetIndicatorIsBoolean(FrameNode* frameNode, bool isBoolean); 104 static void SetDigitIndicatorStyle(FrameNode* frameNode, const SwiperDigitalParameters& swiperDigitalParameters); 105 static void SetDotIndicatorStyle(FrameNode* frameNode, const SwiperParameters& swiperParameters); 106 static void SetIndicatorType(FrameNode* frameNode, SwiperIndicatorType indicatorType); 107 static void SetIsIndicatorCustomSize(FrameNode* frameNode, bool isCustomSize); 108 static void SetEnabled(FrameNode* frameNode, bool enabled); 109 static void SetOnChange(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& onChange); 110 static void SetOnAnimationStart(FrameNode* frameNode, AnimationStartEvent&& onAnimationStart); 111 static void SetOnAnimationEnd(FrameNode* frameNode, AnimationEndEvent&& onAnimationEnd); 112 static void SetOnGestureSwipe(FrameNode* frameNode, GestureSwipeEvent&& onGestureSwipe); 113 static void SetNestedScroll(FrameNode* frameNode, const int32_t nestedOpt); 114 static void SetSwipeByGroup(FrameNode* frameNode, bool swipeByGroup); 115 116 static bool GetLoop(FrameNode* frameNode); 117 static bool GetAutoPlay(FrameNode* frameNode); 118 static int GetIndex(FrameNode* frameNode); 119 static Axis GetDirection(FrameNode* frameNode); 120 static uint32_t GetDuration(FrameNode* frameNode); 121 static int GetDisplayCount(FrameNode* frameNode); 122 static int GetAutoPlayInterval(FrameNode* frameNode); 123 static RefPtr<Curve> GetCurve(FrameNode* frameNode); 124 static bool GetDisableSwipe(FrameNode* frameNode); 125 static float GetItemSpace(FrameNode* frameNode); 126 static bool GetShowIndicator(FrameNode* frameNode); 127 static int GetShowDisplayArrow(FrameNode* frameNode); 128 static EdgeEffect GetEffectMode(FrameNode* frameNode); 129 static int32_t GetNestedScroll(FrameNode* frameNode); 130 131 static int32_t RealTotalCount(FrameNode* frameNode); 132 static void SetSwiperToIndex(FrameNode* frameNode, int32_t index, bool useAnimation); 133 static void GetPreviousMargin(FrameNode* frameNode, int32_t unit, SwiperMarginOptions* options); 134 static void GetNextMargin(FrameNode* frameNode, int32_t unit, SwiperMarginOptions* options); 135 static std::shared_ptr<SwiperParameters> GetDotIndicator(FrameNode* frameNode); 136 static int32_t GetIndicatorType(FrameNode* frameNode); 137 static RefPtr<SwiperController> GetSwiperController(FrameNode* frameNode); 138 static void SetOnContentDidScroll(FrameNode* frameNode, ContentDidScrollEvent&& onContentDidScroll); 139 static void SetCustomContentTransition(FrameNode* frameNode, SwiperContentAnimatedTransition& transition); 140 static RefPtr<SwiperController> GetOrCreateSwiperController(FrameNode* frameNode); 141 static bool GetIndicatorInteractive(FrameNode* frameNode); 142 }; 143 144 } // namespace OHOS::Ace::NG 145 146 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_SWIPER_SWIPER_MODEL_NG_H 147