From b5596aee32443b0819f0a04730331afd070ec2ae Mon Sep 17 00:00:00 2001 From: fenglinbailu Date: Tue, 22 Oct 2024 22:34:41 +0800 Subject: [PATCH 1/2] create chainWeight for RelativeContainer Signed-off-by: fenglinbailu --- .../jsview/js_view_abstract.cpp | 66 +++++++++++-------- .../jsview/js_view_abstract.h | 1 + 2 files changed, 40 insertions(+), 27 deletions(-) diff --git a/frameworks/bridge/declarative_frontend/jsview/js_view_abstract.cpp b/frameworks/bridge/declarative_frontend/jsview/js_view_abstract.cpp index 66a584cde69..8dfaa610d14 100644 --- a/frameworks/bridge/declarative_frontend/jsview/js_view_abstract.cpp +++ b/frameworks/bridge/declarative_frontend/jsview/js_view_abstract.cpp @@ -2236,11 +2236,12 @@ void JSViewAbstract::JsPixelRound(const JSCallbackInfo& info) void JSViewAbstract::JsLayoutWeight(const JSCallbackInfo& info) { float value = 0.0f; - static std::vector checkObjectList { JSCallbackInfoType::STRING, JSCallbackInfoType::NUMBER }; - static std::vector checkList { JSCallbackInfoType::STRING, JSCallbackInfoType::NUMBER, JSCallbackInfoType::OBJECT }; + static std::vector checkList { JSCallbackInfoType::STRING, JSCallbackInfoType::NUMBER }; auto jsVal = info[0]; if (!CheckJSCallbackInfo("JsLayoutWeight", jsVal, checkList)) { - CHECK_NULL_VOID(jsVal->IsUndefined()); + if (!jsVal->IsUndefined()) { + return; + } } if (jsVal->IsNumber()) { @@ -2249,37 +2250,47 @@ void JSViewAbstract::JsLayoutWeight(const JSCallbackInfo& info) } else { value = jsVal->ToNumber(); } - ViewAbstractModel::GetInstance()->SetLayoutWeight(value); - } else if (jsVal->IsString() || jsVal->IsUndefined()) { + } else { if (AceApplicationInfo::GetInstance().GreatOrEqualTargetAPIVersion(PlatformVersion::VERSION_TWELVE)) { value = static_cast(StringUtils::StringToUintCheck(jsVal->ToString())); } else { value = static_cast(StringUtils::StringToUintCheck(jsVal->ToString())); } - ViewAbstractModel::GetInstance()->SetLayoutWeight(value); + } + + ViewAbstractModel::GetInstance()->SetLayoutWeight(value); +} + +void JSViewAbstract::JsChainWeight(const JSCallbackInfo& info) +{ + static std::vector checkObjectList { JSCallbackInfoType::STRING, JSCallbackInfoType::NUMBER }; + static std::vector checkList { JSCallbackInfoType::OBJECT }; + auto jsVal = info[0]; + if (!CheckJSCallbackInfo("JsLayoutWeight", jsVal, checkList)) { + return; + } + + JSRef val = JSRef::Cast(jsVal); + NG::LayoutWeightPair layoutWeightPair(DEFAULT_LAYOUT_WEIGHT, DEFAULT_LAYOUT_WEIGHT); + auto weightX = val->GetProperty("horizontal"); + auto weightY = val->GetProperty("vertical"); + if (!CheckJSCallbackInfo("JsChainWeightX", weightX, checkObjectList)) { + CHECK_NULL_VOID(weightX->IsUndefined()); + } + if (!CheckJSCallbackInfo("JsChainWeightY", weightY, checkObjectList)) { + CHECK_NULL_VOID(weightY->IsUndefined()); + } + if (weightX->IsNumber()) { + layoutWeightPair.first = weightX->ToNumber(); } else { - JSRef val = JSRef::Cast(jsVal); - NG::LayoutWeightPair layoutWeightPair(DEFAULT_LAYOUT_WEIGHT, DEFAULT_LAYOUT_WEIGHT); - auto weightX = val->GetProperty("horizontal"); - auto weightY = val->GetProperty("vertical"); - if (!CheckJSCallbackInfo("JsLayoutWeightX", weightX, checkObjectList)) { - CHECK_NULL_VOID(weightX->IsUndefined()); - } - if (!CheckJSCallbackInfo("JsLayoutWeightY", weightY, checkObjectList)) { - CHECK_NULL_VOID(weightY->IsUndefined()); - } - if (weightX->IsNumber()) { - layoutWeightPair.first = weightX->ToNumber(); - } else { - layoutWeightPair.first = static_cast(StringUtils::StringToUintCheck(weightX->ToString())); - } - if (weightY->IsNumber()) { - layoutWeightPair.second = weightY->ToNumber(); - } else { - layoutWeightPair.second = static_cast(StringUtils::StringToUintCheck(weightY->ToString())); - } - ViewAbstractModel::GetInstance()->SetLayoutWeight(layoutWeightPair); + layoutWeightPair.first = static_cast(StringUtils::StringToUintCheck(weightX->ToString())); + } + if (weightY->IsNumber()) { + layoutWeightPair.second = weightY->ToNumber(); + } else { + layoutWeightPair.second = static_cast(StringUtils::StringToUintCheck(weightY->ToString())); } + ViewAbstractModel::GetInstance()->SetLayoutWeight(layoutWeightPair); } void JSViewAbstract::JsAlign(const JSCallbackInfo& info) @@ -8613,6 +8624,7 @@ void JSViewAbstract::JSBind(BindingTarget globalObj) JSClass::StaticMethod("layoutPriority", &JSViewAbstract::JsLayoutPriority); JSClass::StaticMethod("pixelRound", &JSViewAbstract::JsPixelRound); JSClass::StaticMethod("layoutWeight", &JSViewAbstract::JsLayoutWeight); + JSClass::StaticMethod("chainWeight", &JSViewAbstract::JsChainWeight); JSClass::StaticMethod("margin", &JSViewAbstract::JsMargin); JSClass::StaticMethod("marginTop", &JSViewAbstract::SetMarginTop, opt); diff --git a/frameworks/bridge/declarative_frontend/jsview/js_view_abstract.h b/frameworks/bridge/declarative_frontend/jsview/js_view_abstract.h index cfdbf021b37..21f088a505b 100755 --- a/frameworks/bridge/declarative_frontend/jsview/js_view_abstract.h +++ b/frameworks/bridge/declarative_frontend/jsview/js_view_abstract.h @@ -352,6 +352,7 @@ public: static void JsLayoutPriority(const JSCallbackInfo& info); static void JsPixelRound(const JSCallbackInfo& info); static void JsLayoutWeight(const JSCallbackInfo& info); + static void JsChainWeight(const JSCallbackInfo& info); static void JsAlign(const JSCallbackInfo& info); static void JsPosition(const JSCallbackInfo& info); -- Gitee From 6750d3f36068e2a6db15d7c6e9445770e9025804 Mon Sep 17 00:00:00 2001 From: fenglinbailu Date: Wed, 23 Oct 2024 18:28:24 +0800 Subject: [PATCH 2/2] =?UTF-8?q?chainweight=20=E4=B8=8D=E6=94=AF=E6=8C=81st?= =?UTF-8?q?ring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: fenglinbailu --- .../jsview/js_view_abstract.cpp | 36 ++++++------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/frameworks/bridge/declarative_frontend/jsview/js_view_abstract.cpp b/frameworks/bridge/declarative_frontend/jsview/js_view_abstract.cpp index 8dfaa610d14..8548bf40454 100644 --- a/frameworks/bridge/declarative_frontend/jsview/js_view_abstract.cpp +++ b/frameworks/bridge/declarative_frontend/jsview/js_view_abstract.cpp @@ -2263,32 +2263,18 @@ void JSViewAbstract::JsLayoutWeight(const JSCallbackInfo& info) void JSViewAbstract::JsChainWeight(const JSCallbackInfo& info) { - static std::vector checkObjectList { JSCallbackInfoType::STRING, JSCallbackInfoType::NUMBER }; - static std::vector checkList { JSCallbackInfoType::OBJECT }; - auto jsVal = info[0]; - if (!CheckJSCallbackInfo("JsLayoutWeight", jsVal, checkList)) { - return; - } - - JSRef val = JSRef::Cast(jsVal); NG::LayoutWeightPair layoutWeightPair(DEFAULT_LAYOUT_WEIGHT, DEFAULT_LAYOUT_WEIGHT); - auto weightX = val->GetProperty("horizontal"); - auto weightY = val->GetProperty("vertical"); - if (!CheckJSCallbackInfo("JsChainWeightX", weightX, checkObjectList)) { - CHECK_NULL_VOID(weightX->IsUndefined()); - } - if (!CheckJSCallbackInfo("JsChainWeightY", weightY, checkObjectList)) { - CHECK_NULL_VOID(weightY->IsUndefined()); - } - if (weightX->IsNumber()) { - layoutWeightPair.first = weightX->ToNumber(); - } else { - layoutWeightPair.first = static_cast(StringUtils::StringToUintCheck(weightX->ToString())); - } - if (weightY->IsNumber()) { - layoutWeightPair.second = weightY->ToNumber(); - } else { - layoutWeightPair.second = static_cast(StringUtils::StringToUintCheck(weightY->ToString())); + auto jsVal = info[0]; + if (jsVal->IsObject()) { + JSRef val = JSRef::Cast(jsVal); + auto weightX = val->GetProperty("horizontal"); + auto weightY = val->GetProperty("vertical"); + if (weightX->IsNumber()) { + layoutWeightPair.first = weightX->ToNumber(); + } + if (weightY->IsNumber()) { + layoutWeightPair.second = weightY->ToNumber(); + } } ViewAbstractModel::GetInstance()->SetLayoutWeight(layoutWeightPair); } -- Gitee