1 /* 2 * Copyright (c) 2021-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_TAB_BAR_TAB_CONTENT_COMPONENT_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_TAB_BAR_TAB_CONTENT_COMPONENT_H 18 19 #include "core/components/tab_bar/tab_bar_component.h" 20 #include "core/components/tab_bar/tab_controller.h" 21 #include "core/components/tab_bar/tabs_event.h" 22 #include "core/pipeline/base/component_group.h" 23 #include "core/pipeline/base/element.h" 24 #include "core/pipeline/base/render_node.h" 25 26 namespace OHOS::Ace { 27 28 // The default interval for scrolling content in ms. 29 inline constexpr float DEFAULT_TABCONTENT_ANIMATION_DURATION = 200.0f; 30 31 class TabContentComponent : public ComponentGroup { 32 DECLARE_ACE_TYPE(TabContentComponent, ComponentGroup); 33 34 public: 35 TabContentComponent(const std::list<RefPtr<Component>>& contents, const RefPtr<TabController>& controller); 36 ~TabContentComponent() override = default; 37 38 RefPtr<Element> CreateElement() override; 39 RefPtr<RenderNode> CreateRenderNode() override; 40 SetController(const RefPtr<TabController> & controller)41 void SetController(const RefPtr<TabController>& controller) 42 { 43 controller_ = controller; 44 } 45 GetController()46 RefPtr<TabController> GetController() const 47 { 48 return controller_; 49 } 50 SetScrollable(bool scrollable)51 void SetScrollable(bool scrollable) 52 { 53 scrollable_ = scrollable; 54 } 55 IsScrollable()56 bool IsScrollable() const 57 { 58 return scrollable_; 59 } 60 SetVertical(bool isVertical)61 void SetVertical(bool isVertical) 62 { 63 vertical_ = isVertical; 64 } 65 IsVertical()66 bool IsVertical() const 67 { 68 return vertical_; 69 } 70 SetScrollDuration(float scrollDuration)71 void SetScrollDuration(float scrollDuration) 72 { 73 scrollDuration_ = scrollDuration; 74 } 75 GetScrollDuration()76 float GetScrollDuration() const 77 { 78 return scrollDuration_; 79 } 80 SetChangeEventId(const EventMarker & changeEventId)81 void SetChangeEventId(const EventMarker& changeEventId) 82 { 83 changeEventId_ = changeEventId; 84 } 85 GetChangeEventId()86 const EventMarker& GetChangeEventId() const 87 { 88 return changeEventId_; 89 } 90 SetDomChangeEventId(const EventMarker & domChangeEventId)91 void SetDomChangeEventId(const EventMarker& domChangeEventId) 92 { 93 domChangeEventId_ = domChangeEventId; 94 } 95 GetDomChangeEventId()96 const EventMarker& GetDomChangeEventId() const 97 { 98 return domChangeEventId_; 99 } 100 SetUseProxy(bool useProxy)101 void SetUseProxy(bool useProxy) 102 { 103 useProxy_ = useProxy; 104 } 105 106 private: 107 RefPtr<TabController> controller_; 108 109 bool scrollable_ = true; // the default value is true 110 bool vertical_ = false; // the tab is vertical or not, default value is false 111 bool useProxy_ = false; 112 float scrollDuration_ = DEFAULT_TABCONTENT_ANIMATION_DURATION; 113 114 EventMarker changeEventId_; 115 EventMarker domChangeEventId_; 116 }; 117 118 } // namespace OHOS::Ace 119 120 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_TAB_BAR_TAB_CONTENT_COMPONENT_H 121