diff --git a/frameworks/core/interfaces/native/node/button_modifier.cpp b/frameworks/core/interfaces/native/node/button_modifier.cpp index d869876e88ea4017e074282344004c84998cee7c..5bc89b32d9a3d33b844927d1346ee8cb4b199e35 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 41d44ac02fbc7ec924c4606b48b3daf05d3cca72..c6237e3bcf5209a275158a67247e84fc11879c63 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 a85f5433b5691594cc685e864e50791055d14d95..ac72aef911a2f775f0cf9b3f645cd16b00a95668 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 535b97c9b38a4f0906dab37e66bc0130f7c7ab8e..644747e9e6d36ee03441338a9a07fe57dfacd8db 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 7f2a21c46f0fa6e09b2e1378cf29bab6d4170036..d4ba41c719d32a00f99f06e303528cf5ce3c0630 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 b7c838e1e6cea07309acd04ab4ba5e30f1750b6f..851706913555bf991c922e5cb3215a71b5b4d417 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 4b6f8dc60e0285550e0cee79852252df042922c9..7b562b314c3712dd7153ac9f294cf68433ebc5e0 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 775d36566b79d5fad6945cc6ad7ac7de5e35121a..aab6e4643dabfd77b1aba49587f22b433e7f07f9 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 cd5e98334c7931d7ec54d7a3c8ff7e88dc777f0e..55713a04c4ae8b6532673f2a51e2980b02502593 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 54c3aeb7cd3ded9327c6e2a9878a5cfa56fd1bd2..87675adcbecf3d340b459e9d3ce689d9ff1ae8e3 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 56f77f8ea1778baa682daa5838a0a0ba3ff04392..c00786236071b11faa665bf7bf08165127ed9691 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); }