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