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