• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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_NAVIGATION_BAR_NAVIGATION_BAR_THEME_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NAVIGATION_BAR_NAVIGATION_BAR_THEME_H
18 
19 #include <cstdint>
20 #include "base/utils/string_utils.h"
21 #include "core/common/container.h"
22 #include "core/components/theme/theme.h"
23 #include "core/components/theme/theme_constants.h"
24 #include "core/components/theme/theme_constants_defines.h"
25 #include "core/components_ng/property/border_property.h"
26 
27 namespace OHOS::Ace {
28 
29 class NavigationBarTheme : public virtual Theme {
30     DECLARE_ACE_TYPE(NavigationBarTheme, Theme);
31 
32 public:
33     class Builder {
34     public:
35         Builder() = default;
36         ~Builder() = default;
37 
Build(const RefPtr<ThemeConstants> & themeConstants)38         RefPtr<NavigationBarTheme> Build(const RefPtr<ThemeConstants>& themeConstants) const
39         {
40             RefPtr<NavigationBarTheme> theme = AceType::MakeRefPtr<NavigationBarTheme>();
41             InitTheme(theme, themeConstants);
42             return theme;
43         }
44 
45     protected:
InitTheme(const RefPtr<NavigationBarTheme> & theme,const RefPtr<ThemeConstants> & themeConstants)46         void InitTheme(const RefPtr<NavigationBarTheme>& theme, const RefPtr<ThemeConstants>& themeConstants) const
47         {
48             CHECK_NULL_VOID(themeConstants);
49             SetSymbolTheme(themeConstants, theme);
50             theme->backBtnResourceId_ = InternalResource::ResourceId::TITLEBAR_BACK;
51             theme->backResourceId_ = themeConstants->GetResourceId(THEME_NAVIGATION_BAR_RESOURCE_ID_BACK);
52             theme->moreResourceId_ = themeConstants->GetResourceId(THEME_NAVIGATION_BAR_RESOURCE_ID_MORE);
53             RefPtr<ThemeStyle> pattern = themeConstants->GetPatternByName(THEME_PATTERN_NAVIGATION_BAR);
54             if (pattern) {
55                 theme->height_ = pattern->GetAttr<Dimension>("navigation_bar_height", 0.0_vp);
56                 theme->heightEmphasize_ = pattern->GetAttr<Dimension>("navigation_bar_height_emphasize", 0.0_vp);
57                 theme->menuZoneSize_ = pattern->GetAttr<Dimension>("navigation_bar_menu_zone_size", 0.0_vp);
58                 theme->menuIconSize_ = pattern->GetAttr<Dimension>("navigation_bar_menu_icon_size", 0.0_vp);
59                 theme->logoIconSize_ = pattern->GetAttr<Dimension>("navigation_bar_logo_icon_size", 0.0_vp);
60                 theme->buttonNormalColor_ = pattern->GetAttr<Color>("navigation_bar_button_normal_color", Color());
61                 theme->defaultPaddingEnd_ = pattern->GetAttr<Dimension>("navigation_bar_default_padding_end", 0.0_vp);
62                 theme->menuItemPadding_ = pattern->GetAttr<Dimension>("navigation_bar_menu_item_padding", 0.0_vp);
63                 theme->titleMinPadding_ = pattern->GetAttr<Dimension>("navigation_bar_title_min_padding", 0.0_vp);
64                 auto menuCount =
65                     static_cast<int32_t>(pattern->GetAttr<double>("navigation_bar_most_menu_item_count_in_bar", 0.0));
66                 theme->mostMenuItemCountInBar_ =
67                     menuCount < 0 ? theme->mostMenuItemCountInBar_ : static_cast<uint32_t>(menuCount);
68                 theme->titleColor_ = pattern->GetAttr<Color>("title_color", Color::WHITE);
69                 theme->titleFontSize_ = pattern->GetAttr<Dimension>("title_text_font_size", 0.0_vp);
70                 theme->titleFontSizeMin_ = pattern->GetAttr<Dimension>("title_text_font_size_min", 0.0_vp);
71                 theme->titleFontSizeBig_ = pattern->GetAttr<Dimension>("title_text_font_size_big", 0.0_vp);
72                 theme->subTitleColor_ = pattern->GetAttr<Color>("sub_title_text_color", Color::WHITE);
73                 theme->subTitleFontSize_ = pattern->GetAttr<Dimension>("sub_title_text_font_size", 0.0_vp);
74                 theme->menuIconColor_ = pattern->GetAttr<Color>("menu_icon_color", Color::WHITE);
75                 theme->buttonPressedColor_ = pattern->GetAttr<Color>("button_bg_color_pressed", Color::WHITE);
76                 theme->buttonFocusColor_ = pattern->GetAttr<Color>("button_bg_color_focused", Color::WHITE);
77                 theme->buttonHoverColor_ = pattern->GetAttr<Color>("button_bg_color_hovered", Color::WHITE);
78                 theme->buttonCornerRadius_ = pattern->GetAttr<Dimension>("button_corner_radius", 0.0_vp);
79                 theme->maxPaddingStart_ = pattern->GetAttr<Dimension>("title_left_spacing", 0.0_vp);
80                 theme->maxPaddingEnd_ = pattern->GetAttr<Dimension>("title_right_spacing", 0.0_vp);
81                 theme->defaultPaddingStart_ = pattern->GetAttr<Dimension>("back_button_left_spacing", 0.0_vp);
82                 theme->backButtonIconColor_ = pattern->GetAttr<Color>("back_button_icon_color", Color::WHITE);
83                 theme->alphaDisabled_ = pattern->GetAttr<double>("button_alpha_disabled", 0.0);
84                 auto dividerShadowEnable = pattern->GetAttr<std::string>("divider_shadow_enable", "0");
85                 theme->dividerShadowEnable_ = static_cast<uint32_t>(StringUtils::StringToInt(dividerShadowEnable));
86                 theme->navigationGroupColor_ = pattern->GetAttr<Color>("navigation_group_color", Color::TRANSPARENT);
87                 auto navBarUnfocusEffectEnable = pattern->GetAttr<std::string>("section_unfocus_effect_enable", "0");
88                 theme->navBarUnfocusEffectEnable_ =
89                     static_cast<uint32_t>(StringUtils::StringToInt(navBarUnfocusEffectEnable));
90                 theme->navBarUnfocusColor_ = pattern->GetAttr<Color>("color_panel_bg", Color::TRANSPARENT);
91                 theme->titlebarBackgroundBlurStyle_ = pattern->GetAttr<int>("titlebar_background_blur_style", 0);
92                 theme->toolbarBackgroundBlurStyle_ = pattern->GetAttr<int>("toolbar_background_blur_style", 0);
93                 theme->moreMessage_ = pattern->GetAttr<std::string>("navigation_general_more", "null");
94             }
95             ParsePattern(themeConstants, theme);
96         }
97 
98     private:
SetSymbolTheme(const RefPtr<ThemeConstants> & themeConstants,const RefPtr<NavigationBarTheme> & theme)99         void SetSymbolTheme(const RefPtr<ThemeConstants>& themeConstants, const RefPtr<NavigationBarTheme>& theme) const
100         {
101             theme->backSymbolId_ = themeConstants->GetSymbolByName("sys.symbol.chevron_backward");
102             theme->moreSymbolId_ = themeConstants->GetSymbolByName("sys.symbol.dot_grid_2x2");
103         }
ParsePattern(const RefPtr<ThemeConstants> & themeConstants,const RefPtr<NavigationBarTheme> & theme)104         void ParsePattern(const RefPtr<ThemeConstants>& themeConstants, const RefPtr<NavigationBarTheme>& theme) const
105         {
106             RefPtr<ThemeStyle> pattern = themeConstants->GetPatternByName(THEME_PATTERN_NAVIGATION_BAR);
107             if (!pattern) {
108                 return;
109             }
110             theme->toolbarBgColor_ = pattern->GetAttr<Color>("toolbar_bg_color", Color(0xfff1f3f5));
111             theme->toolbarBgColorWithOpacity_ = theme->toolbarBgColor_.BlendOpacity(theme->toolbarBgAlpha_);
112             theme->toolbarDividerWidth_ = Dimension(1.0, DimensionUnit::PX);
113             theme->toolbarDividerColor_ = pattern->GetAttr<Color>("toolbar_divider_color", Color(0x33182431));
114             theme->toolbarItemFocusBorderColor_ =
115                 pattern->GetAttr<Color>("toolbar_item_focus_color", Color(0xff007dff));
116             theme->toolbarItemBorderRadiusValue_ =
117                 pattern->GetAttr<Dimension>("toolbar_item_bg_button_border_radius", 8.0_vp);
118             theme->toolbarItemBorderRadius_.SetRadius(theme->toolbarItemBorderRadiusValue_);
119             theme->toolbarItemFontSize_ = pattern->GetAttr<Dimension>("toolbar_item_font_size", 10.0_vp);
120             theme->toolbarItemFontColor_ = pattern->GetAttr<Color>("toolbar_item_font_color", Color(0x182431));
121             theme->toolbarIconColor_ = pattern->GetAttr<Color>("toolbar_item_icon_color", Color(0x182431));
122             theme->toolbarActiveIconColor_ =
123                 pattern->GetAttr<Color>("toolbar_item_active_icon_color", Color(0xff007dff));
124             theme->toolbarActiveTextColor_ =
125                 pattern->GetAttr<Color>("toolbar_item_active_text_color", Color(0xff007dff));
126             auto dividerShadowEnable = pattern->GetAttr<std::string>("divider_shadow_enable", "0");
127             theme->dividerShadowEnable_ = static_cast<uint32_t>(StringUtils::StringToInt(dividerShadowEnable));
128             theme->navigationDividerColor_ = pattern->GetAttr<Color>("navigation_divider_color", Color(0x33000000));
129             theme->navigationGroupColor_ = pattern->GetAttr<Color>("navigation_group_color", Color::TRANSPARENT);
130             auto navBarUnfocusEffectEnable = pattern->GetAttr<std::string>("section_unfocus_effect_enable", "0");
131             theme->navBarUnfocusEffectEnable_ = static_cast<uint32_t>(
132                 StringUtils::StringToInt(navBarUnfocusEffectEnable));
133             theme->navBarUnfocusColor_ = pattern->GetAttr<Color>("color_panel_bg", Color::TRANSPARENT);
134             theme->backgroundBlurColor_ = pattern->GetAttr<Color>("background_blur_color", Color(0x19E6E6E6));
135             theme->mainTitleFontColor_ = pattern->GetAttr<Color>("title_primary_color", Color(0xe5000000));
136             theme->subTitleFontColor_ = pattern->GetAttr<Color>("title_subheader_color", Color(0x99000000));
137             if (Container::GreatOrEqualAPITargetVersion(PlatformVersion::VERSION_EIGHTEEN)) {
138                 SetNavigationTokenTheme(pattern, theme);
139             }
140             if (Container::GreatOrEqualAPITargetVersion(PlatformVersion::VERSION_NINETEEN)) {
141                 SetToolBarTheme(pattern, theme);
142             }
143             ParsePatternContinue(themeConstants, theme);
144         }
145 
SetToolBarTheme(RefPtr<ThemeStyle> pattern,const RefPtr<NavigationBarTheme> & theme)146         void SetToolBarTheme(RefPtr<ThemeStyle> pattern, const RefPtr<NavigationBarTheme>& theme) const
147         {
148             theme->toolbarItemFocusBorderWidth_ =
149                 pattern->GetAttr<Dimension>("toolbar_item_focus_border_size_api_sixteen", 2.0_vp);
150             theme->toolbarItemFocusBorderColor_ =
151                 pattern->GetAttr<Color>("toolbar_item_focus_color_api_sixteen", Color(0x007dff));
152             theme->toolbarItemBorderRadiusValue_ =
153                 pattern->GetAttr<Dimension>("toolbar_item_bg_button_border_radius_api_sixteen", 12.0_vp);
154             theme->toolbarItemBorderRadius_.SetRadius(theme->toolbarItemBorderRadiusValue_);
155             theme->toolbarActiveIconColor_ =
156                 pattern->GetAttr<Color>("toolbar_item_active_icon_color_api_sixteen", Color(0xff007dff));
157             theme->toolbarActiveTextColor_ =
158                 pattern->GetAttr<Color>("toolbar_item_active_text_color_api_sixteen", Color(0xff007dff));
159             theme->toolbarItemHeight_ = 44.0_vp;
160             theme->toolbarHeight_ = 48.0_vp;
161             theme->toolbarItemHorizontalPadding_ = 4.0_vp;
162             theme->toolbarItemVerticalPadding_ = 4.0_vp;
163             theme->toolbarItemTopPadding_ = 2.0_vp;
164             theme->toolbarItemLeftOrRightPadding_ = 2.0_vp;
165             theme->toolbarItemBottomPadding_ = 2.0_vp;
166             theme->toolbarItemTextMaxLines_ = 1;
167         }
168 
SetNavigationTokenTheme(RefPtr<ThemeStyle> pattern,const RefPtr<NavigationBarTheme> & theme)169         void SetNavigationTokenTheme(RefPtr<ThemeStyle> pattern, const RefPtr<NavigationBarTheme>& theme) const
170         {
171             theme->titleColor_ = pattern->GetAttr<Color>("title_color_api_sixteen", Color::WHITE);
172             theme->subTitleColor_ = pattern->GetAttr<Color>("sub_title_text_color_api_sixteen", Color::WHITE);
173             theme->menuIconColor_ = pattern->GetAttr<Color>("menu_icon_color_api_sixteen", Color::WHITE);
174             theme->buttonPressedColor_ = pattern->GetAttr<Color>("button_bg_color_pressed_api_sixteen", Color::WHITE);
175             theme->buttonFocusColor_ = pattern->GetAttr<Color>("button_bg_color_focused_api_sixteen", Color::WHITE);
176             theme->buttonHoverColor_ = pattern->GetAttr<Color>("button_bg_color_hovered_api_sixteen", Color::WHITE);
177             theme->backButtonIconColor_ = pattern->GetAttr<Color>("back_button_icon_color_api_sixteen", Color::WHITE);
178             theme->toolbarBgColor_ = pattern->GetAttr<Color>("toolbar_bg_color_api_sixteen", Color(0xfff1f3f5));
179             theme->toolbarDividerColor_ =
180                 pattern->GetAttr<Color>("toolbar_divider_color_api_sixteen", Color(0x33182431));
181             theme->navigationDividerColor_ =
182                 pattern->GetAttr<Color>("navigation_divider_color_api_sixteen", Color(0x33000000));
183         }
184 
ParsePatternContinue(const RefPtr<ThemeConstants> & themeConstants,const RefPtr<NavigationBarTheme> & theme)185         void ParsePatternContinue(const RefPtr<ThemeConstants>& themeConstants,
186             const RefPtr<NavigationBarTheme>& theme) const
187         {
188             RefPtr<ThemeStyle> pattern = themeConstants->GetPatternByName(THEME_PATTERN_NAVIGATION_BAR);
189             if (!pattern) {
190                 return;
191             }
192             theme->compBackgroundColor_ =
193                 pattern->GetAttr<Color>("icon_background_color", Color(0x0c000000));
194             theme->iconColor_ = pattern->GetAttr<Color>("icon_color", Color(0xe5000000));
195             theme->marginLeft_ = pattern->GetAttr<Dimension>("title_margin_left", 16.0_vp);
196             theme->marginLeftForBackButton_ = pattern->GetAttr<Dimension>("backbutton_margin_left", 16.0_vp);
197             theme->marginRight_ = pattern->GetAttr<Dimension>("title_margin_right", 16.0_vp);
198             theme->marginRightForMenu_ = pattern->GetAttr<Dimension>("menu_margin_right", 16.0_vp);
199             theme->mainTitleFontSizeL_ = pattern->GetAttr<Dimension>("title_primary_size", 30.0_fp);
200             theme->mainTitleFontSizeM_ = pattern->GetAttr<Dimension>("title_secondary_size", 26.0_fp);
201             theme->mainTitleFontSizeS_ = pattern->GetAttr<Dimension>("title_tertiary_size", 20.0_fp);
202             theme->subTitleFontSizeS_ = pattern->GetAttr<Dimension>("title_subheader_size", 14.0_fp);
203             theme->cornerRadius_ = pattern->GetAttr<Dimension>("icon_background_shape", 20.0_vp);
204             theme->compPadding_ = pattern->GetAttr<Dimension>("icon_background_space_horizontal", 8.0_vp);
205             constexpr double mainTitleDefaultFontWeit = 6.0; // 6.0 is main title default fontweight:FontWeight::W700
206             theme->mainTitleFontWeight_ = FontWeight(static_cast<int32_t>(
207                 pattern->GetAttr<double>("title_primary_weight", mainTitleDefaultFontWeit)));
208             constexpr double subTitleDefaultFontWeit = 3.0; // 3.0 is sub title default fontweight:FontWeight::W400
209             theme->subTitleFontWeight_ = FontWeight(static_cast<int32_t>(
210                 pattern->GetAttr<double>("title_subheader_weight", subTitleDefaultFontWeit)));
211             theme->iconWidth_ = pattern->GetAttr<Dimension>("icon_width", 24.0_vp);
212             theme->iconHeight_ = pattern->GetAttr<Dimension>("icon_height", 24.0_vp);
213             theme->backButtonWidth_ = pattern->GetAttr<Dimension>("icon_background_width", 40.0_vp);
214             theme->backButtonHeight_ = pattern->GetAttr<Dimension>("icon_background_height", 40.0_vp);
215             theme->iconBackgroundWidth_ = pattern->GetAttr<Dimension>("icon_background_width", 40.0_vp);
216             theme->iconBackgroundHeight_ = pattern->GetAttr<Dimension>("icon_background_height", 40.0_vp);
217             theme->paddingTopTwolines_ = pattern->GetAttr<Dimension>("padding_top_twolines", 8.0_vp);
218             theme->titleSpaceVertical_ = pattern->GetAttr<Dimension>("title_sapce_vertical", 2.0_vp);
219             theme->iconDisableAlpha_ = pattern->GetAttr<double>("icon_disable_alpha", 0.0);
220             theme->backgroundFocusOutlineColor_ = pattern->GetAttr<Color>(
221                 "icon_background_focus_outline_color", Color(0x0A59F7));
222             theme->backgroundFocusOutlineWeight_ = pattern->GetAttr<Dimension>(
223                 "icon_background_focus_outline_weight", 2.0_vp);
224             theme->backgroundDisableAlpha_ = pattern->GetAttr<double>("icon_background_disable_alpha", 0.0);
225             theme->backgroundHoverColor_ = pattern->GetAttr<Color>("icon_background_hover_color",
226                 Color(0x0c000000));
227             theme->backgroundPressedColor_ = pattern->GetAttr<Color>("icon_background_pressed_color",
228                 Color(0x19000000));
229             theme->titlebarBackgroundBlurStyle_ = pattern->GetAttr<int>("titlebar_background_blur_style", 0);
230             theme->toolbarBackgroundBlurStyle_ = pattern->GetAttr<int>("toolbar_background_blur_style", 0);
231             theme->dragBarDefaultColor_ = pattern->GetAttr<Color>("drag_bar_default_color", Color(0xff182431));
232             theme->dragBarItemDefaultColor_ = pattern->GetAttr<Color>("drag_bar_item_default_color", Color(0xffffffff));
233             theme->dragBarActiveColor_ = pattern->GetAttr<Color>("drag_bar_active_color", Color(0x330A59F7));
234             theme->dragBarItemActiveColor_ = pattern->GetAttr<Color>("drag_bar_item_active_color", Color(0xFF007DFF));
235             theme->dividerGradientLightBlue_ = pattern->GetAttr<Color>("divider_light_blue", Color(0x7FCEDEFE));
236             theme->dividerGradientDarkBlue_ = pattern->GetAttr<Color>("divider_dark_blue", Color(0xFF0A59F7));
237             theme->navigationBack_ = pattern->GetAttr<std::string>("navigation_back", "");
238         }
239     };
240 
241     ~NavigationBarTheme() override = default;
242 
GetTitleColor()243     const Color& GetTitleColor() const
244     {
245         return titleColor_;
246     }
247 
SetTitleColor(const Color & color)248     void SetTitleColor(const Color& color)
249     {
250         titleColor_ = color;
251     }
252 
GetSubTitleColor()253     const Color& GetSubTitleColor() const
254     {
255         return subTitleColor_;
256     }
257 
SetSubTitleColor(const Color & color)258     void SetSubTitleColor(const Color& color)
259     {
260         subTitleColor_ = color;
261     }
262 
GetTitleFontSizeBig()263     const Dimension& GetTitleFontSizeBig() const
264     {
265         return titleFontSizeBig_;
266     }
267 
GetTitleFontSize()268     const Dimension& GetTitleFontSize() const
269     {
270         return titleFontSize_;
271     }
272 
GetTitleFontSizeMin()273     const Dimension& GetTitleFontSizeMin() const
274     {
275         return titleFontSizeMin_;
276     }
277 
GetSubTitleFontSize()278     const Dimension& GetSubTitleFontSize() const
279     {
280         return subTitleFontSize_;
281     }
GetHeight()282     const Dimension& GetHeight() const
283     {
284         return height_;
285     }
GetHeightEmphasize()286     const Dimension& GetHeightEmphasize() const
287     {
288         return heightEmphasize_;
289     }
GetBackBtnResourceId()290     InternalResource::ResourceId GetBackBtnResourceId() const
291     {
292         return backBtnResourceId_;
293     }
GetBackSymbolId()294     uint32_t GetBackSymbolId() const
295     {
296         return backSymbolId_;
297     }
GetMoreSymbolId()298     uint32_t GetMoreSymbolId() const
299     {
300         return moreSymbolId_;
301     }
GetBackResourceId()302     InternalResource::ResourceId GetBackResourceId() const
303     {
304         return backResourceId_;
305     }
GetMoreResourceId()306     InternalResource::ResourceId GetMoreResourceId() const
307     {
308         return moreResourceId_;
309     }
GetMenuZoneSize()310     const Dimension& GetMenuZoneSize() const
311     {
312         return menuZoneSize_;
313     }
GetMenuIconSize()314     const Dimension& GetMenuIconSize() const
315     {
316         return menuIconSize_;
317     }
GetLogoIconSize()318     const Dimension& GetLogoIconSize() const
319     {
320         return logoIconSize_;
321     }
GetMenuIconColor()322     const Color& GetMenuIconColor() const
323     {
324         return menuIconColor_;
325     }
SetMenuIconColor(const Color & color)326     void SetMenuIconColor(const Color& color)
327     {
328         menuIconColor_ = color;
329     }
GetButtonNormalColor()330     const Color& GetButtonNormalColor() const
331     {
332         return buttonNormalColor_;
333     }
GetButtonPressedColor()334     const Color& GetButtonPressedColor() const
335     {
336         return buttonPressedColor_;
337     }
GetButtonFocusColor()338     const Color& GetButtonFocusColor() const
339     {
340         return buttonFocusColor_;
341     }
GetButtonHoverColor()342     const Color& GetButtonHoverColor() const
343     {
344         return buttonHoverColor_;
345     }
GetButtonCornerRadius()346     const Dimension& GetButtonCornerRadius() const
347     {
348         return buttonCornerRadius_;
349     }
GetMaxPaddingStart()350     const Dimension& GetMaxPaddingStart() const
351     {
352         return maxPaddingStart_;
353     }
GetDefaultPaddingStart()354     const Dimension& GetDefaultPaddingStart() const
355     {
356         return defaultPaddingStart_;
357     }
GetDefaultPaddingEnd()358     const Dimension& GetDefaultPaddingEnd() const
359     {
360         return defaultPaddingEnd_;
361     }
GetMaxPaddingEnd()362     const Dimension& GetMaxPaddingEnd() const
363     {
364         return maxPaddingEnd_;
365     }
GetMenuItemPadding()366     const Dimension& GetMenuItemPadding() const
367     {
368         return menuItemPadding_;
369     }
GetTitleMinPadding()370     const Dimension& GetTitleMinPadding() const
371     {
372         return titleMinPadding_;
373     }
GetMostMenuItemCountInBar()374     uint32_t GetMostMenuItemCountInBar() const
375     {
376         return mostMenuItemCountInBar_;
377     }
378 
GetBackButtonIconColor()379     const Color& GetBackButtonIconColor() const
380     {
381         return backButtonIconColor_;
382     }
383 
SetBackButtonIconColor(const Color & color)384     void SetBackButtonIconColor(const Color& color)
385     {
386         backButtonIconColor_ = color;
387     }
388 
GetAlphaDisabled()389     double GetAlphaDisabled() const
390     {
391         return alphaDisabled_;
392     }
393 
GetToolBarBgColor()394     const Color& GetToolBarBgColor() const
395     {
396         return toolbarBgColorWithOpacity_;
397     }
GetToolBarDividerWidth()398     const Dimension& GetToolBarDividerWidth() const
399     {
400         return toolbarDividerWidth_;
401     }
GetToolBarDividerColor()402     const Color& GetToolBarDividerColor() const
403     {
404         return toolbarDividerColor_;
405     }
SetToolBarDividerColor(const Color & color)406     void SetToolBarDividerColor(const Color& color)
407     {
408         toolbarDividerColor_ = color;
409     }
GetToolBarItemFocusColor()410     const Color& GetToolBarItemFocusColor() const
411     {
412         return toolbarItemFocusBorderColor_;
413     }
SetToolBarItemFocusColor(const Color & color)414     void SetToolBarItemFocusColor(const Color& color)
415     {
416         toolbarItemFocusBorderColor_ = color;
417     }
GetToolBarItemFocusBorderWidth()418     const Dimension& GetToolBarItemFocusBorderWidth() const
419     {
420         return toolbarItemFocusBorderWidth_;
421     }
GetToolBarItemBorderRadius()422     const NG::BorderRadiusProperty& GetToolBarItemBorderRadius() const
423     {
424         return toolbarItemBorderRadius_;
425     }
GetToolBarItemFontSize()426     const Dimension& GetToolBarItemFontSize() const
427     {
428         return toolbarItemFontSize_;
429     }
GetToolBarItemMinFontSize()430     const Dimension& GetToolBarItemMinFontSize() const
431     {
432         return toolbarItemMinFontSize_;
433     }
GetToolBarItemFontColor()434     const Color& GetToolBarItemFontColor() const
435     {
436         return toolbarItemFontColor_;
437     }
SetToolBarItemFontColor(const Color & color)438     void SetToolBarItemFontColor(const Color& color)
439     {
440         toolbarItemFontColor_ = color;
441     }
GetToolbarItemDisabledAlpha()442     double GetToolbarItemDisabledAlpha() const
443     {
444         return toolbarItemDisabledAlpha_;
445     }
GetToolbarIconColor()446     const Color& GetToolbarIconColor() const
447     {
448         return toolbarIconColor_;
449     }
SetToolbarIconColor(const Color & color)450     void SetToolbarIconColor(const Color& color)
451     {
452         toolbarIconColor_ = color;
453     }
GetToolbarIconSize()454     const Dimension& GetToolbarIconSize() const
455     {
456         return toolbarIconSize_;
457     }
GetToolbarActiveIconColor()458     const Color& GetToolbarActiveIconColor() const
459     {
460         return toolbarActiveIconColor_;
461     }
SetToolbarActiveIconColor(const Color & color)462     void SetToolbarActiveIconColor(const Color& color)
463     {
464         toolbarActiveIconColor_ = color;
465     }
GetToolBarItemActiveFontColor()466     const Color& GetToolBarItemActiveFontColor() const
467     {
468         return toolbarActiveTextColor_;
469     }
SetToolBarItemActiveFontColor(const Color & color)470     void SetToolBarItemActiveFontColor(const Color& color)
471     {
472         toolbarActiveTextColor_ = color;
473     }
GetToolbarItemTextMaxLines()474     uint32_t GetToolbarItemTextMaxLines() const
475     {
476         return toolbarItemTextMaxLines_;
477     }
GetToolbarItemSafeInterval()478     const Dimension& GetToolbarItemSafeInterval() const
479     {
480         return toolbarItemSafeInterval_;
481     }
GetToolbarItemHorizontalPadding()482     const Dimension& GetToolbarItemHorizontalPadding() const
483     {
484         return toolbarItemHorizontalPadding_;
485     }
GetToolbarItemVerticalPadding()486     const Dimension& GetToolbarItemVerticalPadding() const
487     {
488         return toolbarItemVerticalPadding_;
489     }
GetToolbarItemTopPadding()490     const Dimension& GetToolbarItemTopPadding() const
491     {
492         return toolbarItemTopPadding_;
493     }
GetToolbarItemLeftOrRightPadding()494     const Dimension& GetToolbarItemLeftOrRightPadding() const
495     {
496         return toolbarItemLeftOrRightPadding_;
497     }
GetToolbarItemTextLeftOrRightPadding()498     const Dimension& GetToolbarItemTextLeftOrRightPadding() const
499     {
500         return ToolbarItemTextLeftOrRightPadding_;
501     }
GetToolbarItemHeigth()502     const Dimension& GetToolbarItemHeigth() const
503     {
504         return toolbarItemHeight_;
505     }
GetToolbarHeigth()506     const Dimension& GetToolbarHeigth() const
507     {
508         return toolbarHeight_;
509     }
GetToolbarItemBottomPadding()510     const Dimension& GetToolbarItemBottomPadding() const
511     {
512         return toolbarItemBottomPadding_;
513     }
GetToolbarItemIconHideTextTopPadding()514     const Dimension& GetToolbarItemIconHideTextTopPadding() const
515     {
516         return toolbarItemIconTopHideTextPadding_;
517     }
GetToolbarItemIconTopPadding()518     const Dimension& GetToolbarItemIconTopPadding() const
519     {
520         return toolbarItemIconTopPadding_;
521     }
GetToolbarItemMargin()522     const Dimension& GetToolbarItemMargin() const
523     {
524         return toolbarItemMargin_;
525     }
GetToolbarItemSpecialMargin()526     const Dimension& GetToolbarItemSpecialMargin() const
527     {
528         return toolbarItemSpecialMargin_;
529     }
GetToolbarRotationLimitGridCount()530     uint32_t GetToolbarRotationLimitGridCount() const
531     {
532         return toolbarLimitGridCount_;
533     }
GetDividerShadowEnable()534     uint32_t GetDividerShadowEnable() const
535     {
536         return dividerShadowEnable_;
537     }
GetNavigationDividerColor()538     const Color& GetNavigationDividerColor() const
539     {
540         return navigationDividerColor_;
541     }
SetNavigationDividerColor(const Color & color)542     void SetNavigationDividerColor(const Color& color)
543     {
544         navigationDividerColor_ = color;
545     }
GetMarginLeft()546     const Dimension& GetMarginLeft() const
547     {
548         return marginLeft_;
549     }
GetMarginLeftForBackButton()550     const Dimension& GetMarginLeftForBackButton() const
551     {
552         return marginLeftForBackButton_;
553     }
GetMarginRight()554     const Dimension& GetMarginRight() const
555     {
556         return marginRight_;
557     }
GetMarginRightForMenu()558     const Dimension& GetMarginRightForMenu() const
559     {
560         return marginRightForMenu_;
561     }
GetNavigationGroupColor()562     const Color& GetNavigationGroupColor() const
563     {
564         return navigationGroupColor_;
565     }
GetNavBarUnfocusEffectEnable()566     uint32_t GetNavBarUnfocusEffectEnable() const
567     {
568         return navBarUnfocusEffectEnable_;
569     }
GetNavBarUnfocusColor()570     const Color& GetNavBarUnfocusColor() const
571     {
572         return navBarUnfocusColor_;
573     }
GetBackgroundBlurColor()574     const Color& GetBackgroundBlurColor() const
575     {
576         return backgroundBlurColor_;
577     }
GetMainTitleFontSizeL()578     const Dimension& GetMainTitleFontSizeL() const
579     {
580         return mainTitleFontSizeL_;
581     }
GetMainTitleFontSizeM()582     const Dimension& GetMainTitleFontSizeM() const
583     {
584         return mainTitleFontSizeM_;
585     }
GetMainTitleFontSizeS()586     const Dimension& GetMainTitleFontSizeS() const
587     {
588         return mainTitleFontSizeS_;
589     }
GetSubTitleFontSizeS()590     const Dimension& GetSubTitleFontSizeS() const
591     {
592         return subTitleFontSizeS_;
593     }
GetMainTitleFontColor()594     const Color& GetMainTitleFontColor() const
595     {
596         return mainTitleFontColor_;
597     }
SetMainTitleFontColor(const Color & color)598     void SetMainTitleFontColor(const Color& color)
599     {
600         mainTitleFontColor_ = color;
601     }
GetSubTitleFontColor()602     const Color& GetSubTitleFontColor() const
603     {
604         return subTitleFontColor_;
605     }
SetSubTitleFontColor(const Color & color)606     void SetSubTitleFontColor(const Color& color)
607     {
608         subTitleFontColor_ = color;
609     }
GetMainTitleFontWeight()610     const FontWeight& GetMainTitleFontWeight() const
611     {
612         return mainTitleFontWeight_;
613     }
GetSubTitleFontWeight()614     const FontWeight& GetSubTitleFontWeight() const
615     {
616         return subTitleFontWeight_;
617     }
GetCornerRadius()618     const Dimension& GetCornerRadius() const
619     {
620         return cornerRadius_;
621     }
GetCompBackgroundColor()622     const Color& GetCompBackgroundColor() const
623     {
624         return compBackgroundColor_;
625     }
GetIconColor()626     const Color& GetIconColor() const
627     {
628         return iconColor_;
629     }
SetIconColor(const Color & color)630     void SetIconColor(const Color& color)
631     {
632         iconColor_ = color;
633     }
GetCompPadding()634     const Dimension& GetCompPadding() const
635     {
636         return compPadding_;
637     }
GetIconWidth()638     const Dimension& GetIconWidth() const
639     {
640         return iconWidth_;
641     }
GetIconHeight()642     const Dimension& GetIconHeight() const
643     {
644         return iconHeight_;
645     }
GetIconBackgroundWidth()646     const Dimension& GetIconBackgroundWidth() const
647     {
648         return iconBackgroundWidth_;
649     }
GetIconBackgroundHeight()650     const Dimension& GetIconBackgroundHeight() const
651     {
652         return iconBackgroundHeight_;
653     }
GetBackButtonWidth()654     const Dimension& GetBackButtonWidth() const
655     {
656         return backButtonWidth_;
657     }
GetBackButtonHeight()658     const Dimension& GetBackButtonHeight() const
659     {
660         return backButtonHeight_;
661     }
GetPaddingTopTwolines()662     const Dimension& GetPaddingTopTwolines() const
663     {
664         return paddingTopTwolines_;
665     }
GetTitleSpaceVertical()666     const Dimension& GetTitleSpaceVertical() const
667     {
668         return titleSpaceVertical_;
669     }
GetIconDisableAlpha()670     const double& GetIconDisableAlpha() const
671     {
672         return iconDisableAlpha_;
673     }
GetBackgroundFocusOutlineColor()674     const Color& GetBackgroundFocusOutlineColor() const
675     {
676         return backgroundFocusOutlineColor_;
677     }
GetBackgroundFocusOutlineWeight()678     const Dimension& GetBackgroundFocusOutlineWeight() const
679     {
680         return backgroundFocusOutlineWeight_;
681     }
GetBackgroundDisableAlpha()682     const double& GetBackgroundDisableAlpha() const
683     {
684         return backgroundDisableAlpha_;
685     }
GetBackgroundHoverColor()686     const Color& GetBackgroundHoverColor() const
687     {
688         return backgroundHoverColor_;
689     }
GetBackgroundPressedColor()690     const Color& GetBackgroundPressedColor() const
691     {
692         return backgroundPressedColor_;
693     }
GetTitlebarBackgroundBlurStyle()694     const int& GetTitlebarBackgroundBlurStyle() const
695     {
696         return titlebarBackgroundBlurStyle_;
697     }
GetToolbarBackgroundBlurStyle()698     const int& GetToolbarBackgroundBlurStyle() const
699     {
700         return toolbarBackgroundBlurStyle_;
701     }
GetDragBarDefaultColor()702     const Color& GetDragBarDefaultColor() const
703     {
704         return dragBarDefaultColor_;
705     }
GetDragBarItemDefaultColor()706     const Color& GetDragBarItemDefaultColor() const
707     {
708         return dragBarItemDefaultColor_;
709     }
GetDragBarActiveColor()710     const Color& GetDragBarActiveColor() const
711     {
712         return dragBarActiveColor_;
713     }
GetDragBarItemActiveColor()714     const Color& GetDragBarItemActiveColor() const
715     {
716         return dragBarItemActiveColor_;
717     }
GetDviderLightBlueColor()718     const Color& GetDviderLightBlueColor() const
719     {
720         return dividerGradientLightBlue_;
721     }
GetDviderDarkBlueColor()722     const Color& GetDviderDarkBlueColor() const
723     {
724         return dividerGradientDarkBlue_;
725     }
GetMoreMessage()726     const std::string& GetMoreMessage() const
727     {
728         return moreMessage_;
729     }
SetToolbarBgColor(const Color & color)730     void SetToolbarBgColor(const Color& color)
731     {
732         toolbarBgColor_ = color;
733         toolbarBgColorWithOpacity_ = toolbarBgColor_.BlendOpacity(toolbarBgAlpha_);
734     }
GetNavigationBack()735     const std::string& GetNavigationBack() const
736     {
737         return navigationBack_;
738     }
739 
740 protected:
741     NavigationBarTheme() = default;
742 
743 private:
744     Color titleColor_;
745     Color subTitleColor_;
746     Dimension titleFontSizeBig_;
747     Dimension titleFontSize_;
748     Dimension titleFontSizeMin_;
749     Dimension subTitleFontSize_;
750     Dimension height_;
751     Dimension heightEmphasize_;
752     InternalResource::ResourceId backBtnResourceId_ = InternalResource::ResourceId::NO_ID;
753     InternalResource::ResourceId backResourceId_ = InternalResource::ResourceId::NO_ID;
754     InternalResource::ResourceId moreResourceId_ = InternalResource::ResourceId::NO_ID;
755     uint32_t backSymbolId_;
756     uint32_t moreSymbolId_;
757     Dimension menuZoneSize_;
758     Dimension menuIconSize_;
759     Dimension logoIconSize_;
760     Color menuIconColor_;
761     Color buttonNormalColor_;
762     Color buttonPressedColor_;
763     Color buttonFocusColor_;
764     Color buttonHoverColor_;
765     Dimension buttonCornerRadius_;
766     Dimension maxPaddingStart_;
767     Dimension maxPaddingEnd_;
768     Dimension defaultPaddingStart_;
769     Dimension defaultPaddingEnd_;
770     Dimension menuItemPadding_;
771     Dimension titleMinPadding_;
772     uint32_t mostMenuItemCountInBar_ = 0;
773     Color backButtonIconColor_;
774     double alphaDisabled_ = 0.0;
775     Color toolbarBgColor_;
776     Color toolbarBgColorWithOpacity_;
777     Dimension toolbarDividerWidth_;
778     Color toolbarDividerColor_;
779     Color toolbarItemFocusBorderColor_;
780     Dimension toolbarItemFocusBorderWidth_ = 2.0_vp;
781     Dimension toolbarItemBorderRadiusValue_;
782     NG::BorderRadiusProperty toolbarItemBorderRadius_;
783     Dimension toolbarItemFontSize_;
784     Dimension toolbarItemMinFontSize_ = 9.0_vp;
785     Color toolbarItemFontColor_;
786     double toolbarItemDisabledAlpha_ = 0.4;
787     double toolbarBgAlpha_ = 0.95;
788     Color toolbarIconColor_;
789     Dimension toolbarIconSize_ = 24.0_vp;
790     Color toolbarActiveIconColor_;
791     Color toolbarActiveTextColor_;
792     uint32_t toolbarItemTextMaxLines_ = 2;
793     Dimension toolbarItemSafeInterval_ = 8.0_vp;
794     Dimension toolbarItemHorizontalPadding_ = 8.0_vp;
795     Dimension ToolbarItemTextLeftOrRightPadding_ = 4.0_vp;
796     Dimension toolbarItemVerticalPadding_ = 12.0_vp;
797     Dimension toolbarItemTopPadding_ = 8.0_vp;
798     Dimension toolbarItemLeftOrRightPadding_ = 4.0_vp;
799     Dimension toolbarItemHeight_ = 56.0_vp;
800     Dimension toolbarHeight_ = 56.0_vp;
801     Dimension toolbarItemBottomPadding_ = 4.0_vp;
802     Dimension toolbarItemIconTopPadding_ = 2.0_vp;
803     Dimension toolbarItemIconTopHideTextPadding_ = 8.0_vp;
804     Dimension toolbarItemMargin_ = 4.0_vp;
805     Dimension toolbarItemSpecialMargin_ = 0.0_vp;
806     std::string moreMessage_ = "";
807     std::string navigationBack_ = "";
808     uint32_t toolbarLimitGridCount_ = 8;
809     uint32_t dividerShadowEnable_ = 0;
810     Color navigationDividerColor_;
811     Color navigationGroupColor_ = Color::TRANSPARENT;
812     uint32_t navBarUnfocusEffectEnable_ = 0;
813     Color navBarUnfocusColor_ = Color::TRANSPARENT;
814     Color backgroundBlurColor_;
815     Dimension marginLeft_;
816     Dimension marginLeftForBackButton_;
817     Dimension marginRight_;
818     Dimension marginRightForMenu_;
819     Dimension mainTitleFontSizeL_;
820     Dimension mainTitleFontSizeM_;
821     Dimension mainTitleFontSizeS_;
822     Dimension subTitleFontSizeS_;
823     Color mainTitleFontColor_;
824     Color subTitleFontColor_;
825     FontWeight mainTitleFontWeight_ { FontWeight::W700 };
826     FontWeight subTitleFontWeight_ { FontWeight::W400 };
827     Dimension cornerRadius_;
828     Color compBackgroundColor_;
829     Dimension compPadding_;
830     Color iconColor_;
831     Dimension iconWidth_;
832     Dimension iconHeight_;
833     Dimension backButtonWidth_;
834     Dimension backButtonHeight_;
835     Dimension iconBackgroundWidth_;
836     Dimension iconBackgroundHeight_;
837     Dimension paddingTopTwolines_;
838     Dimension titleSpaceVertical_;
839     double iconDisableAlpha_ = 0.4;
840     Color backgroundFocusOutlineColor_;
841     Dimension backgroundFocusOutlineWeight_;
842     double backgroundDisableAlpha_ = 0.4;
843     Color backgroundHoverColor_;
844     Color backgroundPressedColor_;
845     int titlebarBackgroundBlurStyle_;
846     int toolbarBackgroundBlurStyle_;
847     Color dragBarDefaultColor_;
848     Color dragBarItemDefaultColor_;
849     Color dragBarActiveColor_;
850     Color dragBarItemActiveColor_;
851     Color dividerGradientLightBlue_;
852     Color dividerGradientDarkBlue_;
853 };
854 
855 } // namespace OHOS::Ace
856 
857 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NAVIGATION_BAR_NAVIGATION_BAR_THEME_H
858