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