1 /* 2 * Copyright (c) 2022 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_V2_WATER_FLOW_WATER_FLOW_COMPONENT_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_V2_WATER_FLOW_WATER_FLOW_COMPONENT_H 18 19 #include "core/components/common/layout/constants.h" 20 #include "core/components/common/properties/scroll_bar.h" 21 #include "core/components/scroll_bar/scroll_bar_proxy.h" 22 #include "core/components_v2/common/common_def.h" 23 #include "core/components_v2/water_flow/water_flow_position_controller.h" 24 #include "core/pipeline/base/component_group.h" 25 26 namespace OHOS::Ace::V2 { 27 class ACE_EXPORT WaterFlowComponent : public ComponentGroup { 28 DECLARE_ACE_TYPE(WaterFlowComponent, ComponentGroup); 29 30 public: WaterFlowComponent(const std::list<RefPtr<Component>> & children)31 explicit WaterFlowComponent(const std::list<RefPtr<Component>>& children) : ComponentGroup(children) {} 32 33 ~WaterFlowComponent() override = default; 34 35 RefPtr<Element> CreateElement() override; 36 RefPtr<RenderNode> CreateRenderNode() override; 37 38 void SetColumnsGap(const Dimension& columnsGap); 39 void SetRowsGap(const Dimension& rowsGap); 40 void SetLayoutDirection(FlexDirection direction); 41 void SetController(const RefPtr<V2::WaterFlowPositionController>& controller); 42 void SetScrollBarProxy(const RefPtr<ScrollBarProxy>& scrollBarProxy); 43 void SetScrolledEvent(const EventMarker& event); 44 void SetScrollBarDisplayMode(DisplayMode displayMode); 45 void SetScrollBarColor(const std::string& color); 46 void SetScrollBarWidth(const std::string& width); 47 void SetColumnsArgs(const std::string& columnsArgs); 48 void SetRowsArgs(const std::string& rowsArgs); 49 void SetMinWidth(const Dimension& minWidth); 50 void SetMinHeight(const Dimension& minHeight); 51 void SetMaxWidth(const Dimension& maxWidth); 52 void SetMaxHeight(const Dimension& maxHeight); 53 void SetFooterComponent(RefPtr<Component> component); 54 GetColumnsGap()55 const Dimension& GetColumnsGap() const 56 { 57 return columnsGap_; 58 } 59 GetRowsGap()60 const Dimension& GetRowsGap() const 61 { 62 return rowsGap_; 63 } 64 GetDirection()65 FlexDirection GetDirection() const 66 { 67 return direction_; 68 } 69 GetController()70 const RefPtr<V2::WaterFlowPositionController>& GetController() const 71 { 72 return controller_; 73 } 74 GetScrollBarProxy()75 const RefPtr<ScrollBarProxy>& GetScrollBarProxy() const 76 { 77 return scrollBarProxy_; 78 } 79 GetScrolledEvent()80 const EventMarker& GetScrolledEvent() const 81 { 82 return scrolledEvent_; 83 } 84 GetScrollBarDisplayMode()85 DisplayMode GetScrollBarDisplayMode() 86 { 87 return displayMode_; 88 } 89 GetColumnsArgs()90 const std::string& GetColumnsArgs() const 91 { 92 return columnsArgs_; 93 } 94 GetRowsArgs()95 const std::string& GetRowsArgs() const 96 { 97 return rowsArgs_; 98 } 99 GetMinWidth()100 const Dimension& GetMinWidth() const 101 { 102 return minWidth_; 103 } 104 GetMinHeight()105 const Dimension& GetMinHeight() const 106 { 107 return minHeight_; 108 } 109 GetMaxWidth()110 const Dimension& GetMaxWidth() const 111 { 112 return maxWidth_; 113 } 114 GetMaxHeight()115 const Dimension& GetMaxHeight() const 116 { 117 return maxHeight_; 118 } 119 GetFooterComponent()120 RefPtr<Component> GetFooterComponent() const 121 { 122 return footerComponent_; 123 } 124 125 ACE_DEFINE_COMPONENT_EVENT(OnReachStart, void()); 126 ACE_DEFINE_COMPONENT_EVENT(OnReachEnd, void()); 127 128 private: 129 Dimension columnsGap_ = 0.0_px; 130 Dimension rowsGap_ = 0.0_px; 131 FlexDirection direction_ = FlexDirection::COLUMN; 132 std::string columnsArgs_; 133 std::string rowsArgs_; 134 Dimension minWidth_ = 0.0_px; 135 Dimension minHeight_ = 0.0_px; 136 Dimension maxWidth_ = 0.0_px; 137 Dimension maxHeight_ = 0.0_px; 138 139 // scroll bar attribute 140 DisplayMode displayMode_ = DisplayMode::ON; 141 RefPtr<V2::WaterFlowPositionController> controller_; 142 RefPtr<ScrollBarProxy> scrollBarProxy_; 143 EventMarker scrolledEvent_; 144 RefPtr<Component> footerComponent_; 145 ACE_DISALLOW_COPY_AND_MOVE(WaterFlowComponent); 146 }; 147 } // namespace OHOS::Ace::V2 148 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_V2_WATER_FLOW_WATER_FLOW_COMPONENT_H 149