• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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