From 182b9bdd20bf613138b3ef8382147a10a9fd3353 Mon Sep 17 00:00:00 2001 From: zhanghang Date: Wed, 25 Jun 2025 15:39:05 +0800 Subject: [PATCH] fix index: color Signed-off-by: zhanghang Change-Id: I89be7bc192a2370ec1612f2846544836c0088332 --- .../jsview/js_indicator.cpp | 7 +- .../declarative_frontend/jsview/js_swiper.cpp | 4 +- .../pattern/indexer/indexer_model_ng.cpp | 66 +++++++++++----- .../pattern/indexer/indexer_model_ng.h | 1 + .../pattern/list/list_item_group_model_ng.cpp | 4 + .../pattern/list/list_model_ng.cpp | 4 + .../pattern/scroll/scroll_model_ng.cpp | 14 ++-- .../pattern/swiper/swiper_model.h | 4 +- .../pattern/swiper/swiper_model_ng.cpp | 77 ++++++++++++------- .../pattern/swiper/swiper_model_ng.h | 5 +- .../indicator_common/indicator_pattern.cpp | 6 ++ .../pattern/tabs/tab_bar_pattern.cpp | 11 +++ .../pattern/tabs/tab_bar_pattern.h | 1 + .../pattern/tabs/tab_content_model_ng.cpp | 20 +++-- .../pattern/tabs/tabs_model_ng.cpp | 22 ++++-- .../native/node/node_indicator_modifier.cpp | 33 ++++---- .../native/node/node_swiper_modifier.cpp | 8 +- .../core/pattern/indexer/indexer_test_ng.cpp | 73 ++++++++++++++++++ .../swiper/swiper_indicator_model_test_ng.cpp | 1 + 19 files changed, 271 insertions(+), 90 deletions(-) diff --git a/frameworks/bridge/declarative_frontend/jsview/js_indicator.cpp b/frameworks/bridge/declarative_frontend/jsview/js_indicator.cpp index 4d095d5003a..2b1dbb41626 100644 --- a/frameworks/bridge/declarative_frontend/jsview/js_indicator.cpp +++ b/frameworks/bridge/declarative_frontend/jsview/js_indicator.cpp @@ -252,9 +252,12 @@ void JSIndicator::SetDotIndicatorInfo(const JSRef& obj, SwiperParamete RefPtr resColorObj; RefPtr resSelectedColorObj; auto parseOk = ParseJsColor(colorValue, colorVal, resColorObj); - swiperParameters.colorVal = parseOk ? colorVal : swiperIndicatorTheme->GetColor(); + swiperParameters.colorVal = parseOk ? (swiperParameters.parametersByUser.insert("colorVal"), colorVal) + : swiperIndicatorTheme->GetColor(); parseOk = ParseJsColor(selectedColorValue, colorVal, resSelectedColorObj); - swiperParameters.selectedColorVal = parseOk ? colorVal : swiperIndicatorTheme->GetSelectedColor(); + swiperParameters.selectedColorVal = parseOk + ? (swiperParameters.parametersByUser.insert("selectedColorVal"), colorVal) + : swiperIndicatorTheme->GetSelectedColor(); if (SystemProperties::ConfigChangePerform()) { swiperParameters.resourceColorValueObject = resColorObj; swiperParameters.resourceSelectedColorValueObject = resSelectedColorObj; diff --git a/frameworks/bridge/declarative_frontend/jsview/js_swiper.cpp b/frameworks/bridge/declarative_frontend/jsview/js_swiper.cpp index 77c4dc6d520..a9704fdbb40 100644 --- a/frameworks/bridge/declarative_frontend/jsview/js_swiper.cpp +++ b/frameworks/bridge/declarative_frontend/jsview/js_swiper.cpp @@ -1127,7 +1127,7 @@ void JSSwiper::SetPreviousMargin(const JSCallbackInfo& info) } SwiperModel::GetInstance()->SetPreviousMargin(value, ignoreBlank); if (SystemProperties::ConfigChangePerform()) { - SwiperModel::GetInstance()->ProcessPreviousMarginwithResourceObj(resObj); + SwiperModel::GetInstance()->ProcessPreviousMarginWithResourceObj(resObj); } } @@ -1149,7 +1149,7 @@ void JSSwiper::SetNextMargin(const JSCallbackInfo& info) } SwiperModel::GetInstance()->SetNextMargin(value, ignoreBlank); if (SystemProperties::ConfigChangePerform()) { - SwiperModel::GetInstance()->ProcessNextMarginwithResourceObj(resObj); + SwiperModel::GetInstance()->ProcessNextMarginWithResourceObj(resObj); } } diff --git a/frameworks/core/components_ng/pattern/indexer/indexer_model_ng.cpp b/frameworks/core/components_ng/pattern/indexer/indexer_model_ng.cpp index c950ea4f17a..874e8cd6039 100644 --- a/frameworks/core/components_ng/pattern/indexer/indexer_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/indexer/indexer_model_ng.cpp @@ -314,13 +314,18 @@ void IndexerModelNG::SetCreatChangeEvent(std::function -void ParseType(std::string type, const RefPtr& resObj, T& result, Args... args) +void ParseType( + RefPtr frameNode, std::string type, const RefPtr& resObj, T& result, Args... args) { + CHECK_NULL_VOID(frameNode); if constexpr (std::is_same_v>) { Color color; + bool setByUser = false; if (ResourceParseUtils::ParseResColor(resObj, color)) { result = color; + setByUser = true; } + IndexerModelNG::ChangeFlagForSetByUser(AceType::RawPtr(frameNode), type, setByUser); } else if constexpr (std::is_same_v && sizeof...(Args) == 1) { auto tuple = std::make_tuple(args...); DimensionUnit unit = std::get<0>(tuple); @@ -366,6 +371,29 @@ void FontSizeParseFail(std::string type, const RefPtr& frameNode, T& } } +void IndexerModelNG::ChangeFlagForSetByUser(FrameNode* frameNode, std::string type, bool setByUser) +{ + if (type == "Color") { + SetColorByUser(frameNode, setByUser); + } else if (type == "PopupColor") { + SetPopupColorByUser(frameNode, setByUser); + } else if (type == "SelectedBackgroundColor") { + SetSelectedBGColorByUser(frameNode, setByUser); + } else if (type == "PopupUnselectedColor") { + SetPopupUnselectedColorByUser(frameNode, setByUser); + } else if (type == "PopupTitleBackground") { + SetPopupTitleBackgroundByUser(frameNode, setByUser); + } else if (type == "PopupSelectedColor") { + SetPopupSelectedColorByUser(frameNode, setByUser); + } else if (type == "PopupItemBackground") { + SetPopupItemBackgroundByUser(frameNode, setByUser); + } else if (type == "PopupBackground") { + SetPopupBackgroundByUser(frameNode, setByUser); + } else if (type == "SelectedColor") { + SetSelectedColorByUser(frameNode, setByUser); + } +} + #define UPDATE_VALUE(type, name, resObj, resultType, ...) \ case type: \ do { \ @@ -393,7 +421,7 @@ void FontSizeParseFail(std::string type, const RefPtr& frameNode, T& auto frameNode = weak.Upgrade(); \ CHECK_NULL_VOID(frameNode); \ resultType result; \ - ParseType(#name, resObj, result, ##__VA_ARGS__); \ + ParseType(frameNode, #name, resObj, result, ##__VA_ARGS__); \ FontSizeParseFail(#name, frameNode, result); \ IndexerModelNG::Set##name(AceType::RawPtr(frameNode), result); \ }; \ @@ -415,26 +443,26 @@ void FontSizeParseFail(std::string type, const RefPtr& frameNode, T& } while (false); \ break -#define REGISTER_RESOURCE_FONT_UPDATE_FUNC(frameNode, fontType, name, resObj, resultType, ...) \ - do { \ - CHECK_NULL_BREAK(frameNode); \ - auto pattern = frameNode->GetPattern(); \ - CHECK_NULL_BREAK(pattern); \ - pattern->RemoveResObj("indexer." #fontType #name); \ - CHECK_NULL_VOID(resObj); \ - CHECK_NULL_BREAK(SystemProperties::ConfigChangePerform()); \ +#define REGISTER_RESOURCE_FONT_UPDATE_FUNC(frameNode, fontType, name, resObj, resultType, ...) \ + do { \ + CHECK_NULL_BREAK(frameNode); \ + auto pattern = frameNode->GetPattern(); \ + CHECK_NULL_BREAK(pattern); \ + pattern->RemoveResObj("indexer." #fontType #name); \ + CHECK_NULL_VOID(resObj); \ + CHECK_NULL_BREAK(SystemProperties::ConfigChangePerform()); \ auto&& updateFunc = [weak = AceType::WeakClaim(frameNode)](const RefPtr& resObj) { \ auto frameNode = weak.Upgrade(); \ CHECK_NULL_VOID(frameNode); \ - resultType result; \ - ParseType(#name, resObj, result, ##__VA_ARGS__); \ - TextStyle textStyle; \ - FontSizeParseFail(#fontType #name, frameNode, result); \ - ACE_GET_NODE_LAYOUT_PROPERTY(IndexerLayoutProperty, fontType, textStyle, frameNode); \ - textStyle.SetFont##name(result); \ - ACE_UPDATE_NODE_LAYOUT_PROPERTY(IndexerLayoutProperty, fontType, textStyle, frameNode); \ - }; \ - pattern->AddResObj("indexer." #fontType #name, resObj, std::move(updateFunc)); \ + resultType result; \ + ParseType(frameNode, #name, resObj, result, ##__VA_ARGS__); \ + TextStyle textStyle; \ + FontSizeParseFail(#fontType #name, frameNode, result); \ + ACE_GET_NODE_LAYOUT_PROPERTY(IndexerLayoutProperty, fontType, textStyle, frameNode); \ + textStyle.SetFont##name(result); \ + ACE_UPDATE_NODE_LAYOUT_PROPERTY(IndexerLayoutProperty, fontType, textStyle, frameNode); \ + }; \ + pattern->AddResObj("indexer." #fontType #name, resObj, std::move(updateFunc)); \ } while (false) void IndexerModelNG::CreateWithResourceObj(IndexerJsResourceType jsType, const RefPtr& resObj) diff --git a/frameworks/core/components_ng/pattern/indexer/indexer_model_ng.h b/frameworks/core/components_ng/pattern/indexer/indexer_model_ng.h index c312337628c..f8700610c81 100644 --- a/frameworks/core/components_ng/pattern/indexer/indexer_model_ng.h +++ b/frameworks/core/components_ng/pattern/indexer/indexer_model_ng.h @@ -136,6 +136,7 @@ public: static void RemovePopupSelectedColor(FrameNode* frameNode); static void RemovePopupItemBackground(FrameNode* frameNode); static void RemovePopupTitleBackground(FrameNode* frameNode); + static void ChangeFlagForSetByUser(FrameNode* frameNode, std::string type, bool setByUser); }; } // namespace OHOS::Ace::NG #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_INDEXER_INDEXER_MODEL_NG_H diff --git a/frameworks/core/components_ng/pattern/list/list_item_group_model_ng.cpp b/frameworks/core/components_ng/pattern/list/list_item_group_model_ng.cpp index fbc7a197c98..c4af1e34818 100644 --- a/frameworks/core/components_ng/pattern/list/list_item_group_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/list/list_item_group_model_ng.cpp @@ -277,8 +277,10 @@ void ListItemGroupModelNG::ParseResObjDividerColor(const RefPtr& if (listTheme) { divider.color = listTheme->GetDividerColor(); } + ListItemGroupModelNG::SetDividerColorByUser(AceType::RawPtr(frameNode), false); } else { divider.color = result; + ListItemGroupModelNG::SetDividerColorByUser(AceType::RawPtr(frameNode), true); } ACE_UPDATE_NODE_LAYOUT_PROPERTY(ListItemGroupLayoutProperty, Divider, divider, frameNode); }; @@ -366,8 +368,10 @@ void ListItemGroupModelNG::ParseResObjDividerColor(FrameNode* frameNode, const R if (listTheme) { divider.color = listTheme->GetDividerColor(); } + ListItemGroupModelNG::SetDividerColorByUser(AceType::RawPtr(frameNode), false); } else { divider.color = result; + ListItemGroupModelNG::SetDividerColorByUser(AceType::RawPtr(frameNode), true); } ACE_UPDATE_NODE_LAYOUT_PROPERTY(ListItemGroupLayoutProperty, Divider, divider, frameNode); }; diff --git a/frameworks/core/components_ng/pattern/list/list_model_ng.cpp b/frameworks/core/components_ng/pattern/list/list_model_ng.cpp index e6b55d28d0d..9a523b63c68 100644 --- a/frameworks/core/components_ng/pattern/list/list_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/list/list_model_ng.cpp @@ -1276,8 +1276,10 @@ void ListModelNG::ParseResObjDividerColor(const RefPtr& resObj) if (listTheme) { divider.color = listTheme->GetDividerColor(); } + ListModelNG::SetDividerColorByUser(AceType::RawPtr(frameNode), false); } else { divider.color = result; + ListModelNG::SetDividerColorByUser(AceType::RawPtr(frameNode), true); } divider.color = result; ACE_UPDATE_NODE_LAYOUT_PROPERTY(ListLayoutProperty, Divider, divider, frameNode); @@ -1387,8 +1389,10 @@ void ListModelNG::ParseResObjDividerColor(FrameNode* frameNode, const RefPtrGetDividerColor(); } + ListModelNG::SetDividerColorByUser(AceType::RawPtr(frameNode), false); } else { divider.color = result; + ListModelNG::SetDividerColorByUser(AceType::RawPtr(frameNode), true); } divider.color = result; ACE_UPDATE_NODE_LAYOUT_PROPERTY(ListLayoutProperty, Divider, divider, frameNode); diff --git a/frameworks/core/components_ng/pattern/scroll/scroll_model_ng.cpp b/frameworks/core/components_ng/pattern/scroll/scroll_model_ng.cpp index 2b43fc167c7..cb59c123540 100644 --- a/frameworks/core/components_ng/pattern/scroll/scroll_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/scroll/scroll_model_ng.cpp @@ -654,7 +654,7 @@ bool ScrollModelNG::CheckSnapPaginations(const std::vector& snapPagin bool ScrollModelNG::HasResObj(const std::vector>& resObjs) { - for (unsigned long i = 0; i < resObjs.size(); ++i) { + for (size_t i = 0; i < resObjs.size(); ++i) { CHECK_NULL_CONTINUE(resObjs[i]); return true; } @@ -667,7 +667,7 @@ void ScrollModelNG::CreateWithResourceObjSnapPaginations(std::vectorGetPattern(); CHECK_NULL_VOID(pattern); - pattern->RemoveResObj("ScrollIntervalSize"); + pattern->RemoveResObj("ScrollSnapPaginations"); CHECK_NULL_VOID (HasResObj(resObjs)); auto&& updateFunc = [weak = AceType::WeakClaim(AceType::RawPtr(pattern)), resObjs]( const RefPtr& resObj) { @@ -675,7 +675,7 @@ void ScrollModelNG::CreateWithResourceObjSnapPaginations(std::vector snapPaginations = pattern->GetKeepSnapPaginations(); CHECK_NULL_VOID(snapPaginations.size() == resObjs.size()); - for (unsigned long i = 0; i < resObjs.size(); ++i) { + for (size_t i = 0; i < resObjs.size(); ++i) { CHECK_NULL_CONTINUE(resObjs[i]); CalcDimension snapPagination; if (ResourceParseUtils::ParseResDimensionVp(resObjs[i], snapPagination)) { @@ -691,7 +691,7 @@ void ScrollModelNG::CreateWithResourceObjSnapPaginations(std::vectorSetSnapPaginations(snapPaginations); }; RefPtr resObj = AceType::MakeRefPtr("", "", -1); - pattern->AddResObj("ScrollIntervalSize", resObj, std::move(updateFunc)); + pattern->AddResObj("ScrollSnapPaginations", resObj, std::move(updateFunc)); } void ScrollModelNG::CreateWithResourceObjSnapPaginations( @@ -700,7 +700,7 @@ void ScrollModelNG::CreateWithResourceObjSnapPaginations( CHECK_NULL_VOID(frameNode); auto pattern = frameNode->GetPattern(); CHECK_NULL_VOID(pattern); - pattern->RemoveResObj("ScrollIntervalSize"); + pattern->RemoveResObj("ScrollSnapPaginations"); CHECK_NULL_VOID(HasResObj(resObjs)); auto&& updateFunc = [weak = AceType::WeakClaim(AceType::RawPtr(pattern)), resObjs]( const RefPtr& resObj) { @@ -708,7 +708,7 @@ void ScrollModelNG::CreateWithResourceObjSnapPaginations( CHECK_NULL_VOID(pattern); std::vector snapPaginations = pattern->GetKeepSnapPaginations(); CHECK_NULL_VOID(snapPaginations.size() == resObjs.size()); - for (unsigned long i = 0; i < resObjs.size(); ++i) { + for (size_t i = 0; i < resObjs.size(); ++i) { CHECK_NULL_CONTINUE(resObjs[i]); CalcDimension snapPagination; if (ResourceParseUtils::ParseResDimensionVp(resObjs[i], snapPagination)) { @@ -724,7 +724,7 @@ void ScrollModelNG::CreateWithResourceObjSnapPaginations( pattern->SetSnapPaginations(snapPaginations); }; RefPtr resObj = AceType::MakeRefPtr("", "", -1); - pattern->AddResObj("ScrollIntervalSize", resObj, std::move(updateFunc)); + pattern->AddResObj("ScrollSnapPaginations", resObj, std::move(updateFunc)); } } // namespace OHOS::Ace::NG diff --git a/frameworks/core/components_ng/pattern/swiper/swiper_model.h b/frameworks/core/components_ng/pattern/swiper/swiper_model.h index a8ab01815c6..9bd9d3a635d 100644 --- a/frameworks/core/components_ng/pattern/swiper/swiper_model.h +++ b/frameworks/core/components_ng/pattern/swiper/swiper_model.h @@ -220,8 +220,8 @@ public: virtual void SetIndicatorController(Framework::JSIndicatorController* controller) {} virtual Framework::JSIndicatorController* GetIndicatorController() { return nullptr; } virtual void SetMaintainVisibleContentPosition(bool value) {} - virtual void ProcessNextMarginwithResourceObj(const RefPtr& resObj) {} - virtual void ProcessPreviousMarginwithResourceObj(const RefPtr& resObj) {}; + virtual void ProcessNextMarginWithResourceObj(const RefPtr& resObj) {} + virtual void ProcessPreviousMarginWithResourceObj(const RefPtr& resObj) {}; private: static std::unique_ptr instance_; diff --git a/frameworks/core/components_ng/pattern/swiper/swiper_model_ng.cpp b/frameworks/core/components_ng/pattern/swiper/swiper_model_ng.cpp index 818b0b30d4b..2aebb862748 100644 --- a/frameworks/core/components_ng/pattern/swiper/swiper_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/swiper/swiper_model_ng.cpp @@ -1333,14 +1333,17 @@ void SwiperModelNG::ProcessDotColorWithResourceObj(FrameNode* frameNode, const s CHECK_NULL_VOID(pattern); Color result; bool parseOk = ResourceParseUtils::ParseResColor(theObj, result); + auto param = pattern->GetSwiperParameters(); if (!parseOk) { + param->parametersByUser.erase(name); auto pipelineContext = PipelineBase::GetCurrentContext(); CHECK_NULL_VOID(pipelineContext); auto theme = pipelineContext->GetTheme(); CHECK_NULL_VOID(theme); result = name == "colorVal" ? theme->GetColor() : theme->GetSelectedColor(); + } else { + param->parametersByUser.insert(name); } - auto param = pattern->GetSwiperParameters(); name == "colorVal" ? param->colorVal = result : param->selectedColorVal = result; }; pattern->AddResObj("swiper." + name, resObj, std::move(updateFunc)); @@ -1429,14 +1432,17 @@ void SwiperModelNG::ProcessDigitalColorWithResourceObj(FrameNode* frameNode, con CHECK_NULL_VOID(pattern); Color result; bool parseOk = ResourceParseUtils::ParseResColor(theObj, result); + auto params = pattern->GetSwiperDigitalParameters(); if (!parseOk) { + params->parametersByUser.erase(name); auto pipelineContext = PipelineBase::GetCurrentContext(); CHECK_NULL_VOID(pipelineContext); auto theme = pipelineContext->GetTheme(); CHECK_NULL_VOID(theme); result = theme->GetDigitalIndicatorTextStyle().GetTextColor(); + } else { + params->parametersByUser.insert(name); } - auto params = pattern->GetSwiperDigitalParameters(); if (name == "fontColor") { params->fontColor = result; } else if (name == "selectedFontColor") { @@ -1462,12 +1468,15 @@ void SwiperModelNG::ProcessArrowColorWithResourceObj(FrameNode* frameNode, const CHECK_NULL_VOID(pattern); Color result; bool parseOk = ResourceParseUtils::ParseResColor(theObj, result); + auto param = pattern->GetSwiperArrowParameters(); if (!parseOk) { - auto param = pattern->GetSwiperArrowParameters(); + param->parametersByUser.erase("arrowColor"); auto pipelineContext = PipelineBase::GetCurrentContext(); CHECK_NULL_VOID(pipelineContext); auto theme = pipelineContext->GetTheme(); result = param->isSidebarMiddle.value() ? theme->GetBigArrowColor() : theme->GetSmallArrowColor(); + } else { + param->parametersByUser.insert("arrowColor"); } ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, ArrowColor, result, node); }; @@ -1491,13 +1500,16 @@ void SwiperModelNG::ProcessArrowBackgroundColorWithResourceObj(FrameNode* frameN CHECK_NULL_VOID(pattern); Color result; bool parseOk = ResourceParseUtils::ParseResColor(theObj, result); + auto param = pattern->GetSwiperArrowParameters(); if (!parseOk) { - auto param = pattern->GetSwiperArrowParameters(); + param->parametersByUser.erase("backgroundColor"); auto pipelineContext = PipelineBase::GetCurrentContext(); CHECK_NULL_VOID(pipelineContext); auto theme = pipelineContext->GetTheme(); result = param->isSidebarMiddle.value() ? theme->GetBigArrowBackgroundColor() : theme->GetSmallArrowBackgroundColor(); + } else { + param->parametersByUser.insert("backgroundColor"); } ACE_UPDATE_NODE_LAYOUT_PROPERTY(SwiperLayoutProperty, BackgroundColor, result, node); }; @@ -1590,7 +1602,7 @@ void SwiperModelNG::ProcessBackgroundSizeWithResourceObj(FrameNode* frameNode, c } } -void SwiperModelNG::ProcessNextMarginwithResourceObj(const RefPtr& resObj) +void SwiperModelNG::ProcessNextMarginWithResourceObj(const RefPtr& resObj) { auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode(); CHECK_NULL_VOID(frameNode); @@ -1615,7 +1627,7 @@ void SwiperModelNG::ProcessNextMarginwithResourceObj(const RefPtr& resObj) +void SwiperModelNG::ProcessPreviousMarginWithResourceObj(const RefPtr& resObj) { auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode(); CHECK_NULL_VOID(frameNode); @@ -1640,6 +1652,38 @@ void SwiperModelNG::ProcessPreviousMarginwithResourceObj(const RefPtr& resObj) +{ + CHECK_NULL_VOID(frameNode); + auto pattern = frameNode->GetPattern(); + CHECK_NULL_VOID(pattern); + if (resObj) { + auto&& updateFunc = [weak = AceType::WeakClaim(frameNode)](const RefPtr& resObj) { + auto node = weak.Upgrade(); + CHECK_NULL_VOID(node); + auto pattern = node->GetPattern(); + CHECK_NULL_VOID(pattern); + CalcDimension result; + if (!ResourceParseUtils::ParseResDimensionVpNG(resObj, result) || + result.Unit() == DimensionUnit::PERCENT || LessNotEqual(result.Value(), 0.0)) { + auto pipelineContext = PipelineBase::GetCurrentContext(); + CHECK_NULL_VOID(pipelineContext); + auto swiperIndicatorTheme = pipelineContext->GetTheme(); + CHECK_NULL_VOID(swiperIndicatorTheme); + result = swiperIndicatorTheme->GetSize(); + } + auto params = pattern->GetSwiperParameters(); + params->itemWidth = result; + params->itemHeight = result; + params->selectedItemWidth = result; + params->selectedItemHeight = result; + }; + pattern->AddResObj("swiper.ItemSize", resObj, std::move(updateFunc)); + } else { + pattern->RemoveResObj("swiper.ItemSize"); + } +} + void SwiperModelNG::CreateDotWithResourceObj(FrameNode* frameNode, const SwiperParameters& swiperParameters) { CHECK_NULL_VOID(frameNode); @@ -1666,26 +1710,7 @@ void SwiperModelNG::CreateDotWithResourceObj(FrameNode* frameNode, const SwiperP resObj = swiperParameters.resourceDimBottomValueObject; ProcessDotPositionWithResourceObj(frameNode, "dimBottom", resObj); resObj = swiperParameters.resourceItemSizeValueObject; - if (resObj) { - auto&& updateFunc = [weak = AceType::WeakClaim(frameNode)](const RefPtr& resObj) { - auto node = weak.Upgrade(); - CHECK_NULL_VOID(node); - auto pattern = node->GetPattern(); - CHECK_NULL_VOID(pattern); - CalcDimension result; - if (!ResourceParseUtils::ParseResDimensionVpNG(resObj, result) || LessNotEqual(result.Value(), 0.0)) { - result.SetValue(0.0); - } - auto params = pattern->GetSwiperParameters(); - params->itemWidth = result; - params->itemHeight = result; - params->selectedItemWidth = result; - params->selectedItemHeight = result; - }; - pattern->AddResObj("swiper.ItemSize", resObj, std::move(updateFunc)); - } else { - pattern->RemoveResObj("swiper.ItemSize"); - } + ProcessDotStyleSizeWithResourceObj(frameNode, resObj); } void SwiperModelNG::CreateDigitWithResourceObj(FrameNode* frameNode, diff --git a/frameworks/core/components_ng/pattern/swiper/swiper_model_ng.h b/frameworks/core/components_ng/pattern/swiper/swiper_model_ng.h index 8255b9d6ceb..1507ce9a6a2 100644 --- a/frameworks/core/components_ng/pattern/swiper/swiper_model_ng.h +++ b/frameworks/core/components_ng/pattern/swiper/swiper_model_ng.h @@ -92,8 +92,8 @@ public: void SetDigitalCrownSensitivity(int32_t sensitivity) override; void SetOnSelected(std::function&& onSelected) override; void SetMaintainVisibleContentPosition(bool value) override; - void ProcessNextMarginwithResourceObj(const RefPtr& resObj) override; - void ProcessPreviousMarginwithResourceObj(const RefPtr& resObj) override; + void ProcessNextMarginWithResourceObj(const RefPtr& resObj) override; + void ProcessPreviousMarginWithResourceObj(const RefPtr& resObj) override; static RefPtr CreateFrameNode(int32_t nodeId); static void SetIndicatorInteractive(FrameNode* frameNode, bool interactive); static void SetNextMargin(FrameNode* frameNode, const Dimension& nextMargin, bool ignoreBlankn = false); @@ -181,6 +181,7 @@ public: const RefPtr& resObj); static void ProcessDotSizeWithResourceObj(FrameNode* frameNode, const std::string& name, const RefPtr& resObj); + static void ProcessDotStyleSizeWithResourceObj(FrameNode* frameNode, const RefPtr& resObj); static void ProcessDotColorWithResourceObj(FrameNode* frameNode, const std::string& name, const RefPtr& resObj); static void ProcessDigitalPositionWithResourceObj(FrameNode* frameNode, const std::string& name, diff --git a/frameworks/core/components_ng/pattern/swiper_indicator/indicator_common/indicator_pattern.cpp b/frameworks/core/components_ng/pattern/swiper_indicator/indicator_common/indicator_pattern.cpp index 764fa5d829a..18ec504b190 100644 --- a/frameworks/core/components_ng/pattern/swiper_indicator/indicator_common/indicator_pattern.cpp +++ b/frameworks/core/components_ng/pattern/swiper_indicator/indicator_common/indicator_pattern.cpp @@ -653,6 +653,12 @@ void IndicatorPattern::UpdateDefaultColor() swiperDigitalParameters_->selectedFontColor = swiperIndicatorTheme->GetDigitalIndicatorTextStyle().GetTextColor(); } + if (swiperParameters_ && !swiperParameters_->parametersByUser.count("colorVal")) { + swiperParameters_->colorVal = swiperIndicatorTheme->GetColor(); + } + if (swiperParameters_ && !swiperParameters_->parametersByUser.count("selectedColorVal")) { + swiperParameters_->selectedColorVal = swiperIndicatorTheme->GetSelectedColor(); + } } void IndicatorPattern::OnColorModeChange(uint32_t colorMode) diff --git a/frameworks/core/components_ng/pattern/tabs/tab_bar_pattern.cpp b/frameworks/core/components_ng/pattern/tabs/tab_bar_pattern.cpp index aec3a439819..d24d3ca7a1e 100644 --- a/frameworks/core/components_ng/pattern/tabs/tab_bar_pattern.cpp +++ b/frameworks/core/components_ng/pattern/tabs/tab_bar_pattern.cpp @@ -3749,4 +3749,15 @@ void TabBarPattern::ChangeIndex(int32_t index) } HandleClick(SourceType::NONE, index); } + +void TabBarPattern::OnColorModeChange(uint32_t colorMode) +{ + CHECK_NULL_VOID(SystemProperties::ConfigChangePerform()); + Pattern::OnColorModeChange(colorMode); + auto host = GetHost(); + CHECK_NULL_VOID(host); + auto layoutProperty = host->GetLayoutProperty(); + CHECK_NULL_VOID(layoutProperty); + jumpIndex_ = layoutProperty->GetIndicatorValue(0); +} } // namespace OHOS::Ace::NG diff --git a/frameworks/core/components_ng/pattern/tabs/tab_bar_pattern.h b/frameworks/core/components_ng/pattern/tabs/tab_bar_pattern.h index ca5ba23ddff..c329e6605f2 100644 --- a/frameworks/core/components_ng/pattern/tabs/tab_bar_pattern.h +++ b/frameworks/core/components_ng/pattern/tabs/tab_bar_pattern.h @@ -566,6 +566,7 @@ public: void ChangeIndex(int32_t index); void ResetOnForceMeasure(int32_t index); + void OnColorModeChange(uint32_t colorMode) override; private: void OnModifyDone() override; diff --git a/frameworks/core/components_ng/pattern/tabs/tab_content_model_ng.cpp b/frameworks/core/components_ng/pattern/tabs/tab_content_model_ng.cpp index b7aa009343f..c2dec1a954e 100644 --- a/frameworks/core/components_ng/pattern/tabs/tab_content_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/tabs/tab_content_model_ng.cpp @@ -559,7 +559,17 @@ template bool ParseType(const RefPtr& resObj, const std::string& name, T& result) { if constexpr (std::is_same_v) { - return ResourceParseUtils::ParseResColor(resObj, result); + if (!ResourceParseUtils::ParseResColor(resObj, result)) { + auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode(); + CHECK_NULL_RETURN(frameNode, false); + auto pipelineContext = frameNode->GetContext(); + CHECK_NULL_RETURN(pipelineContext, false); + auto tabTheme = pipelineContext->GetTheme(); + CHECK_NULL_RETURN(tabTheme, false); + result = tabTheme->GetActiveIndicatorColor(); + return false; + } + return true; } else if constexpr (std::is_same_v>) { if (name == "selectedColor" || name == "unselectedColor") { Color color; @@ -661,9 +671,9 @@ void TabContentModelNG::CreateWithResourceObj(TabContentJsType jsType, const Ref REGISTER_RESOURCE_UPDATE_ATTR_FUNC( TabContentJsType::LABEL_UNSELECT_COLOR, LabelStyle, unselectedColor, resObj, std::optional); REGISTER_RESOURCE_UPDATE_ATTR_FUNC( - TabContentJsType::ICON_SELECT_COLOR, IconStyle, selectedColor, resObj, Color); + TabContentJsType::ICON_SELECT_COLOR, IconStyle, selectedColor, resObj, std::optional); REGISTER_RESOURCE_UPDATE_ATTR_FUNC( - TabContentJsType::ICON_UNSELECT_COLOR, IconStyle, unselectedColor, resObj, Color); + TabContentJsType::ICON_UNSELECT_COLOR, IconStyle, unselectedColor, resObj, std::optional); default: CreateMoreWithResourceObj(jsType, frameNode, resObj); break; @@ -965,7 +975,7 @@ bool TabContentModelNG::CreateBoardStyleBorderRadiusWithResourceObj(FrameNode* f auto pattern = frameNode->GetPattern(); CHECK_NULL_VOID(pattern); CalcDimension result; - auto attrs = pattern->GetIndicatorStyle(); + auto attrs = pattern->GetBoardStyle(); if (!ParseType(resObj, "borderRadius", result) || result.Value() < 0.0f || result.Unit() == DimensionUnit::PERCENT) { auto pipelineContext = frameNode->GetContext(); @@ -976,7 +986,7 @@ bool TabContentModelNG::CreateBoardStyleBorderRadiusWithResourceObj(FrameNode* f } else { attrs.borderRadius = result; } - pattern->SetIndicatorStyle(attrs); + pattern->SetBoardStyle(attrs); }; pattern->AddResObj(key, resObj, std::move(updateFunc)); return true; diff --git a/frameworks/core/components_ng/pattern/tabs/tabs_model_ng.cpp b/frameworks/core/components_ng/pattern/tabs/tabs_model_ng.cpp index 1da8620e4e2..20203ae3541 100644 --- a/frameworks/core/components_ng/pattern/tabs/tabs_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/tabs/tabs_model_ng.cpp @@ -1456,13 +1456,15 @@ void TabsModelNG::HandleBarGridGutter(FrameNode* frameNode, const RefPtr(tabsNode->GetTabBar()); CHECK_NULL_VOID(tabBarNode); CalcDimension result; - BarGridColumnOptions columnOption; - ACE_GET_NODE_LAYOUT_PROPERTY(TabBarLayoutProperty, BarGridAlign, columnOption, tabBarNode); + BarGridColumnOptions tempUsed; if (ResourceParseUtils::ParseResDimensionVp(resObj, result) && NonNegative(result.Value()) && result.Unit() != DimensionUnit::PERCENT) { - columnOption.gutter = result; - ACE_UPDATE_NODE_LAYOUT_PROPERTY(TabBarLayoutProperty, BarGridAlign, columnOption, tabBarNode); + tempUsed.gutter = result; } + BarGridColumnOptions columnOption; + ACE_GET_NODE_LAYOUT_PROPERTY(TabBarLayoutProperty, BarGridAlign, columnOption, tabBarNode); + columnOption.gutter = tempUsed.gutter; + ACE_UPDATE_NODE_LAYOUT_PROPERTY(TabBarLayoutProperty, BarGridAlign, columnOption, tabBarNode); }; pattern->AddResObj(key, resObj, std::move(updateFunc)); } @@ -1482,13 +1484,15 @@ void TabsModelNG::HandleBarGridMargin(FrameNode* frameNode, const RefPtr(tabsNode->GetTabBar()); CHECK_NULL_VOID(tabBarNode); CalcDimension result; - BarGridColumnOptions columnOption; - ACE_GET_NODE_LAYOUT_PROPERTY(TabBarLayoutProperty, BarGridAlign, columnOption, tabBarNode); + BarGridColumnOptions tempUsed; if (ResourceParseUtils::ParseResDimensionVp(resObj, result) && NonNegative(result.Value()) && result.Unit() != DimensionUnit::PERCENT) { - columnOption.margin = result; - ACE_UPDATE_NODE_LAYOUT_PROPERTY(TabBarLayoutProperty, BarGridAlign, columnOption, tabBarNode); + tempUsed.margin = result; } + BarGridColumnOptions columnOption; + ACE_GET_NODE_LAYOUT_PROPERTY(TabBarLayoutProperty, BarGridAlign, columnOption, tabBarNode); + columnOption.margin = tempUsed.margin; + ACE_UPDATE_NODE_LAYOUT_PROPERTY(TabBarLayoutProperty, BarGridAlign, columnOption, tabBarNode); }; pattern->AddResObj(key, resObj, std::move(updateFunc)); } @@ -1545,12 +1549,14 @@ void TabsModelNG::HandleDividerColor(FrameNode* frameNode, const RefPtrGetTheme(); CHECK_NULL_VOID(tabTheme); divider.color = tabTheme->GetDividerColor(); + TabsModelNG::SetDividerColorByUser(AceType::RawPtr(node), false); } TabsModelNG::SetDivider(AceType::RawPtr(node), divider); tabsPattern->UpdateDividerColor(); diff --git a/frameworks/core/interfaces/native/node/node_indicator_modifier.cpp b/frameworks/core/interfaces/native/node/node_indicator_modifier.cpp index 0bbe5bf70fd..b5adbf46fab 100644 --- a/frameworks/core/interfaces/native/node/node_indicator_modifier.cpp +++ b/frameworks/core/interfaces/native/node/node_indicator_modifier.cpp @@ -195,6 +195,20 @@ void SetItem4GetDotIndicatorInfo( } } +void InitIndicatorParametersWithResObj(SwiperParameters& indicatorParameters, const void* resObjs) +{ + CHECK_NULL_VOID(SystemProperties::ConfigChangePerform()); + auto resourceObjs = *(static_cast>*>(resObjs)); + indicatorParameters.resourceItemWidthValueObject = resourceObjs.at(DOT_INDICATOR_RESOURCE_ITEM_WIDTH); + indicatorParameters.resourceItemHeightValueObject = resourceObjs.at(DOT_INDICATOR_RESOURCE_ITEM_HEIGHT); + indicatorParameters.resourceSelectedItemWidthValueObject = + resourceObjs.at(DOT_INDICATOR_RESOURCE_SELECTED_ITEM_WIDTH); + indicatorParameters.resourceSelectedItemHeightValueObject = + resourceObjs.at(DOT_INDICATOR_RESOURCE_SELECTED_ITEM_HEIGHT); + indicatorParameters.resourceColorValueObject = resourceObjs.at(DOT_INDICATOR_RESOURCE_COLOR); + indicatorParameters.resourceSelectedColorValueObject = resourceObjs.at(DOT_INDICATOR_RESOURCE_SELECTED_COLOR); +} + SwiperParameters GetDotIndicatorInfo(FrameNode* frameNode, const std::vector& dotIndicatorInfo, const void* resObjs) { @@ -223,9 +237,12 @@ SwiperParameters GetDotIndicatorInfo(FrameNode* frameNode, const std::vectorGetColor(); + indicatorParameters.colorVal = parseOk ? (indicatorParameters.parametersByUser.insert("colorVal"), colorVal) + : swiperIndicatorTheme->GetColor(); parseOk = Color::ParseColorString(selectedColorValue, colorVal); - indicatorParameters.selectedColorVal = parseOk ? colorVal : swiperIndicatorTheme->GetSelectedColor(); + indicatorParameters.selectedColorVal = parseOk + ? (indicatorParameters.parametersByUser.insert("selectedColorVal"), colorVal) + : swiperIndicatorTheme->GetSelectedColor(); auto maxDisplayCount = GetInfoFromVectorByIndex(dotIndicatorInfo, DOT_INDICATOR_MAX_DISPLAY_COUNT); if (!maxDisplayCount.empty()) { indicatorParameters.maxDisplayCountVal = StringUtils::StringToInt(maxDisplayCount); @@ -234,17 +251,7 @@ SwiperParameters GetDotIndicatorInfo(FrameNode* frameNode, const std::vectorGetIndicatorDotItemSpace(); indicatorParameters.dimSpace = (parseSpaceOk && !(space < 0.0_vp)) ? space : defaultSpaceSize; - if (SystemProperties::ConfigChangePerform()) { - auto resourceObjs = *(static_cast>*>(resObjs)); - indicatorParameters.resourceItemWidthValueObject = resourceObjs.at(DOT_INDICATOR_RESOURCE_ITEM_WIDTH); - indicatorParameters.resourceItemHeightValueObject = resourceObjs.at(DOT_INDICATOR_RESOURCE_ITEM_HEIGHT); - indicatorParameters.resourceSelectedItemWidthValueObject = - resourceObjs.at(DOT_INDICATOR_RESOURCE_SELECTED_ITEM_WIDTH); - indicatorParameters.resourceSelectedItemHeightValueObject = - resourceObjs.at(DOT_INDICATOR_RESOURCE_SELECTED_ITEM_HEIGHT); - indicatorParameters.resourceColorValueObject = resourceObjs.at(DOT_INDICATOR_RESOURCE_COLOR); - indicatorParameters.resourceSelectedColorValueObject = resourceObjs.at(DOT_INDICATOR_RESOURCE_SELECTED_COLOR); - } + InitIndicatorParametersWithResObj(indicatorParameters, resObjs); return indicatorParameters; } diff --git a/frameworks/core/interfaces/native/node/node_swiper_modifier.cpp b/frameworks/core/interfaces/native/node/node_swiper_modifier.cpp index aeb6299a24d..f0f8722cc7c 100644 --- a/frameworks/core/interfaces/native/node/node_swiper_modifier.cpp +++ b/frameworks/core/interfaces/native/node/node_swiper_modifier.cpp @@ -604,7 +604,7 @@ void SetSwiperNextMarginRAw(ArkUINodeHandle node, ArkUI_Float32 nextMarginValue, if (SystemProperties::ConfigChangePerform()) { auto* nextMargin = reinterpret_cast(nextMarginRawPtr); auto nextMarginResObj = AceType::Claim(nextMargin); - SwiperModel::GetInstance()->ProcessNextMarginwithResourceObj(nextMarginResObj); + SwiperModel::GetInstance()->ProcessNextMarginWithResourceObj(nextMarginResObj); } } @@ -616,7 +616,7 @@ void ResetSwiperNextMargin(ArkUINodeHandle node) SwiperModelNG::SetNextMargin(frameNode, value); if (SystemProperties::ConfigChangePerform()) { auto nextMarginResObj = AceType::MakeRefPtr(); - SwiperModel::GetInstance()->ProcessNextMarginwithResourceObj(nextMarginResObj); + SwiperModel::GetInstance()->ProcessNextMarginWithResourceObj(nextMarginResObj); } } @@ -654,7 +654,7 @@ void SetSwiperPrevMarginRaw(ArkUINodeHandle node, ArkUI_Float32 prevMarginValue, if (SystemProperties::ConfigChangePerform()) { auto* prevMargin = reinterpret_cast(prevMarginRawPtr); auto prevMarginResObj = AceType::Claim(prevMargin); - SwiperModel::GetInstance()->ProcessPreviousMarginwithResourceObj(prevMarginResObj); + SwiperModel::GetInstance()->ProcessPreviousMarginWithResourceObj(prevMarginResObj); } } @@ -666,7 +666,7 @@ void ResetSwiperPrevMargin(ArkUINodeHandle node) SwiperModelNG::SetPreviousMargin(frameNode, value); if (SystemProperties::ConfigChangePerform()) { auto prevMarginResObj = AceType::MakeRefPtr(); - SwiperModel::GetInstance()->ProcessPreviousMarginwithResourceObj(prevMarginResObj); + SwiperModel::GetInstance()->ProcessPreviousMarginWithResourceObj(prevMarginResObj); } } diff --git a/test/unittest/core/pattern/indexer/indexer_test_ng.cpp b/test/unittest/core/pattern/indexer/indexer_test_ng.cpp index 8f36cabe1f9..bff9b93778a 100644 --- a/test/unittest/core/pattern/indexer/indexer_test_ng.cpp +++ b/test/unittest/core/pattern/indexer/indexer_test_ng.cpp @@ -233,6 +233,79 @@ HWTEST_F(IndexerTestNg, RemoveResourceObjTest001, TestSize.Level1) EXPECT_EQ(pattern_->GetResCacheMapByKey("indexer.PopupTitleBackground"), ""); } +/** + * @tc.name: ChangeFlagForSetByUser001 + * @tc.desc: Test property ChangeFlagForSetByUser + * @tc.type: FUNC + */ +HWTEST_F(IndexerTestNg, ChangeFlagForSetByUser001, TestSize.Level1) +{ + IndexerModelNG model = CreateIndexer(GetLongArrayValue(), 2); + auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode(); + ASSERT_NE(frameNode, nullptr); + + model.SetColorByUser(true); + model.SetSelectedColorByUser(true); + model.SetPopupColorByUser(true); + model.SetSelectedBGColorByUser(true); + model.SetPopupUnselectedColorByUser(true); + model.SetPopupTitleBackgroundByUser(true); + model.SetPopupSelectedColorByUser(true); + model.SetPopupItemBackgroundColorByUser(true); + model.SetPopupBackgroundColorByUser(true); + pattern_->OnModifyDone(); + auto indexerLayoutProperty = pattern_->GetLayoutProperty(); + ASSERT_NE(indexerLayoutProperty, nullptr); + EXPECT_TRUE(indexerLayoutProperty->GetSetColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetSelectedColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetPopupColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetSelectedBGColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetPopupUnselectedColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetPopupTitleBackgroundByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetPopupSelectedColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetPopupItemBackgroundColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetPopupBackgroundColorByUser().value_or(false)); + + model.ChangeFlagForSetByUser(frameNode, "Color", false); + model.ChangeFlagForSetByUser(frameNode, "PopupColor", false); + model.ChangeFlagForSetByUser(frameNode, "SelectedBackgroundColor", false); + model.ChangeFlagForSetByUser(frameNode, "PopupUnselectedColor", false); + model.ChangeFlagForSetByUser(frameNode, "PopupTitleBackground", false); + model.ChangeFlagForSetByUser(frameNode, "PopupSelectedColor", false); + model.ChangeFlagForSetByUser(frameNode, "PopupItemBackground", false); + model.ChangeFlagForSetByUser(frameNode, "PopupBackground", false); + model.ChangeFlagForSetByUser(frameNode, "SelectedColor", false); + EXPECT_FALSE(indexerLayoutProperty->GetSetColorByUser().value_or(true)); + EXPECT_FALSE(indexerLayoutProperty->GetSetSelectedColorByUser().value_or(true)); + EXPECT_FALSE(indexerLayoutProperty->GetSetPopupColorByUser().value_or(true)); + EXPECT_FALSE(indexerLayoutProperty->GetSetSelectedBGColorByUser().value_or(true)); + EXPECT_FALSE(indexerLayoutProperty->GetSetPopupUnselectedColorByUser().value_or(true)); + EXPECT_FALSE(indexerLayoutProperty->GetSetPopupTitleBackgroundByUser().value_or(true)); + EXPECT_FALSE(indexerLayoutProperty->GetSetPopupSelectedColorByUser().value_or(true)); + EXPECT_FALSE(indexerLayoutProperty->GetSetPopupItemBackgroundColorByUser().value_or(true)); + EXPECT_FALSE(indexerLayoutProperty->GetSetPopupBackgroundColorByUser().value_or(true)); + + model.ChangeFlagForSetByUser(frameNode, "Color", true); + model.ChangeFlagForSetByUser(frameNode, "PopupColor", true); + model.ChangeFlagForSetByUser(frameNode, "SelectedBackgroundColor", true); + model.ChangeFlagForSetByUser(frameNode, "PopupUnselectedColor", true); + model.ChangeFlagForSetByUser(frameNode, "PopupTitleBackground", true); + model.ChangeFlagForSetByUser(frameNode, "PopupSelectedColor", true); + model.ChangeFlagForSetByUser(frameNode, "PopupItemBackground", true); + model.ChangeFlagForSetByUser(frameNode, "PopupBackground", true); + model.ChangeFlagForSetByUser(frameNode, "SelectedColor", true); + EXPECT_TRUE(indexerLayoutProperty->GetSetColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetSelectedColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetPopupColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetSelectedBGColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetPopupUnselectedColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetPopupTitleBackgroundByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetPopupSelectedColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetPopupItemBackgroundColorByUser().value_or(false)); + EXPECT_TRUE(indexerLayoutProperty->GetSetPopupBackgroundColorByUser().value_or(false)); + CreateDone(); +} + /** * @tc.name: IndexerSetColorByUser001 * @tc.desc: Test property SetColorByUser UpdateThemeColor diff --git a/test/unittest/core/pattern/swiper/swiper_indicator_model_test_ng.cpp b/test/unittest/core/pattern/swiper/swiper_indicator_model_test_ng.cpp index f1e4b773966..426c432ef6f 100644 --- a/test/unittest/core/pattern/swiper/swiper_indicator_model_test_ng.cpp +++ b/test/unittest/core/pattern/swiper/swiper_indicator_model_test_ng.cpp @@ -1028,6 +1028,7 @@ HWTEST_F(IndicatorModelTestNg, IndicatorModelTestNg025, TestSize.Level1) FrameNode* frameNode = static_cast(AceType::RawPtr(frameNode_)); swiperParameters.colorVal = Color::RED; + swiperParameters.parametersByUser.insert("colorVal"); model.SetDotIndicatorStyle(frameNode, swiperParameters); model.SetIndicatorType(frameNode, SwiperIndicatorType::DOT); indicatorPattern_->OnColorModeChange(static_cast(ColorMode::DARK)); -- Gitee