1 /* 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_WATERFLOW_WATER_FLOW_MODEL_NG_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_WATERFLOW_WATER_FLOW_MODEL_NG_H 18 19 #include "base/utils/macros.h" 20 #include "core/components_ng/pattern/waterflow/water_flow_event_hub.h" 21 #include "core/components_ng/pattern/waterflow/water_flow_model.h" 22 23 namespace OHOS::Ace::NG { 24 class ACE_EXPORT WaterFlowModelNG : public WaterFlowModel { 25 public: 26 void Create() override; 27 void SetFooter(std::function<void()>&& footer) override; 28 RefPtr<ScrollControllerBase> CreateScrollController() override; 29 RefPtr<ScrollProxy> CreateScrollBarProxy() override; 30 void SetScroller(RefPtr<ScrollControllerBase> scroller, RefPtr<ScrollProxy> proxy) override; 31 void SetLayoutMode(WaterFlowLayoutMode mode) override; 32 33 void SetColumnsTemplate(const std::string& value) override; 34 void SetRowsTemplate(const std::string& value) override; 35 36 void SetItemMinWidth(const Dimension& minWidth) override; 37 void SetItemMinHeight(const Dimension& minHeight) override; 38 void SetItemMaxWidth(const Dimension& maxWidth) override; 39 void SetItemMaxHeight(const Dimension& maxHeight) override; 40 41 void SetColumnsGap(const Dimension& value) override; 42 void SetRowsGap(const Dimension& value) override; 43 44 void SetLayoutDirection(FlexDirection value) override; 45 void SetNestedScroll(const NestedScrollOptions& nestedOpt) override; 46 void SetScrollEnabled(bool scrollEnabled) override; 47 48 void SetOnReachStart(OnReachEvent&& onReachStart) override; 49 void SetOnReachEnd(OnReachEvent&& onReachEnd) override; 50 void SetOnScrollFrameBegin(OnScrollFrameBeginEvent&& ScrollFrameBegin) override; 51 void SetOnScroll(std::function<void(Dimension, ScrollState)>&& onScroll) override; 52 void SetOnScrollStart(OnScrollStartEvent&& onScrollStart) override; 53 void SetOnScrollStop(OnScrollStopEvent&& onScrollStop) override; 54 void SetOnScrollIndex(ScrollIndexFunc&& onScrollIndex) override; 55 56 void SetFriction(double friction) override; 57 void SetCachedCount(int32_t value, bool show = false) override; 58 void SetEdgeEffect(EdgeEffect edgeEffect, bool alwaysEnabled) override; 59 60 void SetScrollBarMode(DisplayMode value) override; 61 void SetScrollBarColor(const std::string& value) override; 62 void SetScrollBarWidth(const std::string& value) override; 63 64 RefPtr<WaterFlowSections> GetOrCreateWaterFlowSections() override; 65 void ResetSections() override; 66 static RefPtr<FrameNode> CreateFrameNode(int32_t nodeId); 67 static RefPtr<ScrollControllerBase> GetOrCreateController(FrameNode* frameNode); 68 static void SetColumnsTemplate(FrameNode* frameNode, const std::string& value); 69 static void SetRowsTemplate(FrameNode* frameNode, const std::string& value); 70 static void SetScrollEnabled(FrameNode* frameNode, bool scrollEnabled); 71 static void SetColumnsGap(FrameNode* frameNode, const Dimension& value); 72 static void SetRowsGap(FrameNode* frameNode, const Dimension& value); 73 static void SetItemMinWidth(FrameNode* frameNode, const Dimension& minWidth); 74 static void SetItemMaxWidth(FrameNode* frameNode, const Dimension& maxWidth); 75 static void SetItemMinHeight(FrameNode* frameNode, const Dimension& minHeight); 76 static void SetItemMaxHeight(FrameNode* frameNode, const Dimension& maxHeight); 77 static void SetLayoutDirection(FrameNode* frameNode, FlexDirection value); 78 static void SetNestedScroll(FrameNode* frameNode, const NestedScrollOptions& nestedOpt); 79 static void SetFriction(FrameNode* frameNode, double friction); 80 static FlexDirection GetLayoutDirection(FrameNode* frameNode); 81 static std::string GetColumnsTemplate(FrameNode* frameNode); 82 static std::string GetRowsTemplate(FrameNode* frameNode); 83 static float GetColumnsGap(FrameNode* frameNode); 84 static float GetRowsGap(FrameNode* frameNode); 85 static NestedScrollOptions GetNestedScroll(FrameNode* frameNode); 86 static void SetCachedCount(FrameNode* frameNode, int32_t value); 87 static int32_t GetCachedCount(FrameNode* frameNode); 88 static void SetShowCached(FrameNode* frameNode, bool show); 89 static int32_t GetShowCached(FrameNode* frameNode); 90 static void SetEdgeEffect(FrameNode* frameNode, EdgeEffect edgeEffect, bool alwaysEnabled); 91 static float GetFriction(FrameNode* frameNode); 92 static void SetScrollBarMode(FrameNode* frameNode, DisplayMode value); 93 static int32_t GetScrollBarMode(FrameNode* frameNode); 94 static void SetScrollBarColor(FrameNode* frameNode, const std::string& value); 95 static uint32_t GetScrollBarColor(FrameNode* frameNode); 96 static void SetScrollBarWidth(FrameNode* frameNode, const std::string& value); 97 static float GetScrollBarWidth(FrameNode* frameNode); 98 static int32_t GetEdgeEffect(FrameNode* frameNode); 99 static int32_t GetEdgeEffectAlways(FrameNode* frameNode); 100 static Dimension GetItemMinWidth(FrameNode* frameNode); 101 static Dimension GetItemMaxWidth(FrameNode* frameNode); 102 static Dimension GetItemMinHeight(FrameNode* frameNode); 103 static Dimension GetItemMaxHeight(FrameNode* frameNode); 104 static RefPtr<WaterFlowSections> GetOrCreateWaterFlowSections(FrameNode* frameNode); 105 static void ResetSections(FrameNode* frameNode); 106 static bool GetScrollEnabled(FrameNode* frameNode); 107 static void SetOnScroll(FrameNode* frameNode, std::function<void(Dimension, ScrollState)>&& onScroll); 108 static void SetOnScrollStart(FrameNode* frameNode, OnScrollStartEvent&& onScrollStart); 109 static void SetOnScrollStop(FrameNode* frameNode, OnScrollStopEvent&& onScrollStop); 110 static void SetOnScrollFrameBegin(FrameNode* frameNode, OnScrollFrameBeginEvent&& ScrollFrameBegin); 111 static void SetOnScrollIndex(FrameNode* frameNode, ScrollIndexFunc&& onScrollIndex); 112 static void SetScrollToIndex(FrameNode* frameNode, int32_t index, int32_t animation, int32_t alignment); 113 static void SetOnReachStart(FrameNode* frameNode, OnReachEvent&& onReachStart); 114 static void SetOnReachEnd(FrameNode* frameNode, OnReachEvent&& onReachEnd); 115 static void SetWaterflowFooter(FrameNode* frameNode, FrameNode* footerNode); 116 static bool hasFooter(FrameNode* frameNode); 117 static void SetFlingSpeedLimit(FrameNode* frameNode, double maxSpeed); 118 static void SetScroller(FrameNode* frameNode, RefPtr<ScrollControllerBase> scroller, RefPtr<ScrollProxy> proxy); 119 static void SetLayoutMode(FrameNode* frameNode, WaterFlowLayoutMode mode); 120 }; 121 } // namespace OHOS::Ace::NG 122 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_WATERFLOW_WATER_FLOW_MODEL_NG_H