• 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/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         }
179     };
180 
181     ~NavigationBarTheme() override = default;
182 
GetTitleColor()183     const Color& GetTitleColor() const
184     {
185         return titleColor_;
186     }
187 
GetSubTitleColor()188     const Color& GetSubTitleColor() const
189     {
190         return subTitleColor_;
191     }
GetTitleFontSizeBig()192     const Dimension& GetTitleFontSizeBig() const
193     {
194         return titleFontSizeBig_;
195     }
196 
GetTitleFontSize()197     const Dimension& GetTitleFontSize() const
198     {
199         return titleFontSize_;
200     }
201 
GetTitleFontSizeMin()202     const Dimension& GetTitleFontSizeMin() const
203     {
204         return titleFontSizeMin_;
205     }
206 
GetSubTitleFontSize()207     const Dimension& GetSubTitleFontSize() const
208     {
209         return subTitleFontSize_;
210     }
GetHeight()211     const Dimension& GetHeight() const
212     {
213         return height_;
214     }
GetHeightEmphasize()215     const Dimension& GetHeightEmphasize() const
216     {
217         return heightEmphasize_;
218     }
GetBackBtnResourceId()219     InternalResource::ResourceId GetBackBtnResourceId() const
220     {
221         return backBtnResourceId_;
222     }
GetBackSymbolId()223     uint32_t GetBackSymbolId() const
224     {
225         return backSymbolId_;
226     }
GetMoreSymbolId()227     uint32_t GetMoreSymbolId() const
228     {
229         return moreSymbolId_;
230     }
GetBackResourceId()231     InternalResource::ResourceId GetBackResourceId() const
232     {
233         return backResourceId_;
234     }
GetMoreResourceId()235     InternalResource::ResourceId GetMoreResourceId() const
236     {
237         return moreResourceId_;
238     }
GetMenuZoneSize()239     const Dimension& GetMenuZoneSize() const
240     {
241         return menuZoneSize_;
242     }
GetMenuIconSize()243     const Dimension& GetMenuIconSize() const
244     {
245         return menuIconSize_;
246     }
GetLogoIconSize()247     const Dimension& GetLogoIconSize() const
248     {
249         return logoIconSize_;
250     }
GetMenuIconColor()251     const Color& GetMenuIconColor() const
252     {
253         return menuIconColor_;
254     }
GetButtonNormalColor()255     const Color& GetButtonNormalColor() const
256     {
257         return buttonNormalColor_;
258     }
GetButtonPressedColor()259     const Color& GetButtonPressedColor() const
260     {
261         return buttonPressedColor_;
262     }
GetButtonFocusColor()263     const Color& GetButtonFocusColor() const
264     {
265         return buttonFocusColor_;
266     }
GetButtonHoverColor()267     const Color& GetButtonHoverColor() const
268     {
269         return buttonHoverColor_;
270     }
GetButtonCornerRadius()271     const Dimension& GetButtonCornerRadius() const
272     {
273         return buttonCornerRadius_;
274     }
GetMaxPaddingStart()275     const Dimension& GetMaxPaddingStart() const
276     {
277         return maxPaddingStart_;
278     }
GetDefaultPaddingStart()279     const Dimension& GetDefaultPaddingStart() const
280     {
281         return defaultPaddingStart_;
282     }
GetDefaultPaddingEnd()283     const Dimension& GetDefaultPaddingEnd() const
284     {
285         return defaultPaddingEnd_;
286     }
GetMaxPaddingEnd()287     const Dimension& GetMaxPaddingEnd() const
288     {
289         return maxPaddingEnd_;
290     }
GetMenuItemPadding()291     const Dimension& GetMenuItemPadding() const
292     {
293         return menuItemPadding_;
294     }
GetTitleMinPadding()295     const Dimension& GetTitleMinPadding() const
296     {
297         return titleMinPadding_;
298     }
GetMostMenuItemCountInBar()299     uint32_t GetMostMenuItemCountInBar() const
300     {
301         return mostMenuItemCountInBar_;
302     }
303 
GetBackButtonIconColor()304     const Color& GetBackButtonIconColor() const
305     {
306         return backButtonIconColor_;
307     }
308 
GetAlphaDisabled()309     double GetAlphaDisabled() const
310     {
311         return alphaDisabled_;
312     }
313 
GetToolBarBgColor()314     const Color& GetToolBarBgColor() const
315     {
316         return toolbarBgColorWithOpacity_;
317     }
GetToolBarDividerWidth()318     const Dimension& GetToolBarDividerWidth() const
319     {
320         return toolbarDividerWidth_;
321     }
GetToolBarDividerColor()322     const Color& GetToolBarDividerColor() const
323     {
324         return toolbarDividerColor_;
325     }
GetToolBarItemFocusColor()326     const Color& GetToolBarItemFocusColor() const
327     {
328         return toolbarItemFocusBorderColor_;
329     }
GetToolBarItemFocusBorderWidth()330     const Dimension& GetToolBarItemFocusBorderWidth() const
331     {
332         return toolbarItemFocusBorderWidth_;
333     }
GetToolBarItemBorderRadius()334     const NG::BorderRadiusProperty& GetToolBarItemBorderRadius() const
335     {
336         return toolbarItemBorderRadius_;
337     }
GetToolBarItemFontSize()338     const Dimension& GetToolBarItemFontSize() const
339     {
340         return toolbarItemFontSize_;
341     }
GetToolBarItemMinFontSize()342     const Dimension& GetToolBarItemMinFontSize() const
343     {
344         return toolbarItemMinFontSize_;
345     }
GetToolBarItemFontColor()346     const Color& GetToolBarItemFontColor() const
347     {
348         return toolbarItemFontColor_;
349     }
GetToolbarItemDisabledAlpha()350     double GetToolbarItemDisabledAlpha() const
351     {
352         return toolbarItemDisabledAlpha_;
353     }
GetToolbarIconColor()354     const Color& GetToolbarIconColor() const
355     {
356         return toolbarIconColor_;
357     }
GetToolbarIconSize()358     const Dimension& GetToolbarIconSize() const
359     {
360         return toolbarIconSize_;
361     }
GetToolbarActiveIconColor()362     const Color& GetToolbarActiveIconColor() const
363     {
364         return toolbarActiveIconColor_;
365     }
GetToolBarItemActiveFontColor()366     const Color& GetToolBarItemActiveFontColor() const
367     {
368         return toolbarActiveTextColor_;
369     }
GetToolbarItemTextMaxLines()370     uint32_t GetToolbarItemTextMaxLines() const
371     {
372         return toolbarItemTextMaxLines_;
373     }
GetToolbarItemSafeInterval()374     const Dimension& GetToolbarItemSafeInterval() const
375     {
376         return toolbarItemSafeInterval_;
377     }
GetToolbarItemHorizontalPadding()378     const Dimension& GetToolbarItemHorizontalPadding() const
379     {
380         return toolbarItemHorizontalPadding_;
381     }
GetToolbarItemVerticalPadding()382     const Dimension& GetToolbarItemVerticalPadding() const
383     {
384         return toolbarItemVerticalPadding_;
385     }
GetToolbarItemTopPadding()386     const Dimension& GetToolbarItemTopPadding() const
387     {
388         return toolbarItemTopPadding_;
389     }
GetToolbarItemLeftOrRightPadding()390     const Dimension& GetToolbarItemLeftOrRightPadding() const
391     {
392         return toolbarItemLeftOrRightPadding_;
393     }
GetToolbarItemHeigth()394     const Dimension& GetToolbarItemHeigth() const
395     {
396         return toolbarItemHeight_;
397     }
GetToolbarItemBottomPadding()398     const Dimension& GetToolbarItemBottomPadding() const
399     {
400         return toolbarItemBottomPadding_;
401     }
GetToolbarItemMargin()402     const Dimension& GetToolbarItemMargin() const
403     {
404         return toolbarItemMargin_;
405     }
GetToolbarItemSpecialMargin()406     const Dimension& GetToolbarItemSpecialMargin() const
407     {
408         return toolbarItemSpecialMargin_;
409     }
GetToolbarRotationLimitGridCount()410     uint32_t GetToolbarRotationLimitGridCount() const
411     {
412         return toolbarLimitGridCount_;
413     }
GetDividerShadowEnable()414     uint32_t GetDividerShadowEnable() const
415     {
416         return dividerShadowEnable_;
417     }
GetNavigationDividerColor()418     const Color& GetNavigationDividerColor() const
419     {
420         return navigationDividerColor_;
421     }
GetMarginLeft()422     const Dimension& GetMarginLeft() const
423     {
424         return marginLeft_;
425     }
GetMarginRight()426     const Dimension& GetMarginRight() const
427     {
428         return marginRight_;
429     }
GetNavigationGroupColor()430     const Color& GetNavigationGroupColor() const
431     {
432         return navigationGroupColor_;
433     }
GetNavBarUnfocusEffectEnable()434     uint32_t GetNavBarUnfocusEffectEnable() const
435     {
436         return navBarUnfocusEffectEnable_;
437     }
GetNavBarUnfocusColor()438     const Color& GetNavBarUnfocusColor() const
439     {
440         return navBarUnfocusColor_;
441     }
GetBackgroundBlurColor()442     const Color& GetBackgroundBlurColor() const
443     {
444         return backgroundBlurColor_;
445     }
GetMainTitleFontSizeL()446     const Dimension& GetMainTitleFontSizeL() const
447     {
448         return mainTitleFontSizeL_;
449     }
GetMainTitleFontSizeM()450     const Dimension& GetMainTitleFontSizeM() const
451     {
452         return mainTitleFontSizeM_;
453     }
GetMainTitleFontSizeS()454     const Dimension& GetMainTitleFontSizeS() const
455     {
456         return mainTitleFontSizeS_;
457     }
GetSubTitleFontSizeS()458     const Dimension& GetSubTitleFontSizeS() const
459     {
460         return subTitleFontSizeS_;
461     }
GetMainTitleFontColor()462     const Color& GetMainTitleFontColor() const
463     {
464         return mainTitleFontColor_;
465     }
GetSubTitleFontColor()466     const Color& GetSubTitleFontColor() const
467     {
468         return subTitleFontColor_;
469     }
GetMainTitleFontWeight()470     const FontWeight& GetMainTitleFontWeight() const
471     {
472         return mainTitleFontWeight_;
473     }
GetSubTitleFontWeight()474     const FontWeight& GetSubTitleFontWeight() const
475     {
476         return subTitleFontWeight_;
477     }
GetCornerRadius()478     const Dimension& GetCornerRadius() const
479     {
480         return cornerRadius_;
481     }
GetCompBackgroundColor()482     const Color& GetCompBackgroundColor() const
483     {
484         return compBackgroundColor_;
485     }
GetIconColor()486     const Color& GetIconColor() const
487     {
488         return iconColor_;
489     }
GetCompPadding()490     const Dimension& GetCompPadding() const
491     {
492         return compPadding_;
493     }
GetIconWidth()494     const Dimension& GetIconWidth() const
495     {
496         return iconWidth_;
497     }
GetIconHeight()498     const Dimension& GetIconHeight() const
499     {
500         return iconHeight_;
501     }
GetIconBackgroundWidth()502     const Dimension& GetIconBackgroundWidth() const
503     {
504         return iconBackgroundWidth_;
505     }
GetIconBackgroundHeight()506     const Dimension& GetIconBackgroundHeight() const
507     {
508         return iconBackgroundHeight_;
509     }
GetBackButtonWidth()510     const Dimension& GetBackButtonWidth() const
511     {
512         return backButtonWidth_;
513     }
GetBackButtonHeight()514     const Dimension& GetBackButtonHeight() const
515     {
516         return backButtonHeight_;
517     }
GetPaddingTopTwolines()518     const Dimension& GetPaddingTopTwolines() const
519     {
520         return paddingTopTwolines_;
521     }
GetTitleSpaceVertical()522     const Dimension& GetTitleSpaceVertical() const
523     {
524         return titleSpaceVertical_;
525     }
GetIconDisableAlpha()526     const double& GetIconDisableAlpha() const
527     {
528         return iconDisableAlpha_;
529     }
GetBackgroundFocusOutlineColor()530     const Color& GetBackgroundFocusOutlineColor() const
531     {
532         return backgroundFocusOutlineColor_;
533     }
GetBackgroundFocusOutlineWeight()534     const Dimension& GetBackgroundFocusOutlineWeight() const
535     {
536         return backgroundFocusOutlineWeight_;
537     }
GetBackgroundDisableAlpha()538     const double& GetBackgroundDisableAlpha() const
539     {
540         return backgroundDisableAlpha_;
541     }
GetBackgroundHoverColor()542     const Color& GetBackgroundHoverColor() const
543     {
544         return backgroundHoverColor_;
545     }
GetBackgroundPressedColor()546     const Color& GetBackgroundPressedColor() const
547     {
548         return backgroundPressedColor_;
549     }
GetTitlebarBackgroundBlurStyle()550     const int& GetTitlebarBackgroundBlurStyle() const
551     {
552         return titlebarBackgroundBlurStyle_;
553     }
GetToolbarBackgroundBlurStyle()554     const int& GetToolbarBackgroundBlurStyle() const
555     {
556         return toolbarBackgroundBlurStyle_;
557     }
558 protected:
559     NavigationBarTheme() = default;
560 
561 private:
562     Color titleColor_;
563     Color subTitleColor_;
564     Dimension titleFontSizeBig_;
565     Dimension titleFontSize_;
566     Dimension titleFontSizeMin_;
567     Dimension subTitleFontSize_;
568     Dimension height_;
569     Dimension heightEmphasize_;
570     InternalResource::ResourceId backBtnResourceId_ = InternalResource::ResourceId::NO_ID;
571     InternalResource::ResourceId backResourceId_ = InternalResource::ResourceId::NO_ID;
572     InternalResource::ResourceId moreResourceId_ = InternalResource::ResourceId::NO_ID;
573     uint32_t backSymbolId_;
574     uint32_t moreSymbolId_;
575     Dimension menuZoneSize_;
576     Dimension menuIconSize_;
577     Dimension logoIconSize_;
578     Color menuIconColor_;
579     Color buttonNormalColor_;
580     Color buttonPressedColor_;
581     Color buttonFocusColor_;
582     Color buttonHoverColor_;
583     Dimension buttonCornerRadius_;
584     Dimension maxPaddingStart_;
585     Dimension maxPaddingEnd_;
586     Dimension defaultPaddingStart_;
587     Dimension defaultPaddingEnd_;
588     Dimension menuItemPadding_;
589     Dimension titleMinPadding_;
590     uint32_t mostMenuItemCountInBar_ = 0;
591     Color backButtonIconColor_;
592     double alphaDisabled_ = 0.0;
593     Color toolbarBgColor_;
594     Color toolbarBgColorWithOpacity_;
595     Dimension toolbarDividerWidth_;
596     Color toolbarDividerColor_;
597     Color toolbarItemFocusBorderColor_;
598     Dimension toolbarItemFocusBorderWidth_ = 2.0_vp;
599     Dimension toolbarItemBorderRadiusValue_;
600     NG::BorderRadiusProperty toolbarItemBorderRadius_;
601     Dimension toolbarItemFontSize_;
602     Dimension toolbarItemMinFontSize_ = 9.0_vp;
603     Color toolbarItemFontColor_;
604     double toolbarItemDisabledAlpha_ = 0.4;
605     double toolbarBgAlpha_ = 0.95;
606     Color toolbarIconColor_;
607     Dimension toolbarIconSize_ = 24.0_vp;
608     Color toolbarActiveIconColor_;
609     Color toolbarActiveTextColor_;
610     uint32_t toolbarItemTextMaxLines_ = 2;
611     Dimension toolbarItemSafeInterval_ = 8.0_vp;
612     Dimension toolbarItemHorizontalPadding_ = 8.0_vp;
613     Dimension toolbarItemVerticalPadding_ = 12.0_vp;
614     Dimension toolbarItemTopPadding_ = 8.0_vp;
615     Dimension toolbarItemLeftOrRightPadding_ = 4.0_vp;
616     Dimension toolbarItemHeight_ = 56.0_vp;
617     Dimension toolbarItemBottomPadding_ = 4.0_vp;
618     Dimension toolbarItemMargin_ = 4.0_vp;
619     Dimension toolbarItemSpecialMargin_ = 0.0_vp;
620     uint32_t toolbarLimitGridCount_ = 8;
621     uint32_t dividerShadowEnable_ = 0;
622     Color navigationDividerColor_;
623     Color navigationGroupColor_ = Color::TRANSPARENT;
624     uint32_t navBarUnfocusEffectEnable_ = 0;
625     Color navBarUnfocusColor_ = Color::TRANSPARENT;
626     Color backgroundBlurColor_;
627     Dimension marginLeft_;
628     Dimension marginRight_;
629     Dimension mainTitleFontSizeL_;
630     Dimension mainTitleFontSizeM_;
631     Dimension mainTitleFontSizeS_;
632     Dimension subTitleFontSizeS_;
633     Color mainTitleFontColor_;
634     Color subTitleFontColor_;
635     FontWeight mainTitleFontWeight_ { FontWeight::W700 };
636     FontWeight subTitleFontWeight_ { FontWeight::W400 };
637     Dimension cornerRadius_;
638     Color compBackgroundColor_;
639     Dimension compPadding_;
640     Color iconColor_;
641     Dimension iconWidth_;
642     Dimension iconHeight_;
643     Dimension backButtonWidth_;
644     Dimension backButtonHeight_;
645     Dimension iconBackgroundWidth_;
646     Dimension iconBackgroundHeight_;
647     Dimension paddingTopTwolines_;
648     Dimension titleSpaceVertical_;
649     double iconDisableAlpha_ = 0.4;
650     Color backgroundFocusOutlineColor_;
651     Dimension backgroundFocusOutlineWeight_;
652     double backgroundDisableAlpha_ = 0.4;
653     Color backgroundHoverColor_;
654     Color backgroundPressedColor_;
655     int titlebarBackgroundBlurStyle_;
656     int toolbarBackgroundBlurStyle_;
657 };
658 
659 } // namespace OHOS::Ace
660 
661 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NAVIGATION_BAR_NAVIGATION_BAR_THEME_H
662