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::MakeRefPtr<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_EIGHTEEN)) { 138 SetNavigationTokenTheme(pattern, theme); 139 } 140 if (Container::GreatOrEqualAPITargetVersion(PlatformVersion::VERSION_NINETEEN)) { 141 SetToolBarTheme(pattern, theme); 142 } 143 ParsePatternContinue(themeConstants, theme); 144 } 145 SetToolBarTheme(RefPtr<ThemeStyle> pattern,const RefPtr<NavigationBarTheme> & theme)146 void SetToolBarTheme(RefPtr<ThemeStyle> pattern, const RefPtr<NavigationBarTheme>& theme) const 147 { 148 theme->toolbarItemFocusBorderWidth_ = 149 pattern->GetAttr<Dimension>("toolbar_item_focus_border_size_api_sixteen", 2.0_vp); 150 theme->toolbarItemFocusBorderColor_ = 151 pattern->GetAttr<Color>("toolbar_item_focus_color_api_sixteen", Color(0x007dff)); 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->toolbarActiveIconColor_ = 156 pattern->GetAttr<Color>("toolbar_item_active_icon_color_api_sixteen", Color(0xff007dff)); 157 theme->toolbarActiveTextColor_ = 158 pattern->GetAttr<Color>("toolbar_item_active_text_color_api_sixteen", Color(0xff007dff)); 159 theme->toolbarItemHeight_ = 44.0_vp; 160 theme->toolbarHeight_ = 48.0_vp; 161 theme->toolbarItemHorizontalPadding_ = 4.0_vp; 162 theme->toolbarItemVerticalPadding_ = 4.0_vp; 163 theme->toolbarItemTopPadding_ = 2.0_vp; 164 theme->toolbarItemLeftOrRightPadding_ = 2.0_vp; 165 theme->toolbarItemBottomPadding_ = 2.0_vp; 166 theme->toolbarItemTextMaxLines_ = 1; 167 } 168 SetNavigationTokenTheme(RefPtr<ThemeStyle> pattern,const RefPtr<NavigationBarTheme> & theme)169 void SetNavigationTokenTheme(RefPtr<ThemeStyle> pattern, const RefPtr<NavigationBarTheme>& theme) const 170 { 171 theme->titleColor_ = pattern->GetAttr<Color>("title_color_api_sixteen", Color::WHITE); 172 theme->subTitleColor_ = pattern->GetAttr<Color>("sub_title_text_color_api_sixteen", Color::WHITE); 173 theme->menuIconColor_ = pattern->GetAttr<Color>("menu_icon_color_api_sixteen", Color::WHITE); 174 theme->buttonPressedColor_ = pattern->GetAttr<Color>("button_bg_color_pressed_api_sixteen", Color::WHITE); 175 theme->buttonFocusColor_ = pattern->GetAttr<Color>("button_bg_color_focused_api_sixteen", Color::WHITE); 176 theme->buttonHoverColor_ = pattern->GetAttr<Color>("button_bg_color_hovered_api_sixteen", Color::WHITE); 177 theme->backButtonIconColor_ = pattern->GetAttr<Color>("back_button_icon_color_api_sixteen", Color::WHITE); 178 theme->toolbarBgColor_ = pattern->GetAttr<Color>("toolbar_bg_color_api_sixteen", Color(0xfff1f3f5)); 179 theme->toolbarDividerColor_ = 180 pattern->GetAttr<Color>("toolbar_divider_color_api_sixteen", Color(0x33182431)); 181 theme->navigationDividerColor_ = 182 pattern->GetAttr<Color>("navigation_divider_color_api_sixteen", Color(0x33000000)); 183 } 184 ParsePatternContinue(const RefPtr<ThemeConstants> & themeConstants,const RefPtr<NavigationBarTheme> & theme)185 void ParsePatternContinue(const RefPtr<ThemeConstants>& themeConstants, 186 const RefPtr<NavigationBarTheme>& theme) const 187 { 188 RefPtr<ThemeStyle> pattern = themeConstants->GetPatternByName(THEME_PATTERN_NAVIGATION_BAR); 189 if (!pattern) { 190 return; 191 } 192 theme->compBackgroundColor_ = 193 pattern->GetAttr<Color>("icon_background_color", Color(0x0c000000)); 194 theme->iconColor_ = pattern->GetAttr<Color>("icon_color", Color(0xe5000000)); 195 theme->marginLeft_ = pattern->GetAttr<Dimension>("title_margin_left", 16.0_vp); 196 theme->marginLeftForBackButton_ = pattern->GetAttr<Dimension>("backbutton_margin_left", 16.0_vp); 197 theme->marginRight_ = pattern->GetAttr<Dimension>("title_margin_right", 16.0_vp); 198 theme->marginRightForMenu_ = pattern->GetAttr<Dimension>("menu_margin_right", 16.0_vp); 199 theme->mainTitleFontSizeL_ = pattern->GetAttr<Dimension>("title_primary_size", 30.0_fp); 200 theme->mainTitleFontSizeM_ = pattern->GetAttr<Dimension>("title_secondary_size", 26.0_fp); 201 theme->mainTitleFontSizeS_ = pattern->GetAttr<Dimension>("title_tertiary_size", 20.0_fp); 202 theme->subTitleFontSizeS_ = pattern->GetAttr<Dimension>("title_subheader_size", 14.0_fp); 203 theme->cornerRadius_ = pattern->GetAttr<Dimension>("icon_background_shape", 20.0_vp); 204 theme->compPadding_ = pattern->GetAttr<Dimension>("icon_background_space_horizontal", 8.0_vp); 205 constexpr double mainTitleDefaultFontWeit = 6.0; // 6.0 is main title default fontweight:FontWeight::W700 206 theme->mainTitleFontWeight_ = FontWeight(static_cast<int32_t>( 207 pattern->GetAttr<double>("title_primary_weight", mainTitleDefaultFontWeit))); 208 constexpr double subTitleDefaultFontWeit = 3.0; // 3.0 is sub title default fontweight:FontWeight::W400 209 theme->subTitleFontWeight_ = FontWeight(static_cast<int32_t>( 210 pattern->GetAttr<double>("title_subheader_weight", subTitleDefaultFontWeit))); 211 theme->iconWidth_ = pattern->GetAttr<Dimension>("icon_width", 24.0_vp); 212 theme->iconHeight_ = pattern->GetAttr<Dimension>("icon_height", 24.0_vp); 213 theme->backButtonWidth_ = pattern->GetAttr<Dimension>("icon_background_width", 40.0_vp); 214 theme->backButtonHeight_ = pattern->GetAttr<Dimension>("icon_background_height", 40.0_vp); 215 theme->iconBackgroundWidth_ = pattern->GetAttr<Dimension>("icon_background_width", 40.0_vp); 216 theme->iconBackgroundHeight_ = pattern->GetAttr<Dimension>("icon_background_height", 40.0_vp); 217 theme->paddingTopTwolines_ = pattern->GetAttr<Dimension>("padding_top_twolines", 8.0_vp); 218 theme->titleSpaceVertical_ = pattern->GetAttr<Dimension>("title_sapce_vertical", 2.0_vp); 219 theme->iconDisableAlpha_ = pattern->GetAttr<double>("icon_disable_alpha", 0.0); 220 theme->backgroundFocusOutlineColor_ = pattern->GetAttr<Color>( 221 "icon_background_focus_outline_color", Color(0x0A59F7)); 222 theme->backgroundFocusOutlineWeight_ = pattern->GetAttr<Dimension>( 223 "icon_background_focus_outline_weight", 2.0_vp); 224 theme->backgroundDisableAlpha_ = pattern->GetAttr<double>("icon_background_disable_alpha", 0.0); 225 theme->backgroundHoverColor_ = pattern->GetAttr<Color>("icon_background_hover_color", 226 Color(0x0c000000)); 227 theme->backgroundPressedColor_ = pattern->GetAttr<Color>("icon_background_pressed_color", 228 Color(0x19000000)); 229 theme->titlebarBackgroundBlurStyle_ = pattern->GetAttr<int>("titlebar_background_blur_style", 0); 230 theme->toolbarBackgroundBlurStyle_ = pattern->GetAttr<int>("toolbar_background_blur_style", 0); 231 theme->dragBarDefaultColor_ = pattern->GetAttr<Color>("drag_bar_default_color", Color(0xff182431)); 232 theme->dragBarItemDefaultColor_ = pattern->GetAttr<Color>("drag_bar_item_default_color", Color(0xffffffff)); 233 theme->dragBarActiveColor_ = pattern->GetAttr<Color>("drag_bar_active_color", Color(0x330A59F7)); 234 theme->dragBarItemActiveColor_ = pattern->GetAttr<Color>("drag_bar_item_active_color", Color(0xFF007DFF)); 235 theme->dividerGradientLightBlue_ = pattern->GetAttr<Color>("divider_light_blue", Color(0x7FCEDEFE)); 236 theme->dividerGradientDarkBlue_ = pattern->GetAttr<Color>("divider_dark_blue", Color(0xFF0A59F7)); 237 theme->navigationBack_ = pattern->GetAttr<std::string>("navigation_back", ""); 238 } 239 }; 240 241 ~NavigationBarTheme() override = default; 242 GetTitleColor()243 const Color& GetTitleColor() const 244 { 245 return titleColor_; 246 } 247 SetTitleColor(const Color & color)248 void SetTitleColor(const Color& color) 249 { 250 titleColor_ = color; 251 } 252 GetSubTitleColor()253 const Color& GetSubTitleColor() const 254 { 255 return subTitleColor_; 256 } 257 SetSubTitleColor(const Color & color)258 void SetSubTitleColor(const Color& color) 259 { 260 subTitleColor_ = color; 261 } 262 GetTitleFontSizeBig()263 const Dimension& GetTitleFontSizeBig() const 264 { 265 return titleFontSizeBig_; 266 } 267 GetTitleFontSize()268 const Dimension& GetTitleFontSize() const 269 { 270 return titleFontSize_; 271 } 272 GetTitleFontSizeMin()273 const Dimension& GetTitleFontSizeMin() const 274 { 275 return titleFontSizeMin_; 276 } 277 GetSubTitleFontSize()278 const Dimension& GetSubTitleFontSize() const 279 { 280 return subTitleFontSize_; 281 } GetHeight()282 const Dimension& GetHeight() const 283 { 284 return height_; 285 } GetHeightEmphasize()286 const Dimension& GetHeightEmphasize() const 287 { 288 return heightEmphasize_; 289 } GetBackBtnResourceId()290 InternalResource::ResourceId GetBackBtnResourceId() const 291 { 292 return backBtnResourceId_; 293 } GetBackSymbolId()294 uint32_t GetBackSymbolId() const 295 { 296 return backSymbolId_; 297 } GetMoreSymbolId()298 uint32_t GetMoreSymbolId() const 299 { 300 return moreSymbolId_; 301 } GetBackResourceId()302 InternalResource::ResourceId GetBackResourceId() const 303 { 304 return backResourceId_; 305 } GetMoreResourceId()306 InternalResource::ResourceId GetMoreResourceId() const 307 { 308 return moreResourceId_; 309 } GetMenuZoneSize()310 const Dimension& GetMenuZoneSize() const 311 { 312 return menuZoneSize_; 313 } GetMenuIconSize()314 const Dimension& GetMenuIconSize() const 315 { 316 return menuIconSize_; 317 } GetLogoIconSize()318 const Dimension& GetLogoIconSize() const 319 { 320 return logoIconSize_; 321 } GetMenuIconColor()322 const Color& GetMenuIconColor() const 323 { 324 return menuIconColor_; 325 } SetMenuIconColor(const Color & color)326 void SetMenuIconColor(const Color& color) 327 { 328 menuIconColor_ = color; 329 } GetButtonNormalColor()330 const Color& GetButtonNormalColor() const 331 { 332 return buttonNormalColor_; 333 } GetButtonPressedColor()334 const Color& GetButtonPressedColor() const 335 { 336 return buttonPressedColor_; 337 } GetButtonFocusColor()338 const Color& GetButtonFocusColor() const 339 { 340 return buttonFocusColor_; 341 } GetButtonHoverColor()342 const Color& GetButtonHoverColor() const 343 { 344 return buttonHoverColor_; 345 } GetButtonCornerRadius()346 const Dimension& GetButtonCornerRadius() const 347 { 348 return buttonCornerRadius_; 349 } GetMaxPaddingStart()350 const Dimension& GetMaxPaddingStart() const 351 { 352 return maxPaddingStart_; 353 } GetDefaultPaddingStart()354 const Dimension& GetDefaultPaddingStart() const 355 { 356 return defaultPaddingStart_; 357 } GetDefaultPaddingEnd()358 const Dimension& GetDefaultPaddingEnd() const 359 { 360 return defaultPaddingEnd_; 361 } GetMaxPaddingEnd()362 const Dimension& GetMaxPaddingEnd() const 363 { 364 return maxPaddingEnd_; 365 } GetMenuItemPadding()366 const Dimension& GetMenuItemPadding() const 367 { 368 return menuItemPadding_; 369 } GetTitleMinPadding()370 const Dimension& GetTitleMinPadding() const 371 { 372 return titleMinPadding_; 373 } GetMostMenuItemCountInBar()374 uint32_t GetMostMenuItemCountInBar() const 375 { 376 return mostMenuItemCountInBar_; 377 } 378 GetBackButtonIconColor()379 const Color& GetBackButtonIconColor() const 380 { 381 return backButtonIconColor_; 382 } 383 SetBackButtonIconColor(const Color & color)384 void SetBackButtonIconColor(const Color& color) 385 { 386 backButtonIconColor_ = color; 387 } 388 GetAlphaDisabled()389 double GetAlphaDisabled() const 390 { 391 return alphaDisabled_; 392 } 393 GetToolBarBgColor()394 const Color& GetToolBarBgColor() const 395 { 396 return toolbarBgColorWithOpacity_; 397 } GetToolBarDividerWidth()398 const Dimension& GetToolBarDividerWidth() const 399 { 400 return toolbarDividerWidth_; 401 } GetToolBarDividerColor()402 const Color& GetToolBarDividerColor() const 403 { 404 return toolbarDividerColor_; 405 } SetToolBarDividerColor(const Color & color)406 void SetToolBarDividerColor(const Color& color) 407 { 408 toolbarDividerColor_ = color; 409 } GetToolBarItemFocusColor()410 const Color& GetToolBarItemFocusColor() const 411 { 412 return toolbarItemFocusBorderColor_; 413 } SetToolBarItemFocusColor(const Color & color)414 void SetToolBarItemFocusColor(const Color& color) 415 { 416 toolbarItemFocusBorderColor_ = color; 417 } GetToolBarItemFocusBorderWidth()418 const Dimension& GetToolBarItemFocusBorderWidth() const 419 { 420 return toolbarItemFocusBorderWidth_; 421 } GetToolBarItemBorderRadius()422 const NG::BorderRadiusProperty& GetToolBarItemBorderRadius() const 423 { 424 return toolbarItemBorderRadius_; 425 } GetToolBarItemFontSize()426 const Dimension& GetToolBarItemFontSize() const 427 { 428 return toolbarItemFontSize_; 429 } GetToolBarItemMinFontSize()430 const Dimension& GetToolBarItemMinFontSize() const 431 { 432 return toolbarItemMinFontSize_; 433 } GetToolBarItemFontColor()434 const Color& GetToolBarItemFontColor() const 435 { 436 return toolbarItemFontColor_; 437 } SetToolBarItemFontColor(const Color & color)438 void SetToolBarItemFontColor(const Color& color) 439 { 440 toolbarItemFontColor_ = color; 441 } GetToolbarItemDisabledAlpha()442 double GetToolbarItemDisabledAlpha() const 443 { 444 return toolbarItemDisabledAlpha_; 445 } GetToolbarIconColor()446 const Color& GetToolbarIconColor() const 447 { 448 return toolbarIconColor_; 449 } SetToolbarIconColor(const Color & color)450 void SetToolbarIconColor(const Color& color) 451 { 452 toolbarIconColor_ = color; 453 } GetToolbarIconSize()454 const Dimension& GetToolbarIconSize() const 455 { 456 return toolbarIconSize_; 457 } GetToolbarActiveIconColor()458 const Color& GetToolbarActiveIconColor() const 459 { 460 return toolbarActiveIconColor_; 461 } SetToolbarActiveIconColor(const Color & color)462 void SetToolbarActiveIconColor(const Color& color) 463 { 464 toolbarActiveIconColor_ = color; 465 } GetToolBarItemActiveFontColor()466 const Color& GetToolBarItemActiveFontColor() const 467 { 468 return toolbarActiveTextColor_; 469 } SetToolBarItemActiveFontColor(const Color & color)470 void SetToolBarItemActiveFontColor(const Color& color) 471 { 472 toolbarActiveTextColor_ = color; 473 } GetToolbarItemTextMaxLines()474 uint32_t GetToolbarItemTextMaxLines() const 475 { 476 return toolbarItemTextMaxLines_; 477 } GetToolbarItemSafeInterval()478 const Dimension& GetToolbarItemSafeInterval() const 479 { 480 return toolbarItemSafeInterval_; 481 } GetToolbarItemHorizontalPadding()482 const Dimension& GetToolbarItemHorizontalPadding() const 483 { 484 return toolbarItemHorizontalPadding_; 485 } GetToolbarItemVerticalPadding()486 const Dimension& GetToolbarItemVerticalPadding() const 487 { 488 return toolbarItemVerticalPadding_; 489 } GetToolbarItemTopPadding()490 const Dimension& GetToolbarItemTopPadding() const 491 { 492 return toolbarItemTopPadding_; 493 } GetToolbarItemLeftOrRightPadding()494 const Dimension& GetToolbarItemLeftOrRightPadding() const 495 { 496 return toolbarItemLeftOrRightPadding_; 497 } GetToolbarItemTextLeftOrRightPadding()498 const Dimension& GetToolbarItemTextLeftOrRightPadding() const 499 { 500 return ToolbarItemTextLeftOrRightPadding_; 501 } GetToolbarItemHeigth()502 const Dimension& GetToolbarItemHeigth() const 503 { 504 return toolbarItemHeight_; 505 } GetToolbarHeigth()506 const Dimension& GetToolbarHeigth() const 507 { 508 return toolbarHeight_; 509 } GetToolbarItemBottomPadding()510 const Dimension& GetToolbarItemBottomPadding() const 511 { 512 return toolbarItemBottomPadding_; 513 } GetToolbarItemIconHideTextTopPadding()514 const Dimension& GetToolbarItemIconHideTextTopPadding() const 515 { 516 return toolbarItemIconTopHideTextPadding_; 517 } GetToolbarItemIconTopPadding()518 const Dimension& GetToolbarItemIconTopPadding() const 519 { 520 return toolbarItemIconTopPadding_; 521 } GetToolbarItemMargin()522 const Dimension& GetToolbarItemMargin() const 523 { 524 return toolbarItemMargin_; 525 } GetToolbarItemSpecialMargin()526 const Dimension& GetToolbarItemSpecialMargin() const 527 { 528 return toolbarItemSpecialMargin_; 529 } GetToolbarRotationLimitGridCount()530 uint32_t GetToolbarRotationLimitGridCount() const 531 { 532 return toolbarLimitGridCount_; 533 } GetDividerShadowEnable()534 uint32_t GetDividerShadowEnable() const 535 { 536 return dividerShadowEnable_; 537 } GetNavigationDividerColor()538 const Color& GetNavigationDividerColor() const 539 { 540 return navigationDividerColor_; 541 } SetNavigationDividerColor(const Color & color)542 void SetNavigationDividerColor(const Color& color) 543 { 544 navigationDividerColor_ = color; 545 } GetMarginLeft()546 const Dimension& GetMarginLeft() const 547 { 548 return marginLeft_; 549 } GetMarginLeftForBackButton()550 const Dimension& GetMarginLeftForBackButton() const 551 { 552 return marginLeftForBackButton_; 553 } GetMarginRight()554 const Dimension& GetMarginRight() const 555 { 556 return marginRight_; 557 } GetMarginRightForMenu()558 const Dimension& GetMarginRightForMenu() const 559 { 560 return marginRightForMenu_; 561 } GetNavigationGroupColor()562 const Color& GetNavigationGroupColor() const 563 { 564 return navigationGroupColor_; 565 } GetNavBarUnfocusEffectEnable()566 uint32_t GetNavBarUnfocusEffectEnable() const 567 { 568 return navBarUnfocusEffectEnable_; 569 } GetNavBarUnfocusColor()570 const Color& GetNavBarUnfocusColor() const 571 { 572 return navBarUnfocusColor_; 573 } GetBackgroundBlurColor()574 const Color& GetBackgroundBlurColor() const 575 { 576 return backgroundBlurColor_; 577 } GetMainTitleFontSizeL()578 const Dimension& GetMainTitleFontSizeL() const 579 { 580 return mainTitleFontSizeL_; 581 } GetMainTitleFontSizeM()582 const Dimension& GetMainTitleFontSizeM() const 583 { 584 return mainTitleFontSizeM_; 585 } GetMainTitleFontSizeS()586 const Dimension& GetMainTitleFontSizeS() const 587 { 588 return mainTitleFontSizeS_; 589 } GetSubTitleFontSizeS()590 const Dimension& GetSubTitleFontSizeS() const 591 { 592 return subTitleFontSizeS_; 593 } GetMainTitleFontColor()594 const Color& GetMainTitleFontColor() const 595 { 596 return mainTitleFontColor_; 597 } SetMainTitleFontColor(const Color & color)598 void SetMainTitleFontColor(const Color& color) 599 { 600 mainTitleFontColor_ = color; 601 } GetSubTitleFontColor()602 const Color& GetSubTitleFontColor() const 603 { 604 return subTitleFontColor_; 605 } SetSubTitleFontColor(const Color & color)606 void SetSubTitleFontColor(const Color& color) 607 { 608 subTitleFontColor_ = color; 609 } GetMainTitleFontWeight()610 const FontWeight& GetMainTitleFontWeight() const 611 { 612 return mainTitleFontWeight_; 613 } GetSubTitleFontWeight()614 const FontWeight& GetSubTitleFontWeight() const 615 { 616 return subTitleFontWeight_; 617 } GetCornerRadius()618 const Dimension& GetCornerRadius() const 619 { 620 return cornerRadius_; 621 } GetCompBackgroundColor()622 const Color& GetCompBackgroundColor() const 623 { 624 return compBackgroundColor_; 625 } GetIconColor()626 const Color& GetIconColor() const 627 { 628 return iconColor_; 629 } SetIconColor(const Color & color)630 void SetIconColor(const Color& color) 631 { 632 iconColor_ = color; 633 } GetCompPadding()634 const Dimension& GetCompPadding() const 635 { 636 return compPadding_; 637 } GetIconWidth()638 const Dimension& GetIconWidth() const 639 { 640 return iconWidth_; 641 } GetIconHeight()642 const Dimension& GetIconHeight() const 643 { 644 return iconHeight_; 645 } GetIconBackgroundWidth()646 const Dimension& GetIconBackgroundWidth() const 647 { 648 return iconBackgroundWidth_; 649 } GetIconBackgroundHeight()650 const Dimension& GetIconBackgroundHeight() const 651 { 652 return iconBackgroundHeight_; 653 } GetBackButtonWidth()654 const Dimension& GetBackButtonWidth() const 655 { 656 return backButtonWidth_; 657 } GetBackButtonHeight()658 const Dimension& GetBackButtonHeight() const 659 { 660 return backButtonHeight_; 661 } GetPaddingTopTwolines()662 const Dimension& GetPaddingTopTwolines() const 663 { 664 return paddingTopTwolines_; 665 } GetTitleSpaceVertical()666 const Dimension& GetTitleSpaceVertical() const 667 { 668 return titleSpaceVertical_; 669 } GetIconDisableAlpha()670 const double& GetIconDisableAlpha() const 671 { 672 return iconDisableAlpha_; 673 } GetBackgroundFocusOutlineColor()674 const Color& GetBackgroundFocusOutlineColor() const 675 { 676 return backgroundFocusOutlineColor_; 677 } GetBackgroundFocusOutlineWeight()678 const Dimension& GetBackgroundFocusOutlineWeight() const 679 { 680 return backgroundFocusOutlineWeight_; 681 } GetBackgroundDisableAlpha()682 const double& GetBackgroundDisableAlpha() const 683 { 684 return backgroundDisableAlpha_; 685 } GetBackgroundHoverColor()686 const Color& GetBackgroundHoverColor() const 687 { 688 return backgroundHoverColor_; 689 } GetBackgroundPressedColor()690 const Color& GetBackgroundPressedColor() const 691 { 692 return backgroundPressedColor_; 693 } GetTitlebarBackgroundBlurStyle()694 const int& GetTitlebarBackgroundBlurStyle() const 695 { 696 return titlebarBackgroundBlurStyle_; 697 } GetToolbarBackgroundBlurStyle()698 const int& GetToolbarBackgroundBlurStyle() const 699 { 700 return toolbarBackgroundBlurStyle_; 701 } GetDragBarDefaultColor()702 const Color& GetDragBarDefaultColor() const 703 { 704 return dragBarDefaultColor_; 705 } GetDragBarItemDefaultColor()706 const Color& GetDragBarItemDefaultColor() const 707 { 708 return dragBarItemDefaultColor_; 709 } GetDragBarActiveColor()710 const Color& GetDragBarActiveColor() const 711 { 712 return dragBarActiveColor_; 713 } GetDragBarItemActiveColor()714 const Color& GetDragBarItemActiveColor() const 715 { 716 return dragBarItemActiveColor_; 717 } GetDviderLightBlueColor()718 const Color& GetDviderLightBlueColor() const 719 { 720 return dividerGradientLightBlue_; 721 } GetDviderDarkBlueColor()722 const Color& GetDviderDarkBlueColor() const 723 { 724 return dividerGradientDarkBlue_; 725 } GetMoreMessage()726 const std::string& GetMoreMessage() const 727 { 728 return moreMessage_; 729 } SetToolbarBgColor(const Color & color)730 void SetToolbarBgColor(const Color& color) 731 { 732 toolbarBgColor_ = color; 733 toolbarBgColorWithOpacity_ = toolbarBgColor_.BlendOpacity(toolbarBgAlpha_); 734 } GetNavigationBack()735 const std::string& GetNavigationBack() const 736 { 737 return navigationBack_; 738 } 739 740 protected: 741 NavigationBarTheme() = default; 742 743 private: 744 Color titleColor_; 745 Color subTitleColor_; 746 Dimension titleFontSizeBig_; 747 Dimension titleFontSize_; 748 Dimension titleFontSizeMin_; 749 Dimension subTitleFontSize_; 750 Dimension height_; 751 Dimension heightEmphasize_; 752 InternalResource::ResourceId backBtnResourceId_ = InternalResource::ResourceId::NO_ID; 753 InternalResource::ResourceId backResourceId_ = InternalResource::ResourceId::NO_ID; 754 InternalResource::ResourceId moreResourceId_ = InternalResource::ResourceId::NO_ID; 755 uint32_t backSymbolId_; 756 uint32_t moreSymbolId_; 757 Dimension menuZoneSize_; 758 Dimension menuIconSize_; 759 Dimension logoIconSize_; 760 Color menuIconColor_; 761 Color buttonNormalColor_; 762 Color buttonPressedColor_; 763 Color buttonFocusColor_; 764 Color buttonHoverColor_; 765 Dimension buttonCornerRadius_; 766 Dimension maxPaddingStart_; 767 Dimension maxPaddingEnd_; 768 Dimension defaultPaddingStart_; 769 Dimension defaultPaddingEnd_; 770 Dimension menuItemPadding_; 771 Dimension titleMinPadding_; 772 uint32_t mostMenuItemCountInBar_ = 0; 773 Color backButtonIconColor_; 774 double alphaDisabled_ = 0.0; 775 Color toolbarBgColor_; 776 Color toolbarBgColorWithOpacity_; 777 Dimension toolbarDividerWidth_; 778 Color toolbarDividerColor_; 779 Color toolbarItemFocusBorderColor_; 780 Dimension toolbarItemFocusBorderWidth_ = 2.0_vp; 781 Dimension toolbarItemBorderRadiusValue_; 782 NG::BorderRadiusProperty toolbarItemBorderRadius_; 783 Dimension toolbarItemFontSize_; 784 Dimension toolbarItemMinFontSize_ = 9.0_vp; 785 Color toolbarItemFontColor_; 786 double toolbarItemDisabledAlpha_ = 0.4; 787 double toolbarBgAlpha_ = 0.95; 788 Color toolbarIconColor_; 789 Dimension toolbarIconSize_ = 24.0_vp; 790 Color toolbarActiveIconColor_; 791 Color toolbarActiveTextColor_; 792 uint32_t toolbarItemTextMaxLines_ = 2; 793 Dimension toolbarItemSafeInterval_ = 8.0_vp; 794 Dimension toolbarItemHorizontalPadding_ = 8.0_vp; 795 Dimension ToolbarItemTextLeftOrRightPadding_ = 4.0_vp; 796 Dimension toolbarItemVerticalPadding_ = 12.0_vp; 797 Dimension toolbarItemTopPadding_ = 8.0_vp; 798 Dimension toolbarItemLeftOrRightPadding_ = 4.0_vp; 799 Dimension toolbarItemHeight_ = 56.0_vp; 800 Dimension toolbarHeight_ = 56.0_vp; 801 Dimension toolbarItemBottomPadding_ = 4.0_vp; 802 Dimension toolbarItemIconTopPadding_ = 2.0_vp; 803 Dimension toolbarItemIconTopHideTextPadding_ = 8.0_vp; 804 Dimension toolbarItemMargin_ = 4.0_vp; 805 Dimension toolbarItemSpecialMargin_ = 0.0_vp; 806 std::string moreMessage_ = ""; 807 std::string navigationBack_ = ""; 808 uint32_t toolbarLimitGridCount_ = 8; 809 uint32_t dividerShadowEnable_ = 0; 810 Color navigationDividerColor_; 811 Color navigationGroupColor_ = Color::TRANSPARENT; 812 uint32_t navBarUnfocusEffectEnable_ = 0; 813 Color navBarUnfocusColor_ = Color::TRANSPARENT; 814 Color backgroundBlurColor_; 815 Dimension marginLeft_; 816 Dimension marginLeftForBackButton_; 817 Dimension marginRight_; 818 Dimension marginRightForMenu_; 819 Dimension mainTitleFontSizeL_; 820 Dimension mainTitleFontSizeM_; 821 Dimension mainTitleFontSizeS_; 822 Dimension subTitleFontSizeS_; 823 Color mainTitleFontColor_; 824 Color subTitleFontColor_; 825 FontWeight mainTitleFontWeight_ { FontWeight::W700 }; 826 FontWeight subTitleFontWeight_ { FontWeight::W400 }; 827 Dimension cornerRadius_; 828 Color compBackgroundColor_; 829 Dimension compPadding_; 830 Color iconColor_; 831 Dimension iconWidth_; 832 Dimension iconHeight_; 833 Dimension backButtonWidth_; 834 Dimension backButtonHeight_; 835 Dimension iconBackgroundWidth_; 836 Dimension iconBackgroundHeight_; 837 Dimension paddingTopTwolines_; 838 Dimension titleSpaceVertical_; 839 double iconDisableAlpha_ = 0.4; 840 Color backgroundFocusOutlineColor_; 841 Dimension backgroundFocusOutlineWeight_; 842 double backgroundDisableAlpha_ = 0.4; 843 Color backgroundHoverColor_; 844 Color backgroundPressedColor_; 845 int titlebarBackgroundBlurStyle_; 846 int toolbarBackgroundBlurStyle_; 847 Color dragBarDefaultColor_; 848 Color dragBarItemDefaultColor_; 849 Color dragBarActiveColor_; 850 Color dragBarItemActiveColor_; 851 Color dividerGradientLightBlue_; 852 Color dividerGradientDarkBlue_; 853 }; 854 855 } // namespace OHOS::Ace 856 857 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NAVIGATION_BAR_NAVIGATION_BAR_THEME_H 858