1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NAVIGATION_BAR_NAVIGATION_BAR_THEME_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NAVIGATION_BAR_NAVIGATION_BAR_THEME_H 18 19 #include <cstdint> 20 #include "base/utils/string_utils.h" 21 #include "core/components/theme/theme.h" 22 #include "core/components/theme/theme_constants.h" 23 #include "core/components/theme/theme_constants_defines.h" 24 #include "core/components_ng/property/border_property.h" 25 26 namespace OHOS::Ace { 27 28 class NavigationBarTheme : public virtual Theme { 29 DECLARE_ACE_TYPE(NavigationBarTheme, Theme); 30 31 public: 32 class Builder { 33 public: 34 Builder() = default; 35 ~Builder() = default; 36 Build(const RefPtr<ThemeConstants> & themeConstants)37 RefPtr<NavigationBarTheme> Build(const RefPtr<ThemeConstants>& themeConstants) const 38 { 39 RefPtr<NavigationBarTheme> theme = AceType::Claim(new NavigationBarTheme()); 40 if (!themeConstants) { 41 return theme; 42 } 43 SetSymbolTheme(themeConstants, theme); 44 theme->backBtnResourceId_ = InternalResource::ResourceId::TITLEBAR_BACK; 45 theme->backResourceId_ = themeConstants->GetResourceId(THEME_NAVIGATION_BAR_RESOURCE_ID_BACK); 46 theme->moreResourceId_ = themeConstants->GetResourceId(THEME_NAVIGATION_BAR_RESOURCE_ID_MORE); 47 RefPtr<ThemeStyle> pattern = themeConstants->GetPatternByName(THEME_PATTERN_NAVIGATION_BAR); 48 if (pattern) { 49 theme->height_ = pattern->GetAttr<Dimension>("navigation_bar_height", 0.0_vp); 50 theme->heightEmphasize_ = pattern->GetAttr<Dimension>("navigation_bar_height_emphasize", 0.0_vp); 51 theme->menuZoneSize_ = pattern->GetAttr<Dimension>("navigation_bar_menu_zone_size", 0.0_vp); 52 theme->menuIconSize_ = pattern->GetAttr<Dimension>("navigation_bar_menu_icon_size", 0.0_vp); 53 theme->logoIconSize_ = pattern->GetAttr<Dimension>("navigation_bar_logo_icon_size", 0.0_vp); 54 theme->buttonNormalColor_ = pattern->GetAttr<Color>("navigation_bar_button_normal_color", Color()); 55 theme->defaultPaddingEnd_ = pattern->GetAttr<Dimension>("navigation_bar_default_padding_end", 0.0_vp); 56 theme->menuItemPadding_ = pattern->GetAttr<Dimension>("navigation_bar_menu_item_padding", 0.0_vp); 57 theme->titleMinPadding_ = pattern->GetAttr<Dimension>("navigation_bar_title_min_padding", 0.0_vp); 58 auto menuCount = 59 static_cast<int32_t>(pattern->GetAttr<double>("navigation_bar_most_menu_item_count_in_bar", 0.0)); 60 theme->mostMenuItemCountInBar_ = 61 menuCount < 0 ? theme->mostMenuItemCountInBar_ : static_cast<uint32_t>(menuCount); 62 theme->titleColor_ = pattern->GetAttr<Color>("title_color", Color::WHITE); 63 theme->titleFontSize_ = pattern->GetAttr<Dimension>("title_text_font_size", 0.0_vp); 64 theme->titleFontSizeMin_ = pattern->GetAttr<Dimension>("title_text_font_size_min", 0.0_vp); 65 theme->titleFontSizeBig_ = pattern->GetAttr<Dimension>("title_text_font_size_big", 0.0_vp); 66 theme->subTitleColor_ = pattern->GetAttr<Color>("sub_title_text_color", Color::WHITE); 67 theme->subTitleFontSize_ = pattern->GetAttr<Dimension>("sub_title_text_font_size", 0.0_vp); 68 theme->menuIconColor_ = pattern->GetAttr<Color>("menu_icon_color", Color::WHITE); 69 theme->buttonPressedColor_ = pattern->GetAttr<Color>("button_bg_color_pressed", Color::WHITE); 70 theme->buttonFocusColor_ = pattern->GetAttr<Color>("button_bg_color_focused", Color::WHITE); 71 theme->buttonHoverColor_ = pattern->GetAttr<Color>("button_bg_color_hovered", Color::WHITE); 72 theme->buttonCornerRadius_ = pattern->GetAttr<Dimension>("button_corner_radius", 0.0_vp); 73 theme->maxPaddingStart_ = pattern->GetAttr<Dimension>("title_left_spacing", 0.0_vp); 74 theme->maxPaddingEnd_ = pattern->GetAttr<Dimension>("title_right_spacing", 0.0_vp); 75 theme->defaultPaddingStart_ = pattern->GetAttr<Dimension>("back_button_left_spacing", 0.0_vp); 76 theme->backButtonIconColor_ = pattern->GetAttr<Color>("back_button_icon_color", Color::WHITE); 77 theme->alphaDisabled_ = pattern->GetAttr<double>("button_alpha_disabled", 0.0); 78 auto dividerShadowEnable = pattern->GetAttr<std::string>("divider_shadow_enable", "0"); 79 theme->dividerShadowEnable_ = static_cast<uint32_t>(StringUtils::StringToInt(dividerShadowEnable)); 80 theme->navigationGroupColor_ = pattern->GetAttr<Color>("navigation_group_color", Color::TRANSPARENT); 81 auto navBarUnfocusEffectEnable = pattern->GetAttr<std::string>("section_unfocus_effect_enable", "0"); 82 theme->navBarUnfocusEffectEnable_ = static_cast<uint32_t>( 83 StringUtils::StringToInt(navBarUnfocusEffectEnable)); 84 theme->navBarUnfocusColor_ = pattern->GetAttr<Color>("color_panel_bg", Color::TRANSPARENT); 85 theme->titlebarBackgroundBlurStyle_ = pattern->GetAttr<int>("titlebar_background_blur_style", 0); 86 theme->toolbarBackgroundBlurStyle_ = pattern->GetAttr<int>("toolbar_background_blur_style", 0); 87 } 88 ParsePattern(themeConstants, theme); 89 return theme; 90 } 91 92 private: SetSymbolTheme(const RefPtr<ThemeConstants> & themeConstants,RefPtr<NavigationBarTheme> & theme)93 void SetSymbolTheme(const RefPtr<ThemeConstants>& themeConstants, RefPtr<NavigationBarTheme>& theme) const 94 { 95 theme->backSymbolId_ = themeConstants->GetSymbolByName("sys.symbol.chevron_backward"); 96 theme->moreSymbolId_ = themeConstants->GetSymbolByName("sys.symbol.dot_grid_2x2"); 97 } ParsePattern(const RefPtr<ThemeConstants> & themeConstants,const RefPtr<NavigationBarTheme> & theme)98 void ParsePattern(const RefPtr<ThemeConstants>& themeConstants, const RefPtr<NavigationBarTheme>& theme) const 99 { 100 RefPtr<ThemeStyle> pattern = themeConstants->GetPatternByName(THEME_PATTERN_NAVIGATION_BAR); 101 if (!pattern) { 102 return; 103 } 104 theme->toolbarBgColor_ = pattern->GetAttr<Color>("toolbar_bg_color", Color(0xfff1f3f5)); 105 theme->toolbarBgColorWithOpacity_ = theme->toolbarBgColor_.BlendOpacity(theme->toolbarBgAlpha_); 106 theme->toolbarDividerWidth_ = Dimension(1.0, DimensionUnit::PX); 107 theme->toolbarDividerColor_ = pattern->GetAttr<Color>("toolbar_divider_color", Color(0x33182431)); 108 theme->toolbarItemFocusBorderColor_ = 109 pattern->GetAttr<Color>("toolbar_item_focus_color", Color(0xff007dff)); 110 theme->toolbarItemBorderRadiusValue_ = 111 pattern->GetAttr<Dimension>("toolbar_item_bg_button_border_radius", 8.0_vp); 112 theme->toolbarItemBorderRadius_.SetRadius(theme->toolbarItemBorderRadiusValue_); 113 theme->toolbarItemFontSize_ = pattern->GetAttr<Dimension>("toolbar_item_font_size", 10.0_vp); 114 theme->toolbarItemFontColor_ = pattern->GetAttr<Color>("toolbar_item_font_color", Color(0x182431)); 115 theme->toolbarIconColor_ = pattern->GetAttr<Color>("toolbar_item_icon_color", Color(0x182431)); 116 theme->toolbarActiveIconColor_ = 117 pattern->GetAttr<Color>("toolbar_item_active_icon_color", Color(0xff007dff)); 118 theme->toolbarActiveTextColor_ = 119 pattern->GetAttr<Color>("toolbar_item_active_text_color", Color(0xff007dff)); 120 auto dividerShadowEnable = pattern->GetAttr<std::string>("divider_shadow_enable", "0"); 121 theme->dividerShadowEnable_ = static_cast<uint32_t>(StringUtils::StringToInt(dividerShadowEnable)); 122 theme->navigationDividerColor_ = pattern->GetAttr<Color>("navigation_divider_color", Color(0x33000000)); 123 theme->navigationGroupColor_ = pattern->GetAttr<Color>("navigation_group_color", Color::TRANSPARENT); 124 auto navBarUnfocusEffectEnable = pattern->GetAttr<std::string>("section_unfocus_effect_enable", "0"); 125 theme->navBarUnfocusEffectEnable_ = static_cast<uint32_t>( 126 StringUtils::StringToInt(navBarUnfocusEffectEnable)); 127 theme->navBarUnfocusColor_ = pattern->GetAttr<Color>("color_panel_bg", Color::TRANSPARENT); 128 theme->backgroundBlurColor_ = pattern->GetAttr<Color>("background_blur_color", Color(0x19E6E6E6)); 129 theme->mainTitleFontColor_ = pattern->GetAttr<Color>("title_primary_color", Color(0xe5000000)); 130 theme->subTitleFontColor_ = pattern->GetAttr<Color>("title_subheader_color", Color(0x99000000)); 131 ParsePatternContinue(themeConstants, theme); 132 } 133 ParsePatternContinue(const RefPtr<ThemeConstants> & themeConstants,const RefPtr<NavigationBarTheme> & theme)134 void ParsePatternContinue(const RefPtr<ThemeConstants>& themeConstants, 135 const RefPtr<NavigationBarTheme>& theme) const 136 { 137 RefPtr<ThemeStyle> pattern = themeConstants->GetPatternByName(THEME_PATTERN_NAVIGATION_BAR); 138 if (!pattern) { 139 return; 140 } 141 theme->compBackgroundColor_ = 142 pattern->GetAttr<Color>("icon_background_color", Color(0x0c000000)); 143 theme->iconColor_ = pattern->GetAttr<Color>("icon_color", Color(0xe5000000)); 144 theme->marginLeft_ = pattern->GetAttr<Dimension>("title_margin_left", 16.0_vp); 145 theme->marginRight_ = pattern->GetAttr<Dimension>("title_margin_right", 16.0_vp); 146 theme->mainTitleFontSizeL_ = pattern->GetAttr<Dimension>("title_primary_size", 30.0_fp); 147 theme->mainTitleFontSizeM_ = pattern->GetAttr<Dimension>("title_secondary_size", 26.0_fp); 148 theme->mainTitleFontSizeS_ = pattern->GetAttr<Dimension>("title_tertiary_size", 20.0_fp); 149 theme->subTitleFontSizeS_ = pattern->GetAttr<Dimension>("title_subheader_size", 14.0_fp); 150 theme->cornerRadius_ = pattern->GetAttr<Dimension>("icon_background_shape", 20.0_vp); 151 theme->compPadding_ = pattern->GetAttr<Dimension>("icon_background_space_horizontal", 8.0_vp); 152 constexpr double mainTitleDefaultFontWeit = 6.0; // 6.0 is main title default fontweight:FontWeight::W700 153 theme->mainTitleFontWeight_ = FontWeight(static_cast<int32_t>( 154 pattern->GetAttr<double>("title_primary_weight", mainTitleDefaultFontWeit))); 155 constexpr double subTitleDefaultFontWeit = 3.0; // 3.0 is sub title default fontweight:FontWeight::W400 156 theme->subTitleFontWeight_ = FontWeight(static_cast<int32_t>( 157 pattern->GetAttr<double>("title_subheader_weight", subTitleDefaultFontWeit))); 158 theme->iconWidth_ = pattern->GetAttr<Dimension>("icon_width", 24.0_vp); 159 theme->iconHeight_ = pattern->GetAttr<Dimension>("icon_height", 24.0_vp); 160 theme->backButtonWidth_ = pattern->GetAttr<Dimension>("icon_background_width", 40.0_vp); 161 theme->backButtonHeight_ = pattern->GetAttr<Dimension>("icon_background_height", 40.0_vp); 162 theme->iconBackgroundWidth_ = pattern->GetAttr<Dimension>("icon_background_width", 40.0_vp); 163 theme->iconBackgroundHeight_ = pattern->GetAttr<Dimension>("icon_background_height", 40.0_vp); 164 theme->paddingTopTwolines_ = pattern->GetAttr<Dimension>("padding_top_twolines", 8.0_vp); 165 theme->titleSpaceVertical_ = pattern->GetAttr<Dimension>("title_sapce_vertical", 2.0_vp); 166 theme->iconDisableAlpha_ = pattern->GetAttr<double>("icon_disable_alpha", 0.0); 167 theme->backgroundFocusOutlineColor_ = pattern->GetAttr<Color>( 168 "icon_background_focus_outline_color", Color(0x0A59F7)); 169 theme->backgroundFocusOutlineWeight_ = pattern->GetAttr<Dimension>( 170 "icon_background_focus_outline_weight", 2.0_vp); 171 theme->backgroundDisableAlpha_ = pattern->GetAttr<double>("icon_background_disable_alpha", 0.0); 172 theme->backgroundHoverColor_ = pattern->GetAttr<Color>("icon_background_hover_color", 173 Color(0x0c000000)); 174 theme->backgroundPressedColor_ = pattern->GetAttr<Color>("icon_background_pressed_color", 175 Color(0x19000000)); 176 theme->titlebarBackgroundBlurStyle_ = pattern->GetAttr<int>("titlebar_background_blur_style", 0); 177 theme->toolbarBackgroundBlurStyle_ = pattern->GetAttr<int>("toolbar_background_blur_style", 0); 178 } 179 }; 180 181 ~NavigationBarTheme() override = default; 182 GetTitleColor()183 const Color& GetTitleColor() const 184 { 185 return titleColor_; 186 } 187 GetSubTitleColor()188 const Color& GetSubTitleColor() const 189 { 190 return subTitleColor_; 191 } GetTitleFontSizeBig()192 const Dimension& GetTitleFontSizeBig() const 193 { 194 return titleFontSizeBig_; 195 } 196 GetTitleFontSize()197 const Dimension& GetTitleFontSize() const 198 { 199 return titleFontSize_; 200 } 201 GetTitleFontSizeMin()202 const Dimension& GetTitleFontSizeMin() const 203 { 204 return titleFontSizeMin_; 205 } 206 GetSubTitleFontSize()207 const Dimension& GetSubTitleFontSize() const 208 { 209 return subTitleFontSize_; 210 } GetHeight()211 const Dimension& GetHeight() const 212 { 213 return height_; 214 } GetHeightEmphasize()215 const Dimension& GetHeightEmphasize() const 216 { 217 return heightEmphasize_; 218 } GetBackBtnResourceId()219 InternalResource::ResourceId GetBackBtnResourceId() const 220 { 221 return backBtnResourceId_; 222 } GetBackSymbolId()223 uint32_t GetBackSymbolId() const 224 { 225 return backSymbolId_; 226 } GetMoreSymbolId()227 uint32_t GetMoreSymbolId() const 228 { 229 return moreSymbolId_; 230 } GetBackResourceId()231 InternalResource::ResourceId GetBackResourceId() const 232 { 233 return backResourceId_; 234 } GetMoreResourceId()235 InternalResource::ResourceId GetMoreResourceId() const 236 { 237 return moreResourceId_; 238 } GetMenuZoneSize()239 const Dimension& GetMenuZoneSize() const 240 { 241 return menuZoneSize_; 242 } GetMenuIconSize()243 const Dimension& GetMenuIconSize() const 244 { 245 return menuIconSize_; 246 } GetLogoIconSize()247 const Dimension& GetLogoIconSize() const 248 { 249 return logoIconSize_; 250 } GetMenuIconColor()251 const Color& GetMenuIconColor() const 252 { 253 return menuIconColor_; 254 } GetButtonNormalColor()255 const Color& GetButtonNormalColor() const 256 { 257 return buttonNormalColor_; 258 } GetButtonPressedColor()259 const Color& GetButtonPressedColor() const 260 { 261 return buttonPressedColor_; 262 } GetButtonFocusColor()263 const Color& GetButtonFocusColor() const 264 { 265 return buttonFocusColor_; 266 } GetButtonHoverColor()267 const Color& GetButtonHoverColor() const 268 { 269 return buttonHoverColor_; 270 } GetButtonCornerRadius()271 const Dimension& GetButtonCornerRadius() const 272 { 273 return buttonCornerRadius_; 274 } GetMaxPaddingStart()275 const Dimension& GetMaxPaddingStart() const 276 { 277 return maxPaddingStart_; 278 } GetDefaultPaddingStart()279 const Dimension& GetDefaultPaddingStart() const 280 { 281 return defaultPaddingStart_; 282 } GetDefaultPaddingEnd()283 const Dimension& GetDefaultPaddingEnd() const 284 { 285 return defaultPaddingEnd_; 286 } GetMaxPaddingEnd()287 const Dimension& GetMaxPaddingEnd() const 288 { 289 return maxPaddingEnd_; 290 } GetMenuItemPadding()291 const Dimension& GetMenuItemPadding() const 292 { 293 return menuItemPadding_; 294 } GetTitleMinPadding()295 const Dimension& GetTitleMinPadding() const 296 { 297 return titleMinPadding_; 298 } GetMostMenuItemCountInBar()299 uint32_t GetMostMenuItemCountInBar() const 300 { 301 return mostMenuItemCountInBar_; 302 } 303 GetBackButtonIconColor()304 const Color& GetBackButtonIconColor() const 305 { 306 return backButtonIconColor_; 307 } 308 GetAlphaDisabled()309 double GetAlphaDisabled() const 310 { 311 return alphaDisabled_; 312 } 313 GetToolBarBgColor()314 const Color& GetToolBarBgColor() const 315 { 316 return toolbarBgColorWithOpacity_; 317 } GetToolBarDividerWidth()318 const Dimension& GetToolBarDividerWidth() const 319 { 320 return toolbarDividerWidth_; 321 } GetToolBarDividerColor()322 const Color& GetToolBarDividerColor() const 323 { 324 return toolbarDividerColor_; 325 } GetToolBarItemFocusColor()326 const Color& GetToolBarItemFocusColor() const 327 { 328 return toolbarItemFocusBorderColor_; 329 } GetToolBarItemFocusBorderWidth()330 const Dimension& GetToolBarItemFocusBorderWidth() const 331 { 332 return toolbarItemFocusBorderWidth_; 333 } GetToolBarItemBorderRadius()334 const NG::BorderRadiusProperty& GetToolBarItemBorderRadius() const 335 { 336 return toolbarItemBorderRadius_; 337 } GetToolBarItemFontSize()338 const Dimension& GetToolBarItemFontSize() const 339 { 340 return toolbarItemFontSize_; 341 } GetToolBarItemMinFontSize()342 const Dimension& GetToolBarItemMinFontSize() const 343 { 344 return toolbarItemMinFontSize_; 345 } GetToolBarItemFontColor()346 const Color& GetToolBarItemFontColor() const 347 { 348 return toolbarItemFontColor_; 349 } GetToolbarItemDisabledAlpha()350 double GetToolbarItemDisabledAlpha() const 351 { 352 return toolbarItemDisabledAlpha_; 353 } GetToolbarIconColor()354 const Color& GetToolbarIconColor() const 355 { 356 return toolbarIconColor_; 357 } GetToolbarIconSize()358 const Dimension& GetToolbarIconSize() const 359 { 360 return toolbarIconSize_; 361 } GetToolbarActiveIconColor()362 const Color& GetToolbarActiveIconColor() const 363 { 364 return toolbarActiveIconColor_; 365 } GetToolBarItemActiveFontColor()366 const Color& GetToolBarItemActiveFontColor() const 367 { 368 return toolbarActiveTextColor_; 369 } GetToolbarItemTextMaxLines()370 uint32_t GetToolbarItemTextMaxLines() const 371 { 372 return toolbarItemTextMaxLines_; 373 } GetToolbarItemSafeInterval()374 const Dimension& GetToolbarItemSafeInterval() const 375 { 376 return toolbarItemSafeInterval_; 377 } GetToolbarItemHorizontalPadding()378 const Dimension& GetToolbarItemHorizontalPadding() const 379 { 380 return toolbarItemHorizontalPadding_; 381 } GetToolbarItemVerticalPadding()382 const Dimension& GetToolbarItemVerticalPadding() const 383 { 384 return toolbarItemVerticalPadding_; 385 } GetToolbarItemTopPadding()386 const Dimension& GetToolbarItemTopPadding() const 387 { 388 return toolbarItemTopPadding_; 389 } GetToolbarItemLeftOrRightPadding()390 const Dimension& GetToolbarItemLeftOrRightPadding() const 391 { 392 return toolbarItemLeftOrRightPadding_; 393 } GetToolbarItemHeigth()394 const Dimension& GetToolbarItemHeigth() const 395 { 396 return toolbarItemHeight_; 397 } GetToolbarItemBottomPadding()398 const Dimension& GetToolbarItemBottomPadding() const 399 { 400 return toolbarItemBottomPadding_; 401 } GetToolbarItemMargin()402 const Dimension& GetToolbarItemMargin() const 403 { 404 return toolbarItemMargin_; 405 } GetToolbarItemSpecialMargin()406 const Dimension& GetToolbarItemSpecialMargin() const 407 { 408 return toolbarItemSpecialMargin_; 409 } GetToolbarRotationLimitGridCount()410 uint32_t GetToolbarRotationLimitGridCount() const 411 { 412 return toolbarLimitGridCount_; 413 } GetDividerShadowEnable()414 uint32_t GetDividerShadowEnable() const 415 { 416 return dividerShadowEnable_; 417 } GetNavigationDividerColor()418 const Color& GetNavigationDividerColor() const 419 { 420 return navigationDividerColor_; 421 } GetMarginLeft()422 const Dimension& GetMarginLeft() const 423 { 424 return marginLeft_; 425 } GetMarginRight()426 const Dimension& GetMarginRight() const 427 { 428 return marginRight_; 429 } GetNavigationGroupColor()430 const Color& GetNavigationGroupColor() const 431 { 432 return navigationGroupColor_; 433 } GetNavBarUnfocusEffectEnable()434 uint32_t GetNavBarUnfocusEffectEnable() const 435 { 436 return navBarUnfocusEffectEnable_; 437 } GetNavBarUnfocusColor()438 const Color& GetNavBarUnfocusColor() const 439 { 440 return navBarUnfocusColor_; 441 } GetBackgroundBlurColor()442 const Color& GetBackgroundBlurColor() const 443 { 444 return backgroundBlurColor_; 445 } GetMainTitleFontSizeL()446 const Dimension& GetMainTitleFontSizeL() const 447 { 448 return mainTitleFontSizeL_; 449 } GetMainTitleFontSizeM()450 const Dimension& GetMainTitleFontSizeM() const 451 { 452 return mainTitleFontSizeM_; 453 } GetMainTitleFontSizeS()454 const Dimension& GetMainTitleFontSizeS() const 455 { 456 return mainTitleFontSizeS_; 457 } GetSubTitleFontSizeS()458 const Dimension& GetSubTitleFontSizeS() const 459 { 460 return subTitleFontSizeS_; 461 } GetMainTitleFontColor()462 const Color& GetMainTitleFontColor() const 463 { 464 return mainTitleFontColor_; 465 } GetSubTitleFontColor()466 const Color& GetSubTitleFontColor() const 467 { 468 return subTitleFontColor_; 469 } GetMainTitleFontWeight()470 const FontWeight& GetMainTitleFontWeight() const 471 { 472 return mainTitleFontWeight_; 473 } GetSubTitleFontWeight()474 const FontWeight& GetSubTitleFontWeight() const 475 { 476 return subTitleFontWeight_; 477 } GetCornerRadius()478 const Dimension& GetCornerRadius() const 479 { 480 return cornerRadius_; 481 } GetCompBackgroundColor()482 const Color& GetCompBackgroundColor() const 483 { 484 return compBackgroundColor_; 485 } GetIconColor()486 const Color& GetIconColor() const 487 { 488 return iconColor_; 489 } GetCompPadding()490 const Dimension& GetCompPadding() const 491 { 492 return compPadding_; 493 } GetIconWidth()494 const Dimension& GetIconWidth() const 495 { 496 return iconWidth_; 497 } GetIconHeight()498 const Dimension& GetIconHeight() const 499 { 500 return iconHeight_; 501 } GetIconBackgroundWidth()502 const Dimension& GetIconBackgroundWidth() const 503 { 504 return iconBackgroundWidth_; 505 } GetIconBackgroundHeight()506 const Dimension& GetIconBackgroundHeight() const 507 { 508 return iconBackgroundHeight_; 509 } GetBackButtonWidth()510 const Dimension& GetBackButtonWidth() const 511 { 512 return backButtonWidth_; 513 } GetBackButtonHeight()514 const Dimension& GetBackButtonHeight() const 515 { 516 return backButtonHeight_; 517 } GetPaddingTopTwolines()518 const Dimension& GetPaddingTopTwolines() const 519 { 520 return paddingTopTwolines_; 521 } GetTitleSpaceVertical()522 const Dimension& GetTitleSpaceVertical() const 523 { 524 return titleSpaceVertical_; 525 } GetIconDisableAlpha()526 const double& GetIconDisableAlpha() const 527 { 528 return iconDisableAlpha_; 529 } GetBackgroundFocusOutlineColor()530 const Color& GetBackgroundFocusOutlineColor() const 531 { 532 return backgroundFocusOutlineColor_; 533 } GetBackgroundFocusOutlineWeight()534 const Dimension& GetBackgroundFocusOutlineWeight() const 535 { 536 return backgroundFocusOutlineWeight_; 537 } GetBackgroundDisableAlpha()538 const double& GetBackgroundDisableAlpha() const 539 { 540 return backgroundDisableAlpha_; 541 } GetBackgroundHoverColor()542 const Color& GetBackgroundHoverColor() const 543 { 544 return backgroundHoverColor_; 545 } GetBackgroundPressedColor()546 const Color& GetBackgroundPressedColor() const 547 { 548 return backgroundPressedColor_; 549 } GetTitlebarBackgroundBlurStyle()550 const int& GetTitlebarBackgroundBlurStyle() const 551 { 552 return titlebarBackgroundBlurStyle_; 553 } GetToolbarBackgroundBlurStyle()554 const int& GetToolbarBackgroundBlurStyle() const 555 { 556 return toolbarBackgroundBlurStyle_; 557 } 558 protected: 559 NavigationBarTheme() = default; 560 561 private: 562 Color titleColor_; 563 Color subTitleColor_; 564 Dimension titleFontSizeBig_; 565 Dimension titleFontSize_; 566 Dimension titleFontSizeMin_; 567 Dimension subTitleFontSize_; 568 Dimension height_; 569 Dimension heightEmphasize_; 570 InternalResource::ResourceId backBtnResourceId_ = InternalResource::ResourceId::NO_ID; 571 InternalResource::ResourceId backResourceId_ = InternalResource::ResourceId::NO_ID; 572 InternalResource::ResourceId moreResourceId_ = InternalResource::ResourceId::NO_ID; 573 uint32_t backSymbolId_; 574 uint32_t moreSymbolId_; 575 Dimension menuZoneSize_; 576 Dimension menuIconSize_; 577 Dimension logoIconSize_; 578 Color menuIconColor_; 579 Color buttonNormalColor_; 580 Color buttonPressedColor_; 581 Color buttonFocusColor_; 582 Color buttonHoverColor_; 583 Dimension buttonCornerRadius_; 584 Dimension maxPaddingStart_; 585 Dimension maxPaddingEnd_; 586 Dimension defaultPaddingStart_; 587 Dimension defaultPaddingEnd_; 588 Dimension menuItemPadding_; 589 Dimension titleMinPadding_; 590 uint32_t mostMenuItemCountInBar_ = 0; 591 Color backButtonIconColor_; 592 double alphaDisabled_ = 0.0; 593 Color toolbarBgColor_; 594 Color toolbarBgColorWithOpacity_; 595 Dimension toolbarDividerWidth_; 596 Color toolbarDividerColor_; 597 Color toolbarItemFocusBorderColor_; 598 Dimension toolbarItemFocusBorderWidth_ = 2.0_vp; 599 Dimension toolbarItemBorderRadiusValue_; 600 NG::BorderRadiusProperty toolbarItemBorderRadius_; 601 Dimension toolbarItemFontSize_; 602 Dimension toolbarItemMinFontSize_ = 9.0_vp; 603 Color toolbarItemFontColor_; 604 double toolbarItemDisabledAlpha_ = 0.4; 605 double toolbarBgAlpha_ = 0.95; 606 Color toolbarIconColor_; 607 Dimension toolbarIconSize_ = 24.0_vp; 608 Color toolbarActiveIconColor_; 609 Color toolbarActiveTextColor_; 610 uint32_t toolbarItemTextMaxLines_ = 2; 611 Dimension toolbarItemSafeInterval_ = 8.0_vp; 612 Dimension toolbarItemHorizontalPadding_ = 8.0_vp; 613 Dimension toolbarItemVerticalPadding_ = 12.0_vp; 614 Dimension toolbarItemTopPadding_ = 8.0_vp; 615 Dimension toolbarItemLeftOrRightPadding_ = 4.0_vp; 616 Dimension toolbarItemHeight_ = 56.0_vp; 617 Dimension toolbarItemBottomPadding_ = 4.0_vp; 618 Dimension toolbarItemMargin_ = 4.0_vp; 619 Dimension toolbarItemSpecialMargin_ = 0.0_vp; 620 uint32_t toolbarLimitGridCount_ = 8; 621 uint32_t dividerShadowEnable_ = 0; 622 Color navigationDividerColor_; 623 Color navigationGroupColor_ = Color::TRANSPARENT; 624 uint32_t navBarUnfocusEffectEnable_ = 0; 625 Color navBarUnfocusColor_ = Color::TRANSPARENT; 626 Color backgroundBlurColor_; 627 Dimension marginLeft_; 628 Dimension marginRight_; 629 Dimension mainTitleFontSizeL_; 630 Dimension mainTitleFontSizeM_; 631 Dimension mainTitleFontSizeS_; 632 Dimension subTitleFontSizeS_; 633 Color mainTitleFontColor_; 634 Color subTitleFontColor_; 635 FontWeight mainTitleFontWeight_ { FontWeight::W700 }; 636 FontWeight subTitleFontWeight_ { FontWeight::W400 }; 637 Dimension cornerRadius_; 638 Color compBackgroundColor_; 639 Dimension compPadding_; 640 Color iconColor_; 641 Dimension iconWidth_; 642 Dimension iconHeight_; 643 Dimension backButtonWidth_; 644 Dimension backButtonHeight_; 645 Dimension iconBackgroundWidth_; 646 Dimension iconBackgroundHeight_; 647 Dimension paddingTopTwolines_; 648 Dimension titleSpaceVertical_; 649 double iconDisableAlpha_ = 0.4; 650 Color backgroundFocusOutlineColor_; 651 Dimension backgroundFocusOutlineWeight_; 652 double backgroundDisableAlpha_ = 0.4; 653 Color backgroundHoverColor_; 654 Color backgroundPressedColor_; 655 int titlebarBackgroundBlurStyle_; 656 int toolbarBackgroundBlurStyle_; 657 }; 658 659 } // namespace OHOS::Ace 660 661 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NAVIGATION_BAR_NAVIGATION_BAR_THEME_H 662