1 /* 2 * Copyright (c) 2025 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_MANAGER_TOOLBAR_TOOLBAR_MANAGER_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_MANAGER_TOOLBAR_TOOLBAR_MANAGER_H 18 19 #include "base/memory/ace_type.h" 20 #include "core/components_ng/base/frame_node.h" 21 22 namespace OHOS::Ace::NG { 23 24 enum class NavigationMode; 25 struct ToolbarInfo { 26 bool isShow; 27 float width; 28 }; 29 30 class ToolbarManager : public virtual AceType { 31 DECLARE_ACE_TYPE(ToolbarManager, AceType); 32 33 public: 34 ToolbarManager() = default; 35 ~ToolbarManager() override = default; 36 SetHasSideBar(bool hasSideBar)37 void SetHasSideBar(bool hasSideBar) 38 { 39 hasSideBar_ = hasSideBar; 40 } 41 HasSideBar()42 bool HasSideBar() const 43 { 44 return hasSideBar_; 45 } 46 SetHasNavBar(bool hasNavBar)47 void SetHasNavBar(bool hasNavBar) 48 { 49 hasNavBar_ = hasNavBar; 50 } 51 HasNavBar()52 bool HasNavBar() const 53 { 54 return hasNavBar_; 55 } 56 SetHasNavDest(bool hasNavDest)57 void SetHasNavDest(bool hasNavDest) 58 { 59 hasNavDest_ = hasNavDest; 60 } 61 HasNavDest()62 bool HasNavDest() const 63 { 64 return hasNavDest_; 65 } 66 GetSideBarInfo()67 ToolbarInfo GetSideBarInfo() const 68 { 69 return sideBarInfo_; 70 } 71 void SetSideBarInfo(const ToolbarInfo& info); 72 GetSideBarDividerInfo()73 ToolbarInfo GetSideBarDividerInfo() const 74 { 75 return sideBarDividerInfo_; 76 } 77 78 void SetSideBarDividerInfo(const ToolbarInfo& info); 79 GetNavBarInfo()80 ToolbarInfo GetNavBarInfo() const 81 { 82 return navBarInfo_; 83 } 84 85 void SetNavBarInfo(const ToolbarInfo& info); 86 GetNavBarDividerInfo()87 ToolbarInfo GetNavBarDividerInfo() const 88 { 89 return navBarDividerInfo_; 90 } 91 92 void SetNavBarDividerInfo(const ToolbarInfo& info); 93 GetNavDestInfo()94 ToolbarInfo GetNavDestInfo() const 95 { 96 return navDestInfo_; 97 } 98 99 void SetNavDestInfo(const ToolbarInfo& info); 100 SetSideBarColor(const Color & color)101 void SetSideBarColor(const Color& color) 102 { 103 sideBarBgColor_ = color; 104 } 105 SetSideBarContainerColor(const Color & bgColor)106 void SetSideBarContainerColor(const Color& bgColor) 107 { 108 sideBarContainerBgColor_ = bgColor; 109 } 110 GetSideBarContainerBgColor()111 Color GetSideBarContainerBgColor() const 112 { 113 return sideBarContainerBgColor_; 114 } 115 SetSideBarBlurStyle(const BlurStyle & blurStyle)116 void SetSideBarBlurStyle(const BlurStyle& blurStyle) 117 { 118 sideBarBlurStyle_ = blurStyle; 119 } 120 GetSideBarBlurStyle()121 BlurStyle GetSideBarBlurStyle() const 122 { 123 return sideBarBlurStyle_; 124 } 125 GetSideBarColor()126 Color GetSideBarColor() const 127 { 128 return sideBarBgColor_; 129 } 130 131 void SetSideBarColorChangeCallback( 132 const std::function<void(const Color&, const Color&, const BlurStyle&)>&& callback); 133 void OnChangeSideBarColor(); 134 void SetToolBarChangeCallback(const std::function<void()>&& callback); 135 void OnChange(); 136 void SetModifyDoneCallback(const std::function<void()>&& callback); 137 void OnToolBarManagerModifyDone(); 138 void SetNavigationModeChangeCallback(const std::function<void()>&& callback); 139 void OnNavigationModeChange(); 140 GetSiderBar()141 WeakPtr<FrameNode> GetSiderBar() 142 { 143 return siderBar_; 144 } 145 SetSiderBarNode(WeakPtr<FrameNode> node)146 void SetSiderBarNode(WeakPtr<FrameNode> node) 147 { 148 siderBar_ = node; 149 } 150 SetNavigationNode(WeakPtr<FrameNode> node)151 void SetNavigationNode(WeakPtr<FrameNode> node) 152 { 153 navigation_ = node; 154 } 155 GetNavigationNode()156 WeakPtr<FrameNode> GetNavigationNode() 157 { 158 return navigation_; 159 } 160 GetSideBarContainerModel()161 WeakPtr<FrameNode> GetSideBarContainerModel() 162 { 163 return sideBarContainerModel_; 164 } 165 SetSideBarContainerModel(WeakPtr<FrameNode> node)166 void SetSideBarContainerModel(WeakPtr<FrameNode> node) 167 { 168 sideBarContainerModel_ = node; 169 } 170 GetSiderBarDivider()171 WeakPtr<FrameNode> GetSiderBarDivider() 172 { 173 return siderBarDivider_; 174 } 175 SetSiderBarDividerNode(WeakPtr<FrameNode> node)176 void SetSiderBarDividerNode(WeakPtr<FrameNode> node) 177 { 178 siderBarDivider_ = node; 179 } 180 GetNavBar()181 WeakPtr<FrameNode> GetNavBar() 182 { 183 return navBar_; 184 } 185 SetNavBarNode(WeakPtr<FrameNode> node)186 void SetNavBarNode(WeakPtr<FrameNode> node) 187 { 188 navBar_ = node; 189 } 190 GetNavBarDivider()191 WeakPtr<FrameNode> GetNavBarDivider() 192 { 193 return navBarDivider_; 194 } 195 SetNavBarDividerNode(WeakPtr<FrameNode> node)196 void SetNavBarDividerNode(WeakPtr<FrameNode> node) 197 { 198 navBarDivider_ = node; 199 } 200 GetNavDest()201 WeakPtr<FrameNode> GetNavDest() 202 { 203 return navDest_; 204 } 205 SetNavDestNode(WeakPtr<FrameNode> node)206 void SetNavDestNode(WeakPtr<FrameNode> node) 207 { 208 navDest_ = node; 209 } 210 SetTitleHeight(Dimension height)211 void SetTitleHeight(Dimension height) 212 { 213 titleHeight_ = height; 214 } 215 GetTitleHeight()216 Dimension GetTitleHeight() 217 { 218 return titleHeight_; 219 } 220 GetIsMoveUp()221 bool GetIsMoveUp() 222 { 223 return isMoveUp_; 224 } 225 SetIsMoveUp(bool isMoveUp)226 void SetIsMoveUp(bool isMoveUp) 227 { 228 isMoveUp_ = isMoveUp; 229 } 230 GetNavigationMode()231 NavigationMode GetNavigationMode() 232 { 233 return navigationMode_; 234 } 235 SetNavigationMode(NavigationMode mode)236 void SetNavigationMode(NavigationMode mode) 237 { 238 navigationMode_ = mode; 239 OnNavigationModeChange(); 240 } 241 242 private: 243 bool hasSideBar_ = false; 244 bool hasNavBar_ = false; 245 bool hasNavDest_ = false; 246 bool isMoveUp_ = false; 247 ToolbarInfo sideBarInfo_; 248 Color sideBarBgColor_; 249 Color sideBarContainerBgColor_; 250 BlurStyle sideBarBlurStyle_ = BlurStyle::NO_MATERIAL; 251 Dimension titleHeight_ = Dimension(0.0f); 252 ToolbarInfo sideBarDividerInfo_; 253 ToolbarInfo navBarInfo_; 254 ToolbarInfo navBarDividerInfo_; 255 ToolbarInfo navDestInfo_; 256 NavigationMode navigationMode_; 257 std::function<void(const Color&, const Color&, const BlurStyle&)> sideBarColorChangeCallbackFunc_; 258 std::list<std::function<void()>> onChangeCallbackFuncs_; 259 std::list<std::function<void()>> modifyDoneCallbackFuncs_; 260 std::list<std::function<void()>> navigationModeChangeCallbackFuncs_; 261 262 WeakPtr<FrameNode> navigation_; 263 WeakPtr<FrameNode> siderBar_; 264 WeakPtr<FrameNode> siderBarDivider_; 265 WeakPtr<FrameNode> sideBarContainerModel_; 266 WeakPtr<FrameNode> navBar_; 267 WeakPtr<FrameNode> navBarDivider_; 268 WeakPtr<FrameNode> navDest_; 269 }; 270 } // namespace OHOS::Ace::NG 271 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_MANAGER_TOOLBAR_TOOLBAR_MANAGER_H