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