1 /* 2 * Copyright (c) 2021-2022 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_DIALOG_DIALOG_THEME_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DIALOG_DIALOG_THEME_H 18 19 #include "base/utils/system_properties.h" 20 #include "core/common/container.h" 21 #include "core/components/common/properties/color.h" 22 #include "core/components/common/properties/edge.h" 23 #include "core/components/common/properties/radius.h" 24 #include "core/components/common/properties/text_style.h" 25 #include "core/components/theme/theme.h" 26 #include "core/components/theme/theme_constants.h" 27 #include "core/components/theme/theme_constants_defines.h" 28 29 namespace OHOS::Ace { 30 namespace { 31 constexpr double PRIMARY_RGBA_OPACITY = 0.9f; 32 constexpr double SECONDARY_RGBA_OPACITY = 0.6f; 33 constexpr int DEFAULT_ANIMATION_DURATION_OUT = 220; 34 constexpr int DEFAULT_ANIMATION_DURATION_IN = 250; 35 } // namespace 36 /** 37 * DialogTheme defines color and styles of DialogComponent. DialogTheme should be built 38 * using DialogTheme::Builder. 39 */ 40 class DialogTheme : public virtual Theme { 41 DECLARE_ACE_TYPE(DialogTheme, Theme); 42 43 public: 44 class Builder { 45 public: 46 Builder() = default; 47 ~Builder() = default; 48 Build(const RefPtr<ThemeConstants> & themeConstants)49 RefPtr<DialogTheme> Build(const RefPtr<ThemeConstants>& themeConstants) const 50 { 51 RefPtr<DialogTheme> theme = AceType::Claim(new DialogTheme()); 52 if (!themeConstants) { 53 return theme; 54 } 55 // init theme from global data 56 ParseNewPattern(themeConstants, theme); 57 ParsePattern(themeConstants, theme); 58 return theme; 59 } 60 ParsePattern(const RefPtr<ThemeConstants> & themeConstants,const RefPtr<DialogTheme> & theme)61 void ParsePattern(const RefPtr<ThemeConstants>& themeConstants, const RefPtr<DialogTheme>& theme) const 62 { 63 auto themeStyle = themeConstants->GetThemeStyle(); 64 if (!themeStyle) { 65 return; 66 } 67 RefPtr<ThemeStyle> dialogPattern = themeConstants->GetPatternByName(THEME_PATTERN_DIALOG); 68 if (!dialogPattern) { 69 return; 70 } 71 theme->backgroundColor_ = dialogPattern->GetAttr<Color>(PATTERN_BG_COLOR, Color(0xd9ffffff)); 72 theme->titleTextStyle_.SetTextColor(dialogPattern->GetAttr<Color>("title_text_color", Color::BLACK)); 73 theme->titleTextStyle_.SetFontSize(dialogPattern->GetAttr<Dimension>("title_text_font_size", 20.0_fp)); 74 theme->titleTextStyle_.SetFontWeight(FontWeight::MEDIUM); 75 theme->subtitleTextStyle_.SetTextColor(dialogPattern->GetAttr<Color>("subtitle_text_color", Color::BLACK)); 76 theme->subtitleTextStyle_.SetFontSize( 77 dialogPattern->GetAttr<Dimension>("subtitle_text_font_size", 14.0_fp)); 78 theme->contentTextStyle_.SetTextColor(dialogPattern->GetAttr<Color>("content_text_color", Color::BLACK)); 79 theme->contentTextStyle_.SetFontSize(dialogPattern->GetAttr<Dimension>("content_text_font_size", 16.0_fp)); 80 theme->buttonBackgroundColor_ = dialogPattern->GetAttr<Color>("button_bg_color", Color::BLACK); 81 theme->radius_ = Radius(dialogPattern->GetAttr<Dimension>("radius", 24.0_vp)); 82 theme->dividerLength_ = dialogPattern->GetAttr<Dimension>(DIALOG_DIVIDER_LENGTH, 24.0_vp); 83 theme->dividerBetweenButtonWidth_ = 84 dialogPattern->GetAttr<Dimension>(DIALOG_DIVIDER_BETWEEN_BUTTON_WIDTH, 2.0_px); 85 theme->dividerColor_ = dialogPattern->GetAttr<Color>("divider_color", Color(0x33000000)); 86 87 auto defaultPadding = dialogPattern->GetAttr<Dimension>(DIALOG_CONTENT_TOP_PADDING, 24.0_vp); 88 theme->contentAdjustPadding_ = Edge(defaultPadding, defaultPadding, defaultPadding, 0.0_vp); 89 theme->defaultPaddingBottomFixed_ = 90 dialogPattern->GetAttr<Dimension>("default_padding_bottom_fixed", 24.0_vp); 91 theme->defaultDialogMarginBottom_ = 92 dialogPattern->GetAttr<Dimension>("default_dialog_margin_bottom", 16.0_vp); 93 theme->buttonHighlightBgColor_ = 94 dialogPattern->GetAttr<Color>("button_bg_highlight_color", Color(0xff007dff)); 95 theme->buttonHighlightFontColor_ = dialogPattern->GetAttr<Color>("first_button_text_color", Color::WHITE); 96 theme->buttonDefaultBgColor_ = dialogPattern->GetAttr<Color>("button_default_bg_color", Color::TRANSPARENT); 97 theme->buttonDefaultFontColor_ = 98 dialogPattern->GetAttr<Color>("button_default_font_color", Color(0xff007dff)); 99 theme->buttonPaddingBottom_ = dialogPattern->GetAttr<Dimension>("button_padding_bottom", 16.0_vp); 100 theme->singleButtonPaddingStart_ = 101 dialogPattern->GetAttr<Dimension>("single_button_padding_start", 16.0_vp); 102 theme->singleButtonPaddingEnd_ = dialogPattern->GetAttr<Dimension>("single_button_padding_end", 16.0_vp); 103 theme->mutiButtonPaddingStart_ = dialogPattern->GetAttr<Dimension>("muti_button_padding_start", 16.0_vp); 104 theme->mutiButtonPaddingEnd_ = dialogPattern->GetAttr<Dimension>("muti_button_padding_end", 16.0_vp); 105 theme->mutiButtonPaddingHorizontal_ = 106 dialogPattern->GetAttr<Dimension>("muti_button_padding_horizontal", 8.0_vp); 107 theme->mutiButtonPaddingVertical_ = 108 dialogPattern->GetAttr<Dimension>("muti_button_padding_vertical", 4.0_vp); 109 theme->multipleDialogDisplay_ = dialogPattern->GetAttr<std::string>("multiple_dialog_display", "stack"); 110 theme->actionsPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_actions_left", 16.0_vp), 111 dialogPattern->GetAttr<Dimension>("dialog_padding_actions_top", 8.0_vp), 112 dialogPattern->GetAttr<Dimension>("dialog_padding_actions_right", 16.0_vp), 113 dialogPattern->GetAttr<Dimension>("dialog_padding_actions_bottom", 16.0_vp)); 114 theme->buttonWithContentPadding_ = 115 dialogPattern->GetAttr<Dimension>("dialog_buttonwithcontent_padding", 8.0_vp); 116 if (Container::LessThanAPIVersion(PlatformVersion::VERSION_ELEVEN)) { 117 theme->expandDisplay_ = false; 118 } else { 119 std::string expandDisplay = dialogPattern->GetAttr<std::string>("dialog_expand_display", ""); 120 theme->expandDisplay_ = (expandDisplay == "true"); 121 } 122 if (SystemProperties::GetDeviceType() != DeviceType::CAR) { 123 return; 124 } 125 auto titlePadding = dialogPattern->GetAttr<Dimension>(DIALOG_TITLE_TOP_PADDING, 0.0_vp); 126 auto actionsTopPadding = dialogPattern->GetAttr<Dimension>(DIALOG_ACTIONS_TOP_PADDING, 0.0_vp); 127 theme->titleAdjustPadding_ = Edge(defaultPadding, titlePadding, defaultPadding, titlePadding); 128 theme->titleDefaultPadding_ = Edge(defaultPadding, titlePadding, defaultPadding, titlePadding); 129 theme->defaultPadding_ = Edge(defaultPadding, defaultPadding, defaultPadding, defaultPadding); 130 theme->adjustPadding_ = Edge(defaultPadding, defaultPadding, defaultPadding, 0.0_vp); 131 theme->contentDefaultPadding_ = Edge(defaultPadding, 0.0_vp, defaultPadding, defaultPadding); 132 theme->contentAdjustPadding_ = Edge(defaultPadding, 0.0_vp, defaultPadding, 0.0_vp); 133 theme->buttonHeight_ = dialogPattern->GetAttr<Dimension>(DIALOG_BUTTON_HEIGHT, 0.0_vp); 134 theme->titleMaxLines_ = static_cast<uint32_t>(dialogPattern->GetAttr<int32_t>(DIALOG_TITLE_MAX_LINES, 2)); 135 theme->buttonSpacingHorizontal_ = actionsTopPadding; 136 theme->commonButtonTextColor_ = 137 dialogPattern->GetAttr<Color>(DIALOG_COMMON_BUTTON_TEXT_COLOR, Color::WHITE); 138 theme->buttonMinTextSize_ = dialogPattern->GetAttr<Dimension>(DIALOG_MIN_BUTTON_TEXT_SIZE, 10.0_vp); 139 theme->minButtonWidth_ = dialogPattern->GetAttr<Dimension>(DIALOG_MIN_BUTTON_WIDTH, 104.0_vp); 140 theme->maxButtonWidth_ = dialogPattern->GetAttr<Dimension>(DIALOG_MAX_BUTTON_WIDTH, 260.0_vp); 141 theme->maskColorEnd_ = dialogPattern->GetAttr<Color>(DIALOG_MASK_COLOR_END, Color::WHITE); 142 // pattern config 143 theme->titleTextStyle_.SetFontSize(dialogPattern->GetAttr<Dimension>("title_text_font_size", 20.0_vp)); 144 theme->titleMinFontSize_ = dialogPattern->GetAttr<Dimension>("title_text_font_size_min", 20.0_vp); 145 theme->commonButtonBgColor_ = dialogPattern->GetAttr<Color>("common_button_bg_color", Color::GRAY); 146 theme->emphasizeButtonBgColor_ = dialogPattern->GetAttr<Color>("first_button_bg_color", Color::BLACK); 147 theme->emphasizeButtonTextColor_ = dialogPattern->GetAttr<Color>("first_button_text_color", Color::WHITE); 148 theme->buttonTextSize_ = dialogPattern->GetAttr<Dimension>("button_text_font_size", 16.0_vp); 149 theme->buttonClickedColor_ = dialogPattern->GetAttr<Color>("button_bg_color_clicked", Color::BLACK); 150 theme->contentTextStyle_.SetFontSize(themeStyle->GetAttr<Dimension>("content_text_font_size", 16.0_vp)); 151 theme->contentMinFontSize_ = themeStyle->GetAttr<Dimension>("content_text_font_size_min", 16.0_vp); 152 } 153 ParseNewPattern(const RefPtr<ThemeConstants> & themeConstants,const RefPtr<DialogTheme> & theme)154 void ParseNewPattern(const RefPtr<ThemeConstants>& themeConstants, const RefPtr<DialogTheme>& theme) const 155 { 156 RefPtr<ThemeStyle> dialogPattern = themeConstants->GetPatternByName(THEME_PATTERN_DIALOG); 157 if (!dialogPattern) { 158 return; 159 } 160 theme->titleMinFontSize_ = dialogPattern->GetAttr<Dimension>("dialog_title_text_font_size_min", 15.0_fp); 161 theme->contentMinFontSize_ = dialogPattern->GetAttr<Dimension>("content_text_font_size_min", 16.0_fp); 162 auto titleMaxLines = dialogPattern->GetAttr<int>("dialog_title_text_max_lines", 2); 163 theme->titleMaxLines_ = titleMaxLines < 0 ? theme->titleMaxLines_ : static_cast<uint32_t>(titleMaxLines); 164 theme->defaultPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_left", 24.0_vp), 165 dialogPattern->GetAttr<Dimension>("dialog_padding_top", 24.0_vp), 166 dialogPattern->GetAttr<Dimension>("dialog_padding_right", 24.0_vp), 167 dialogPattern->GetAttr<Dimension>("dialog_padding_bottom", 24.0_vp)); 168 theme->adjustPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_left_adjust", 24.0_vp), 169 dialogPattern->GetAttr<Dimension>("dialog_padding_top_adjust", 24.0_vp), 170 dialogPattern->GetAttr<Dimension>("dialog_padding_right_adjust", 24.0_vp), 171 dialogPattern->GetAttr<Dimension>("dialog_padding_bottom_adjust", 0.0_vp)); 172 theme->titleDefaultPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_left", 24.0_vp), 173 dialogPattern->GetAttr<Dimension>("button_title_padding_vertical", 14.0_vp), 174 dialogPattern->GetAttr<Dimension>("dialog_padding_right", 24.0_vp), 175 dialogPattern->GetAttr<Dimension>("button_title_padding_vertical", 14.0_vp)); 176 theme->titleAdjustPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_left_adjust", 24.0_vp), 177 dialogPattern->GetAttr<Dimension>("button_title_padding_vertical", 14.0_vp), 178 dialogPattern->GetAttr<Dimension>("dialog_padding_right_adjust", 24.0_vp), 179 dialogPattern->GetAttr<Dimension>("dialog_padding_bottom_adjust", 0.0_vp)); 180 theme->contentDefaultPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_left", 24.0_vp), 181 dialogPattern->GetAttr<Dimension>("dialog_padding_top", 24.0_vp), 182 dialogPattern->GetAttr<Dimension>("dialog_padding_right", 24.0_vp), 183 dialogPattern->GetAttr<Dimension>("dialog_padding_bottom", 24.0_vp)); 184 theme->buttonPaddingLeft_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_min", 4.0_vp).Value(), 185 0.0, 0.0, 0.0, DimensionUnit::VP); 186 theme->buttonPaddingRight_ = Edge(0.0, 0.0, 187 dialogPattern->GetAttr<Dimension>("dialog_padding_min", 4.0_vp).Value(), 0.0, DimensionUnit::VP); 188 theme->buttonPaddingCenter_ = Edge(0.0, 189 dialogPattern->GetAttr<Dimension>("dialog_padding_mid", 8.0_vp).Value(), 190 0.0, dialogPattern->GetAttr<Dimension>("dialog_padding_mid", 8.0_vp).Value(), DimensionUnit::VP); 191 theme->buttonSpacingHorizontal_ = dialogPattern->GetAttr<Dimension>("dialog_button_spacing_vertical", 192 8.0_vp); 193 theme->buttonSpacingVertical_ = dialogPattern->GetAttr<Dimension>("dialog_button_spacing_vertical", 194 8.0_vp); 195 theme->buttonClickedColor_ = dialogPattern->GetAttr<Color>("button_color_clicked", Color(0x19182431)); 196 theme->frameStart_ = dialogPattern->GetAttr<double>("dialog_frame_start", 0.0f); 197 theme->frameEnd_ = dialogPattern->GetAttr<double>("dialog_frame_end", 1.0f); 198 theme->scaleStart_ = dialogPattern->GetAttr<double>("dialog_scale_start", 0.85f); 199 theme->scaleEnd_ = dialogPattern->GetAttr<double>("dialog_scale_end", 1.0f); 200 theme->opacityStart_ = dialogPattern->GetAttr<double>("dialog_opacity_start", 0.0f); 201 theme->opacityEnd_ = dialogPattern->GetAttr<double>("dialog_opacity_end", 1.0f); 202 theme->maskColorStart_ = dialogPattern->GetAttr<Color>("dialog_mask_color_start", Color(0x00000000)); 203 theme->maskColorEnd_ = dialogPattern->GetAttr<Color>("dialog_mask_color_end", Color(0x33000000)); 204 theme->animationDurationIn_ = dialogPattern->GetAttr<int>("dialog_animation_duration_in", 205 DEFAULT_ANIMATION_DURATION_IN); 206 theme->animationDurationOut_ = dialogPattern->GetAttr<int>("dialog_animation_duration_out", 207 DEFAULT_ANIMATION_DURATION_OUT); 208 theme->translateValue_ = Dimension(dialogPattern->GetAttr<double>("dialog_translate", 500.0f), 209 DimensionUnit::PX); 210 theme->dividerWidth_ = dialogPattern->GetAttr<Dimension>("dialog_divider_width", 1.0_vp); 211 theme->dividerHeight_ = dialogPattern->GetAttr<Dimension>("dialog_divider_height", 24.0_vp); 212 theme->dividerPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_divider_padding_horizon", 4.0_vp), 213 dialogPattern->GetAttr<Dimension>("dialog_divider_padding_vertical", 6.0_vp), 214 dialogPattern->GetAttr<Dimension>("dialog_divider_padding_horizon", 4.0_vp), 215 dialogPattern->GetAttr<Dimension>("dialog_divider_padding_vertical", 6.0_vp)); 216 theme->marginBottom_ = dialogPattern->GetAttr<Dimension>("dialog_dimension_bottom", 16.0_vp); 217 theme->marginLeft_ = dialogPattern->GetAttr<Dimension>("dialog_dimension_start", 12.0_vp); 218 theme->marginRight_ = dialogPattern->GetAttr<Dimension>("dialog_dimension_end", 12.0_vp); 219 } 220 }; 221 222 ~DialogTheme() override = default; 223 GetRadius()224 const Radius& GetRadius() const 225 { 226 return radius_; 227 } 228 GetBackgroundColor()229 const Color& GetBackgroundColor() const 230 { 231 return backgroundColor_; 232 } 233 GetCommonButtonBgColor()234 const Color& GetCommonButtonBgColor() const 235 { 236 return commonButtonBgColor_; 237 } 238 GetEmphasizeButtonBgColor()239 const Color& GetEmphasizeButtonBgColor() const 240 { 241 return emphasizeButtonBgColor_; 242 } 243 GetTitleTextStyle()244 const TextStyle& GetTitleTextStyle() const 245 { 246 return titleTextStyle_; 247 } 248 GetSubTitleTextStyle()249 const TextStyle& GetSubTitleTextStyle() const 250 { 251 return subtitleTextStyle_; 252 } 253 GetTitleMinFontSize()254 const Dimension& GetTitleMinFontSize() const 255 { 256 return titleMinFontSize_; 257 } 258 GetContentMinFontSize()259 const Dimension& GetContentMinFontSize() const 260 { 261 return contentMinFontSize_; 262 } 263 GetTitleMaxLines()264 uint32_t GetTitleMaxLines() const 265 { 266 return titleMaxLines_; 267 } 268 GetContentTextStyle()269 const TextStyle& GetContentTextStyle() const 270 { 271 return contentTextStyle_; 272 } 273 GetDefaultPadding()274 const Edge& GetDefaultPadding() const 275 { 276 return defaultPadding_; 277 } 278 GetAdjustPadding()279 const Edge& GetAdjustPadding() const 280 { 281 return adjustPadding_; 282 } 283 GetTitleDefaultPadding()284 const Edge& GetTitleDefaultPadding() const 285 { 286 return titleDefaultPadding_; 287 } 288 GetTitleAdjustPadding()289 const Edge& GetTitleAdjustPadding() const 290 { 291 return titleAdjustPadding_; 292 } 293 GetContentDefaultPadding()294 const Edge& GetContentDefaultPadding() const 295 { 296 return contentDefaultPadding_; 297 } 298 GetContentAdjustPadding()299 const Edge& GetContentAdjustPadding() const 300 { 301 return contentAdjustPadding_; 302 } 303 GetActionsPadding()304 const Edge& GetActionsPadding() const 305 { 306 return actionsPadding_; 307 } 308 GetButtonPaddingLeft()309 const Edge& GetButtonPaddingLeft() const 310 { 311 return buttonPaddingLeft_; 312 } 313 GetButtonPaddingRight()314 const Edge& GetButtonPaddingRight() const 315 { 316 return buttonPaddingRight_; 317 } 318 GetButtonPaddingCenter()319 const Edge& GetButtonPaddingCenter() const 320 { 321 return buttonPaddingCenter_; 322 } 323 GetButtonPaddingBottom()324 const Dimension& GetButtonPaddingBottom() const 325 { 326 return buttonPaddingBottom_; 327 } 328 GetSingleButtonPaddingStart()329 const Dimension& GetSingleButtonPaddingStart() const 330 { 331 return singleButtonPaddingStart_; 332 } 333 GetSingleButtonPaddingEnd()334 const Dimension& GetSingleButtonPaddingEnd() const 335 { 336 return singleButtonPaddingEnd_; 337 } 338 GetMutiButtonPaddingStart()339 const Dimension& GetMutiButtonPaddingStart() const 340 { 341 return mutiButtonPaddingStart_; 342 } 343 GetMutiButtonPaddingEnd()344 const Dimension& GetMutiButtonPaddingEnd() const 345 { 346 return mutiButtonPaddingEnd_; 347 } 348 GetMutiButtonPaddingHorizontal()349 const Dimension& GetMutiButtonPaddingHorizontal() const 350 { 351 return mutiButtonPaddingHorizontal_; 352 } 353 GetMutiButtonPaddingVertical()354 const Dimension& GetMutiButtonPaddingVertical() const 355 { 356 return mutiButtonPaddingVertical_; 357 } 358 GetButtonSpacingHorizontal()359 const Dimension& GetButtonSpacingHorizontal() const 360 { 361 return buttonSpacingHorizontal_; 362 } 363 GetButtonSpacingVertical()364 const Dimension& GetButtonSpacingVertical() const 365 { 366 return buttonSpacingVertical_; 367 } 368 GetDividerLength()369 const Dimension& GetDividerLength() const 370 { 371 return dividerLength_; 372 } 373 GetDividerBetweenButtonWidth_()374 const Dimension& GetDividerBetweenButtonWidth_() const 375 { 376 return dividerBetweenButtonWidth_; 377 } 378 GetButtonBackgroundColor()379 const Color& GetButtonBackgroundColor() const 380 { 381 return buttonBackgroundColor_; 382 } 383 GetButtonClickedColor()384 const Color& GetButtonClickedColor() const 385 { 386 return buttonClickedColor_; 387 } 388 GetButtonHighlightBgColor()389 const Color& GetButtonHighlightBgColor() const 390 { 391 return buttonHighlightBgColor_; 392 } 393 GetButtonHighlightFontColor()394 const Color& GetButtonHighlightFontColor() const 395 { 396 return buttonHighlightFontColor_; 397 } 398 GetButtonDefaultBgColor()399 const Color& GetButtonDefaultBgColor() const 400 { 401 return buttonDefaultBgColor_; 402 } 403 GetButtonDefaultFontColor()404 const Color& GetButtonDefaultFontColor() const 405 { 406 return buttonDefaultFontColor_; 407 } 408 GetFrameStart()409 double GetFrameStart() const 410 { 411 return frameStart_; 412 } 413 GetFrameEnd()414 double GetFrameEnd() const 415 { 416 return frameEnd_; 417 } 418 GetScaleStart()419 double GetScaleStart() const 420 { 421 return scaleStart_; 422 } 423 GetScaleEnd()424 double GetScaleEnd() const 425 { 426 return scaleEnd_; 427 } 428 GetOpacityStart()429 double GetOpacityStart() const 430 { 431 return opacityStart_; 432 } 433 GetOpacityEnd()434 double GetOpacityEnd() const 435 { 436 return opacityEnd_; 437 } 438 GetTranslateValue()439 const Dimension& GetTranslateValue() const 440 { 441 return translateValue_; 442 } 443 GetMaskColorStart()444 const Color& GetMaskColorStart() const 445 { 446 return maskColorStart_; 447 } 448 GetMaskColorEnd()449 const Color& GetMaskColorEnd() const 450 { 451 return maskColorEnd_; 452 } 453 GetCommonButtonTextColor()454 const Color& GetCommonButtonTextColor() const 455 { 456 return commonButtonTextColor_; 457 } 458 GetEmphasizeButtonTextColor()459 const Color& GetEmphasizeButtonTextColor() const 460 { 461 return emphasizeButtonTextColor_; 462 } 463 GetOpacityAnimationDurIn()464 int32_t GetOpacityAnimationDurIn() const 465 { 466 return opacityAnimationDurIn_; 467 } 468 GetAnimationDurationIn()469 int32_t GetAnimationDurationIn() const 470 { 471 return animationDurationIn_; 472 } 473 GetAnimationDurationOut()474 int32_t GetAnimationDurationOut() const 475 { 476 return animationDurationOut_; 477 } 478 GetDividerColor()479 const Color& GetDividerColor() 480 { 481 return dividerColor_; 482 } 483 GetDividerWidth()484 const Dimension& GetDividerWidth() 485 { 486 return dividerWidth_; 487 } 488 GetDividerHeight()489 const Dimension& GetDividerHeight() 490 { 491 return dividerHeight_; 492 } 493 GetDividerPadding()494 const Edge& GetDividerPadding() 495 { 496 return dividerPadding_; 497 } 498 GetMarginBottom()499 const Dimension& GetMarginBottom() const 500 { 501 return marginBottom_; 502 } 503 GetMarginLeft()504 const Dimension& GetMarginLeft() const 505 { 506 return marginLeft_; 507 } 508 GetMarginRight()509 const Dimension& GetMarginRight() const 510 { 511 return marginRight_; 512 } 513 GetButtonHeight()514 const Dimension& GetButtonHeight() const 515 { 516 return buttonHeight_; 517 } 518 GetButtonTextSize()519 const Dimension& GetButtonTextSize() const 520 { 521 return buttonTextSize_; 522 } 523 GetMinButtonTextSize()524 const Dimension& GetMinButtonTextSize() const 525 { 526 return buttonMinTextSize_; 527 } 528 GetDefaultPaddingBottomFixed()529 const Dimension& GetDefaultPaddingBottomFixed() 530 { 531 return defaultPaddingBottomFixed_; 532 } 533 GetDefaultDialogMarginBottom()534 const Dimension& GetDefaultDialogMarginBottom() 535 { 536 return defaultDialogMarginBottom_; 537 } GetMultipleDialogDisplay()538 const std::string& GetMultipleDialogDisplay() 539 { 540 return multipleDialogDisplay_; 541 } 542 GetExpandDisplay()543 bool GetExpandDisplay() const 544 { 545 return expandDisplay_; 546 } 547 GetButtonWithContentPadding()548 const Dimension& GetButtonWithContentPadding() const 549 { 550 return buttonWithContentPadding_; 551 } 552 protected: 553 DialogTheme() = default; 554 555 private: 556 Radius radius_; 557 Color backgroundColor_; 558 TextStyle titleTextStyle_; 559 TextStyle subtitleTextStyle_; 560 TextStyle contentTextStyle_; 561 Dimension titleMinFontSize_; 562 Dimension contentMinFontSize_; 563 uint32_t titleMaxLines_ = 1; 564 Edge defaultPadding_; 565 Edge adjustPadding_; 566 Edge titleDefaultPadding_; 567 Edge titleAdjustPadding_; 568 Edge contentDefaultPadding_; 569 Edge contentAdjustPadding_; 570 Edge actionsPadding_; 571 Edge buttonPaddingLeft_; 572 Edge buttonPaddingRight_; 573 Edge buttonPaddingCenter_; 574 Dimension buttonSpacingHorizontal_; 575 Dimension buttonSpacingVertical_; 576 Dimension dividerLength_; 577 Dimension dividerBetweenButtonWidth_; 578 Color buttonBackgroundColor_; 579 Color buttonClickedColor_; 580 Color buttonHighlightBgColor_; 581 Color buttonHighlightFontColor_; 582 Color buttonDefaultBgColor_; 583 Color buttonDefaultFontColor_; 584 Color emphasizeButtonTextColor_; 585 Dimension translateValue_; 586 double frameStart_ = 0.0; 587 double frameEnd_ = 1.0; 588 double scaleStart_ = 0.0; 589 double scaleEnd_ = 1.0; 590 double opacityStart_ = 0.0; 591 double opacityEnd_ = 1.0; 592 int32_t animationDurationIn_ = 250; 593 int32_t opacityAnimationDurIn_ = 150; 594 int32_t animationDurationOut_ = 250; 595 Color maskColorStart_; 596 Color maskColorEnd_; 597 Color dividerColor_; 598 Color commonButtonBgColor_; 599 Color commonButtonTextColor_; 600 Color emphasizeButtonBgColor_; 601 Dimension dividerWidth_; 602 Dimension dividerHeight_; 603 Edge dividerPadding_; 604 Dimension marginLeft_; 605 Dimension marginRight_; 606 Dimension marginBottom_; 607 Dimension buttonHeight_; 608 Dimension buttonTextSize_; 609 Dimension buttonMinTextSize_; 610 Dimension minButtonWidth_; 611 Dimension maxButtonWidth_; 612 Dimension defaultPaddingBottomFixed_; 613 Dimension defaultDialogMarginBottom_; 614 Dimension buttonPaddingBottom_; 615 Dimension singleButtonPaddingStart_; 616 Dimension singleButtonPaddingEnd_; 617 Dimension mutiButtonPaddingStart_; 618 Dimension mutiButtonPaddingEnd_; 619 Dimension mutiButtonPaddingHorizontal_; 620 Dimension mutiButtonPaddingVertical_; 621 std::string multipleDialogDisplay_; 622 bool expandDisplay_ = false; 623 Dimension buttonWithContentPadding_; 624 }; 625 626 } // namespace OHOS::Ace 627 628 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DIALOG_DIALOG_THEME_H 629