From e4c5a94422751d68391218b148862faa1f7ba93d Mon Sep 17 00:00:00 2001 From: mlyuestc Date: Fri, 12 Sep 2025 09:39:28 +0000 Subject: [PATCH] capi theme Signed-off-by: mlyuestc Change-Id: I7a0d8bcbc8368c48d64d09bb7ba1a93784c82edf --- .../native/node/button_modifier.cpp | 12 +- .../native/node/checkboxgroup_modifier.cpp | 23 +++- .../native/node/node_checkbox_modifier.cpp | 21 +++- .../node/node_loading_progress_modifier.cpp | 13 ++- .../native/node/node_slider_modifier.cpp | 34 +++--- .../native/node/node_span_modifier.cpp | 18 ++- .../native/node/node_text_area_modifier.cpp | 57 ++++++--- .../native/node/node_text_input_modifier.cpp | 109 ++++++++++++------ .../native/node/node_text_modifier.cpp | 16 ++- .../native/node/node_toggle_modifier.cpp | 34 ++++-- .../native/node/progress_modifier.cpp | 17 ++- 11 files changed, 254 insertions(+), 100 deletions(-) diff --git a/frameworks/core/interfaces/native/node/button_modifier.cpp b/frameworks/core/interfaces/native/node/button_modifier.cpp index d869876e88e..5bc89b32d9a 100644 --- a/frameworks/core/interfaces/native/node/button_modifier.cpp +++ b/frameworks/core/interfaces/native/node/button_modifier.cpp @@ -16,6 +16,7 @@ #include "bridge/common/utils/utils.h" #include "core/common/container.h" +#include "core/common/resource/resource_parse_utils.h" #include "core/components_ng/base/view_abstract_model.h" #include "core/components_ng/pattern/button/button_model_ng.h" #include "frameworks/core/components/button/button_theme.h" @@ -166,9 +167,14 @@ void SetButtonFontColorPtr(ArkUINodeHandle node, uint32_t fontColor, void* color if (SystemProperties::ConfigChangePerform()) { auto* frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); - auto* color = reinterpret_cast(colorRawPtr); - auto colorResObj = AceType::Claim(color); - ButtonModelNG::CreateWithColorResourceObj(frameNode, colorResObj, ButtonColorType::FONT_COLOR); + Color result = Color(fontColor); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } else { + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); + } + ButtonModelNG::CreateWithColorResourceObj(frameNode, resObj, ButtonColorType::FONT_COLOR); } } diff --git a/frameworks/core/interfaces/native/node/checkboxgroup_modifier.cpp b/frameworks/core/interfaces/native/node/checkboxgroup_modifier.cpp index 41d44ac02fb..c6237e3bcf5 100644 --- a/frameworks/core/interfaces/native/node/checkboxgroup_modifier.cpp +++ b/frameworks/core/interfaces/native/node/checkboxgroup_modifier.cpp @@ -14,6 +14,7 @@ */ #include "core/interfaces/native/node/checkboxgroup_modifier.h" +#include "core/common/resource/resource_parse_utils.h" #include "core/components_ng/base/view_abstract.h" #include "core/pipeline_ng/pipeline_context.h" @@ -38,9 +39,14 @@ void SetCheckboxGroupSelectedColorPtr(ArkUINodeHandle node, uint32_t color, void if (SystemProperties::ConfigChangePerform()) { auto* frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); - auto* color = reinterpret_cast(colorRawPtr); - auto colorResObj = AceType::Claim(color); - CheckBoxGroupModelNG::CreateWithResourceObj(frameNode, CheckBoxGroupColorType::SELECTED_COLOR, colorResObj); + Color result = Color(color); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } else { + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); + } + CheckBoxGroupModelNG::CreateWithResourceObj(frameNode, CheckBoxGroupColorType::SELECTED_COLOR, resObj); } } @@ -74,9 +80,14 @@ void SetCheckboxGroupUnSelectedColorPtr(ArkUINodeHandle node, uint32_t color, vo if (SystemProperties::ConfigChangePerform()) { auto* frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); - auto* color = reinterpret_cast(colorRawPtr); - auto colorResObj = AceType::Claim(color); - CheckBoxGroupModelNG::CreateWithResourceObj(frameNode, CheckBoxGroupColorType::UN_SELECTED_COLOR, colorResObj); + Color result = Color(color); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } else { + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); + } + CheckBoxGroupModelNG::CreateWithResourceObj(frameNode, CheckBoxGroupColorType::UN_SELECTED_COLOR, resObj); } } diff --git a/frameworks/core/interfaces/native/node/node_checkbox_modifier.cpp b/frameworks/core/interfaces/native/node/node_checkbox_modifier.cpp index a85f5433b56..ac72aef911a 100644 --- a/frameworks/core/interfaces/native/node/node_checkbox_modifier.cpp +++ b/frameworks/core/interfaces/native/node/node_checkbox_modifier.cpp @@ -14,6 +14,7 @@ */ #include "core/interfaces/native/node/node_checkbox_modifier.h" +#include "core/common/resource/resource_parse_utils.h" #include "core/components_ng/base/view_abstract.h" #include "core/components_ng/pattern/checkbox/checkbox_model_ng.h" #include "core/pipeline_ng/pipeline_context.h" @@ -47,9 +48,14 @@ void SetSelectedColorPtr(ArkUINodeHandle node, ArkUI_Uint32 color, void* colorRa if (SystemProperties::ConfigChangePerform()) { auto* frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); - auto* color = reinterpret_cast(colorRawPtr); - auto colorResObj = AceType::Claim(color); - CheckBoxModelNG::CreateWithResourceObj(frameNode, CheckBoxColorType::SELECTED_COLOR, colorResObj); + Color result = Color(color); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } else { + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); + } + CheckBoxModelNG::CreateWithResourceObj(frameNode, CheckBoxColorType::SELECTED_COLOR, resObj); } } @@ -67,9 +73,16 @@ void SetUnSelectedColorPtr(ArkUINodeHandle node, ArkUI_Uint32 color, void* color if (SystemProperties::ConfigChangePerform()) { auto* frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); + Color result = Color(color); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } else { + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); + } auto* color = reinterpret_cast(colorRawPtr); auto colorResObj = AceType::Claim(color); - CheckBoxModelNG::CreateWithResourceObj(frameNode, CheckBoxColorType::UN_SELECTED_COLOR, colorResObj); + CheckBoxModelNG::CreateWithResourceObj(frameNode, CheckBoxColorType::UN_SELECTED_COLOR, resObj); } } diff --git a/frameworks/core/interfaces/native/node/node_loading_progress_modifier.cpp b/frameworks/core/interfaces/native/node/node_loading_progress_modifier.cpp index 535b97c9b38..644747e9e6d 100644 --- a/frameworks/core/interfaces/native/node/node_loading_progress_modifier.cpp +++ b/frameworks/core/interfaces/native/node/node_loading_progress_modifier.cpp @@ -15,6 +15,7 @@ #include "node_loading_progress_modifier.h" #include "base/error/error_code.h" +#include "core/common/resource/resource_parse_utils.h" #include "core/components/progress/progress_theme.h" #include "core/components_ng/pattern/loading_progress/loading_progress_model_ng.h" #include "core/pipeline_ng/pipeline_context.h" @@ -42,11 +43,15 @@ void SetLoadingProgressColorPtr(ArkUINodeHandle node, uint32_t colorValue, void* CHECK_NULL_VOID(frameNode); LoadingProgressModelNG::SetColorParseFailed(frameNode, false); LoadingProgressModelNG::SetColor(frameNode, Color(colorValue)); - + Color result = Color(colorValue); if (SystemProperties::ConfigChangePerform()) { - auto* color = reinterpret_cast(colorRawPtr); - auto colorResObj = AceType::Claim(color); - LoadingProgressModelNG::CreateWithResourceObj(frameNode, LoadingProgressResourceType::COLOR, colorResObj); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } else { + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); + } + LoadingProgressModelNG::CreateWithResourceObj(frameNode, LoadingProgressResourceType::COLOR, resObj); } } diff --git a/frameworks/core/interfaces/native/node/node_slider_modifier.cpp b/frameworks/core/interfaces/native/node/node_slider_modifier.cpp index 7f2a21c46f0..d4ba41c719d 100644 --- a/frameworks/core/interfaces/native/node/node_slider_modifier.cpp +++ b/frameworks/core/interfaces/native/node/node_slider_modifier.cpp @@ -14,6 +14,7 @@ */ #include "core/interfaces/native/node/node_slider_modifier.h" +#include "core/common/resource/resource_parse_utils.h" #include "core/components_ng/pattern/slider/slider_model_ng.h" #include "core/components/slider/slider_theme.h" #include "core/components_ng/pattern/slider/slider_custom_content_options.h" @@ -259,13 +260,14 @@ void SetBlockColorPtr(ArkUINodeHandle node, uint32_t color, void* colorRawPtr) if (SystemProperties::ConfigChangePerform()) { auto* frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); - if (colorRawPtr) { - auto* color = reinterpret_cast(colorRawPtr); - auto colorResObj = AceType::Claim(color); - SliderModelNG::CreateWithColorResourceObj(frameNode, colorResObj, SliderColorType::BLOCK_COLOR); + Color result = Color(color); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); } else { - SliderModelNG::CreateWithColorResourceObj(frameNode, nullptr, SliderColorType::BLOCK_COLOR); + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); } + SliderModelNG::CreateWithColorResourceObj(frameNode, resObj, SliderColorType::BLOCK_COLOR); } } @@ -309,13 +311,14 @@ void SetTrackBackgroundColorPtr(ArkUINodeHandle node, uint32_t color, void* colo if (SystemProperties::ConfigChangePerform()) { auto* frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); - if (colorRawPtr) { - auto* color = reinterpret_cast(colorRawPtr); - auto colorResObj = AceType::Claim(color); - SliderModelNG::CreateWithColorResourceObj(frameNode, colorResObj, SliderColorType::TRACK_COLOR); + Color result = Color(color); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); } else { - SliderModelNG::CreateWithColorResourceObj(frameNode, nullptr, SliderColorType::TRACK_COLOR); + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); } + SliderModelNG::CreateWithColorResourceObj(frameNode, resObj, SliderColorType::TRACK_COLOR); } } @@ -360,13 +363,14 @@ void SetSelectColorPtr(ArkUINodeHandle node, uint32_t color, void* colorRawPtr) if (SystemProperties::ConfigChangePerform()) { auto* frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); - if (colorRawPtr) { - auto* color = reinterpret_cast(colorRawPtr); - auto colorResObj = AceType::Claim(color); - SliderModelNG::CreateWithColorResourceObj(frameNode, colorResObj, SliderColorType::SELECT_COLOR); + Color result = Color(color); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); } else { - SliderModelNG::CreateWithColorResourceObj(frameNode, nullptr, SliderColorType::SELECT_COLOR); + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); } + SliderModelNG::CreateWithColorResourceObj(frameNode, resObj, SliderColorType::SELECT_COLOR); } } diff --git a/frameworks/core/interfaces/native/node/node_span_modifier.cpp b/frameworks/core/interfaces/native/node/node_span_modifier.cpp index b7c838e1e6c..85170691355 100644 --- a/frameworks/core/interfaces/native/node/node_span_modifier.cpp +++ b/frameworks/core/interfaces/native/node/node_span_modifier.cpp @@ -275,8 +275,22 @@ void SetSpanFontColor(ArkUINodeHandle node, uint32_t textColor, void* fontColorR auto* uiNode = reinterpret_cast(node); CHECK_NULL_VOID(uiNode); SpanModelNG::SetTextColor(uiNode, Color(textColor)); - NodeModifier::ProcessResourceObj(uiNode, "fontColor", Color(textColor), fontColorRawPtr); -} + if (SystemProperties::ConfigChangePerform()) { + auto* frameNode = reinterpret_cast(node); + CHECK_NULL_VOID(frameNode); + auto spanNode = AceType::DynamicCast(uiNode); + CHECK_NULL_VOID(spanNode); + Color result = Color(textColor); + RefPtr resObj; + if (!fontColorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } else { + resObj = AceType::Claim(reinterpret_cast(fontColorRawPtr)); + } + if (resObj) { + spanNode->RegisterResource("fontColor", resObj, result); + } + }} uint32_t GetSpanFontColor(ArkUINodeHandle node) { diff --git a/frameworks/core/interfaces/native/node/node_text_area_modifier.cpp b/frameworks/core/interfaces/native/node/node_text_area_modifier.cpp index 4b6f8dc60e0..7b562b314c3 100644 --- a/frameworks/core/interfaces/native/node/node_text_area_modifier.cpp +++ b/frameworks/core/interfaces/native/node/node_text_area_modifier.cpp @@ -16,6 +16,7 @@ #include "bridge/common/utils/utils.h" #include "base/utils/utf_helper.h" +#include "core/common/resource/resource_parse_utils.h" #include "core/components/text_field/textfield_theme.h" #include "core/components_ng/pattern/text_field/text_field_model_ng.h" #include "core/components/common/properties/text_style_parser.h" @@ -196,13 +197,19 @@ void SetTextAreaPlaceholderColor(ArkUINodeHandle node, ArkUI_Uint32 color, void* auto *frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); TextFieldModelNG::SetPlaceholderColor(frameNode, Color(color)); - auto pattern = frameNode->GetPattern(); - CHECK_NULL_VOID(pattern); - if (SystemProperties::ConfigChangePerform() && resRawPtr) { - auto resObj = AceType::Claim(reinterpret_cast(resRawPtr)); - pattern->RegisterResource("placeholderColor", resObj, Color(color)); - } else { - pattern->UnRegisterResource("placeholderColor"); + if (SystemProperties::ConfigChangePerform()) { + Color result = Color(color); + auto pattern = frameNode->GetPattern(); + CHECK_NULL_VOID(pattern); + RefPtr resObj; + if (!resRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } else { + resObj = AceType::Claim(reinterpret_cast(resRawPtr)); + } + if (resObj) { + pattern->RegisterResource("placeholderColor", resObj, Color(color)); + } } } @@ -443,13 +450,17 @@ void SetTextAreaCaretColor(ArkUINodeHandle node, ArkUI_Uint32 color, void* color CHECK_NULL_VOID(frameNode); TextFieldModelNG::SetCaretColor(frameNode, Color(color)); if (SystemProperties::ConfigChangePerform()) { + Color result = Color(color); auto pattern = frameNode->GetPattern(); CHECK_NULL_VOID(pattern); - if (colorRawPtr) { - auto resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); - pattern->RegisterResource("caretColor", resObj, Color(color)); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); } else { - pattern->UnRegisterResource("caretColor"); + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); + } + if (resObj) { + pattern->RegisterResource("caretColor", resObj, Color(color)); } } } @@ -486,13 +497,17 @@ void SetTextAreaFontColor(ArkUINodeHandle node, ArkUI_Uint32 color, void* resRaw CHECK_NULL_VOID(frameNode); TextFieldModelNG::SetTextColor(frameNode, Color(color)); if (SystemProperties::ConfigChangePerform()) { + Color result = Color(color); auto pattern = frameNode->GetPattern(); CHECK_NULL_VOID(pattern); - if (resRawPtr) { - auto resObj = AceType::Claim(reinterpret_cast(resRawPtr)); - pattern->RegisterResource("fontColor", resObj, Color(color)); + RefPtr resObj; + if (!resRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); } else { - pattern->UnRegisterResource("fontColor"); + resObj = AceType::Claim(reinterpret_cast(resRawPtr)); + } + if (resObj) { + pattern->RegisterResource("fontColor", resObj, Color(color)); } } } @@ -710,11 +725,15 @@ void SetTextAreaBackgroundColor(ArkUINodeHandle node, uint32_t color, void* resR if (SystemProperties::ConfigChangePerform()) { auto pattern = frameNode->GetPattern(); CHECK_NULL_VOID(pattern); - if (resRawPtr) { - auto resObj = AceType::Claim(reinterpret_cast(resRawPtr)); - pattern->RegisterResource("backgroundColor", resObj, Color(color)); + Color result = Color(color); + RefPtr resObj; + if (!resRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); } else { - pattern->UnRegisterResource("backgroundColor"); + resObj = AceType::Claim(reinterpret_cast(resRawPtr)); + } + if (resObj) { + pattern->RegisterResource("backgroundColor", resObj, Color(color)); } } } diff --git a/frameworks/core/interfaces/native/node/node_text_input_modifier.cpp b/frameworks/core/interfaces/native/node/node_text_input_modifier.cpp index 775d36566b7..aab6e4643da 100644 --- a/frameworks/core/interfaces/native/node/node_text_input_modifier.cpp +++ b/frameworks/core/interfaces/native/node/node_text_input_modifier.cpp @@ -15,6 +15,7 @@ #include "core/interfaces/native/node/node_text_input_modifier.h" #include +#include "core/common/resource/resource_parse_utils.h" #include "core/components/text_field/textfield_theme.h" #include "core/components_ng/pattern/text_field/text_field_model_ng.h" #include "base/utils/utf_helper.h" @@ -71,11 +72,15 @@ void SetTextInputCaretColor(ArkUINodeHandle node, ArkUI_Uint32 color, void* colo if (SystemProperties::ConfigChangePerform()) { auto pattern = frameNode->GetPattern(); CHECK_NULL_VOID(pattern); - if (colorRawPtr) { - auto resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); - pattern->RegisterResource("caretColor", resObj, Color(color)); + Color result = Color(color); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); } else { - pattern->UnRegisterResource("caretColor"); + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); + } + if (resObj) { + pattern->RegisterResource("caretColor", resObj, Color(color)); } } } @@ -135,11 +140,15 @@ void SetTextInputPlaceholderColor(ArkUINodeHandle node, ArkUI_Uint32 color, void if (SystemProperties::ConfigChangePerform()) { auto pattern = frameNode->GetPattern(); CHECK_NULL_VOID(pattern); - if (colorRawPtr) { - auto resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); - pattern->RegisterResource("placeholderColor", resObj, Color(color)); + Color result = Color(color); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); } else { - pattern->UnRegisterResource("placeholderColor"); + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); + } + if (resObj) { + pattern->RegisterResource("placeholderColor", resObj, Color(color)); } } } @@ -722,11 +731,15 @@ void SetTextInputSelectedBackgroundColor(ArkUINodeHandle node, ArkUI_Uint32 colo if (SystemProperties::ConfigChangePerform()) { auto pattern = frameNode->GetPattern(); CHECK_NULL_VOID(pattern); - if (resRawPtr) { - auto resObj = AceType::Claim(reinterpret_cast(resRawPtr)); - pattern->RegisterResource("selectedBackgroundColor", resObj, Color(color)); + Color result = Color(color); + RefPtr resObj; + if (!resRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); } else { - pattern->UnRegisterResource("selectedBackgroundColor"); + resObj = AceType::Claim(reinterpret_cast(resRawPtr)); + } + if (resObj) { + pattern->RegisterResource("selectedBackgroundColor", resObj, Color(color)); } } } @@ -862,11 +875,15 @@ void SetTextInputFontColor(ArkUINodeHandle node, ArkUI_Uint32 color, void* resRa if (SystemProperties::ConfigChangePerform()) { auto pattern = frameNode->GetPattern(); CHECK_NULL_VOID(pattern); - if (resRawPtr) { - auto resObj = AceType::Claim(reinterpret_cast(resRawPtr)); - pattern->RegisterResource("fontColor", resObj, Color(color)); + Color result = Color(color); + RefPtr resObj; + if (!resRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); } else { - pattern->UnRegisterResource("fontColor"); + resObj = AceType::Claim(reinterpret_cast(resRawPtr)); + } + if (resObj) { + pattern->RegisterResource("fontColor", resObj, Color(color)); } } } @@ -1251,11 +1268,15 @@ void SetTextInputBackgroundColor(ArkUINodeHandle node, ArkUI_Uint32 color, void* if (SystemProperties::ConfigChangePerform()) { auto pattern = frameNode->GetPattern(); CHECK_NULL_VOID(pattern); - if (resRawPtr) { - auto resObj = AceType::Claim(reinterpret_cast(resRawPtr)); - pattern->RegisterResource("backgroundColor", resObj, Color(color)); + Color result = Color(color); + RefPtr resObj; + if (!resRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); } else { - pattern->UnRegisterResource("backgroundColor"); + resObj = AceType::Claim(reinterpret_cast(resRawPtr)); + } + if (resObj) { + pattern->RegisterResource("backgroundColor", resObj, Color(color)); } } } @@ -1584,46 +1605,62 @@ void SetTextInputUserUnderlineColor(ArkUINodeHandle node, const ArkUI_Uint32* va return; } if (hasValues[CALL_ARG_0]) { - userColor.typing = Color(values[CALL_ARG_0]); + Color result = Color(values[CALL_ARG_0]); + userColor.typing = result; if (SystemProperties::ConfigChangePerform()) { + RefPtr resObj; if (underlineColorObj && underlineColorObj->typingColorObj) { - auto resObj = AceType::Claim(reinterpret_cast(underlineColorObj->typingColorObj)); - pattern->RegisterResource("underlineColorTyping", resObj, Color(values[CALL_ARG_0])); + resObj = AceType::Claim(reinterpret_cast(underlineColorObj->typingColorObj)); } else { - pattern->UnRegisterResource("underlineColorTyping"); + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } + if (resObj) { + pattern->RegisterResource("underlineColorTyping", resObj, Color(values[CALL_ARG_0])); } } } if (hasValues[CALL_ARG_1]) { - userColor.normal = Color(values[CALL_ARG_1]); + Color result = Color(values[CALL_ARG_1]); + userColor.normal = result; if (SystemProperties::ConfigChangePerform()) { + RefPtr resObj; if (underlineColorObj && underlineColorObj->normalColorObj) { - auto resObj = AceType::Claim(reinterpret_cast(underlineColorObj->normalColorObj)); - pattern->RegisterResource("underlineColorNormal", resObj, Color(values[CALL_ARG_1])); + resObj = AceType::Claim(reinterpret_cast(underlineColorObj->normalColorObj)); } else { - pattern->UnRegisterResource("underlineColorNormal"); + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } + if (resObj) { + pattern->RegisterResource("underlineColorNormal", resObj, Color(values[CALL_ARG_1])); } } } if (hasValues[CALL_ARG_2]) { - userColor.error = Color(values[CALL_ARG_2]); + Color result = Color(values[CALL_ARG_2]); + userColor.error = result; if (SystemProperties::ConfigChangePerform()) { + RefPtr resObj; if (underlineColorObj && underlineColorObj->errorColorObj) { - auto resObj = AceType::Claim(reinterpret_cast(underlineColorObj->errorColorObj)); - pattern->RegisterResource("underlineColorError", resObj, Color(values[CALL_ARG_2])); + resObj = AceType::Claim(reinterpret_cast(underlineColorObj->errorColorObj)); } else { - pattern->UnRegisterResource("underlineColorError"); + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } + if (resObj) { + pattern->RegisterResource("underlineColorError", resObj, Color(values[CALL_ARG_2])); } } } if (hasValues[CALL_ARG_3]) { - userColor.disable = Color(values[CALL_ARG_3]); + Color result = Color(values[CALL_ARG_3]); + userColor.disable = result; if (SystemProperties::ConfigChangePerform()) { + RefPtr resObj; if (underlineColorObj && underlineColorObj->disableColorObj) { - auto resObj = AceType::Claim(reinterpret_cast(underlineColorObj->disableColorObj)); - pattern->RegisterResource("underlineColorDisable", resObj, Color(values[CALL_ARG_3])); + resObj = AceType::Claim(reinterpret_cast(underlineColorObj->disableColorObj)); } else { - pattern->UnRegisterResource("underlineColorDisable"); + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } + if (resObj) { + pattern->RegisterResource("underlineColorDisable", resObj, Color(values[CALL_ARG_3])); } } } diff --git a/frameworks/core/interfaces/native/node/node_text_modifier.cpp b/frameworks/core/interfaces/native/node/node_text_modifier.cpp index cd5e98334c7..55713a04c4a 100644 --- a/frameworks/core/interfaces/native/node/node_text_modifier.cpp +++ b/frameworks/core/interfaces/native/node/node_text_modifier.cpp @@ -17,6 +17,7 @@ #include "base/utils/utf_helper.h" #include "base/utils/utils.h" #include "bridge/common/utils/utils.h" +#include "core/common/resource/resource_parse_utils.h" #include "core/components/common/layout/constants.h" #include "core/components/common/properties/text_style.h" #include "core/components/common/properties/text_style_parser.h" @@ -275,7 +276,20 @@ void SetFontColor(ArkUINodeHandle node, ArkUI_Uint32 color, void* fontColorRawPt auto* frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); TextModelNG::SetTextColor(frameNode, Color(color)); - NodeModifier::ProcessResourceObj(frameNode, "TextColor", Color(color), fontColorRawPtr); + if (SystemProperties::ConfigChangePerform()) { + Color result = Color(color); + auto pattern = frameNode->GetPattern(); + CHECK_NULL_VOID(pattern); + RefPtr resObj; + if (!fontColorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } else { + resObj = AceType::Claim(reinterpret_cast(fontColorRawPtr)); + } + if (resObj) { + pattern->RegisterResource("TextColor", resObj, Color(color)); + } + } } void ResetFontColor(ArkUINodeHandle node) diff --git a/frameworks/core/interfaces/native/node/node_toggle_modifier.cpp b/frameworks/core/interfaces/native/node/node_toggle_modifier.cpp index 54c3aeb7cd3..87675adcbec 100644 --- a/frameworks/core/interfaces/native/node/node_toggle_modifier.cpp +++ b/frameworks/core/interfaces/native/node/node_toggle_modifier.cpp @@ -14,6 +14,7 @@ */ #include "node_toggle_modifier.h" +#include "core/common/resource/resource_parse_utils.h" #include "core/components/checkable/checkable_theme.h" #include "core/components_ng/base/view_abstract.h" #include "core/components_ng/pattern/toggle/toggle_model_ng.h" @@ -69,9 +70,14 @@ void SetToggleSelectedColorPtr(ArkUINodeHandle node, ArkUI_Uint32 selectedColor, if (SystemProperties::ConfigChangePerform()) { auto* frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); - auto* color = reinterpret_cast(colorRawPtr); - auto colorResObj = AceType::Claim(color); - ToggleModelNG::CreateWithResourceObj(frameNode, ToggleColorType::SELECTED_COLOR, colorResObj); + Color result = Color(selectedColor); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } else { + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); + } + ToggleModelNG::CreateWithResourceObj(frameNode, ToggleColorType::SELECTED_COLOR, resObj); } } @@ -101,9 +107,14 @@ void SetToggleSwitchPointColorPtr(ArkUINodeHandle node, ArkUI_Uint32 switchPoint if (SystemProperties::ConfigChangePerform()) { auto* frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); - auto* color = reinterpret_cast(colorRawPtr); - auto colorResObj = AceType::Claim(color); - ToggleModelNG::CreateWithResourceObj(frameNode, ToggleColorType::SWITCH_POINT_COLOR, colorResObj); + Color result = Color(switchPointColor); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } else { + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); + } + ToggleModelNG::CreateWithResourceObj(frameNode, ToggleColorType::SWITCH_POINT_COLOR, resObj); } } @@ -345,9 +356,14 @@ void SetToggleUnselectedColorPtr(ArkUINodeHandle node, ArkUI_Uint32 unselectedCo if (SystemProperties::ConfigChangePerform()) { auto* frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); - auto* color = reinterpret_cast(colorRawPtr); - auto colorResObj = AceType::Claim(color); - ToggleModelNG::CreateWithResourceObj(frameNode, ToggleColorType::UN_SELECTED_COLOR, colorResObj); + Color result = Color(unselectedColor); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } else { + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); + } + ToggleModelNG::CreateWithResourceObj(frameNode, ToggleColorType::UN_SELECTED_COLOR, resObj); } } diff --git a/frameworks/core/interfaces/native/node/progress_modifier.cpp b/frameworks/core/interfaces/native/node/progress_modifier.cpp index 56f77f8ea17..c0078623607 100644 --- a/frameworks/core/interfaces/native/node/progress_modifier.cpp +++ b/frameworks/core/interfaces/native/node/progress_modifier.cpp @@ -16,6 +16,7 @@ #include "core/interfaces/native/node/progress_modifier.h" +#include "core/common/resource/resource_parse_utils.h" #include "core/components_ng/pattern/progress/progress_paint_property.h" #include "core/components_ng/pattern/progress/progress_layout_property.h" #include "core/components_ng/pattern/progress/progress_model_ng.h" @@ -179,7 +180,21 @@ void SetProgressColorPtr(ArkUINodeHandle node, uint32_t color, void* colorRawPtr ProgressModelNG::SetGradientColor(frameNode, gradient); ProgressModelNG::SetModifierInitiatedColor(frameNode, true); ProgressModelNG::SetColor(frameNode, Color(color)); - CreateWithResourceObjIfNeeded(frameNode, JsProgressResourceType::COLOR, colorRawPtr, false); + + if (SystemProperties::ConfigChangePerform()) { + Color result = Color(color); + auto pattern = frameNode->GetPattern(); + CHECK_NULL_VOID(pattern); + RefPtr resObj; + if (!colorRawPtr) { + ResourceParseUtils::CompleteResourceObjectFromColor(resObj, result, frameNode->GetTag()); + } else { + resObj = AceType::Claim(reinterpret_cast(colorRawPtr)); + } + if (resObj) { + ProgressModelNG::CreateWithResourceObj(frameNode, JsProgressResourceType::COLOR, resObj); + } + } ProgressModelNG::SetGradientColorByUser(frameNode, true); } -- Gitee