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