• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_checkboxgroup_bridge.h"
17 #include "frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_utils.h"
18 
19 namespace OHOS::Ace::NG {
20 namespace {
21 constexpr int NUM_0 = 0;
22 constexpr int NUM_1 = 1;
23 constexpr int NUM_2 = 2;
24 constexpr int NUM_3 = 3;
25 constexpr int PARAM_ARR_LENGTH_1 = 1;
26 constexpr float DEFAULT_SIZE_VALUE = -1.0f;
27 } // namespace
SetCheckboxGroupSelectedColor(ArkUIRuntimeCallInfo * runtimeCallInfo)28 ArkUINativeModuleValue CheckboxGroupBridge::SetCheckboxGroupSelectedColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
29 {
30     EcmaVM* vm = runtimeCallInfo->GetVM();
31     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
32     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
33     Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
34     auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
35     Color color;
36     if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
37         GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupSelectedColor(nativeNode);
38     } else {
39         GetArkUINodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupSelectedColor(
40             nativeNode, color.GetValue());
41     }
42 
43     return panda::JSValueRef::Undefined(vm);
44 }
ResetCheckboxGroupSelectedColor(ArkUIRuntimeCallInfo * runtimeCallInfo)45 ArkUINativeModuleValue CheckboxGroupBridge::ResetCheckboxGroupSelectedColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
46 {
47     EcmaVM* vm = runtimeCallInfo->GetVM();
48     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
49     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
50     auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
51 
52     GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupSelectedColor(nativeNode);
53     return panda::JSValueRef::Undefined(vm);
54 }
SetCheckboxGroupUnSelectedColor(ArkUIRuntimeCallInfo * runtimeCallInfo)55 ArkUINativeModuleValue CheckboxGroupBridge::SetCheckboxGroupUnSelectedColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
56 {
57     EcmaVM* vm = runtimeCallInfo->GetVM();
58     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
59     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
60     Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
61     auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
62     Color color;
63     if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
64         GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupUnSelectedColor(nativeNode);
65     } else {
66         GetArkUINodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupUnSelectedColor(
67             nativeNode, color.GetValue());
68     }
69     return panda::JSValueRef::Undefined(vm);
70 }
ResetCheckboxGroupUnSelectedColor(ArkUIRuntimeCallInfo * runtimeCallInfo)71 ArkUINativeModuleValue CheckboxGroupBridge::ResetCheckboxGroupUnSelectedColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
72 {
73     EcmaVM* vm = runtimeCallInfo->GetVM();
74     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
75     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
76     auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
77 
78     GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupUnSelectedColor(nativeNode);
79     return panda::JSValueRef::Undefined(vm);
80 }
SetCheckboxGroupSelectAll(ArkUIRuntimeCallInfo * runtimeCallInfo)81 ArkUINativeModuleValue CheckboxGroupBridge::SetCheckboxGroupSelectAll(ArkUIRuntimeCallInfo* runtimeCallInfo)
82 {
83     EcmaVM* vm = runtimeCallInfo->GetVM();
84     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
85     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
86     Local<JSValueRef> selectAllArg = runtimeCallInfo->GetCallArgRef(1);
87     auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
88     if (selectAllArg->IsNull() || selectAllArg->IsUndefined()) {
89         GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupSelectAll(nativeNode);
90     } else {
91         bool selectAll = selectAllArg->ToBoolean(vm)->Value();
92         GetArkUINodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupSelectAll(nativeNode, selectAll);
93     }
94 
95     return panda::JSValueRef::Undefined(vm);
96 }
ResetCheckboxGroupSelectAll(ArkUIRuntimeCallInfo * runtimeCallInfo)97 ArkUINativeModuleValue CheckboxGroupBridge::ResetCheckboxGroupSelectAll(ArkUIRuntimeCallInfo* runtimeCallInfo)
98 {
99     EcmaVM* vm = runtimeCallInfo->GetVM();
100     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
101     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
102     auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
103 
104     GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupSelectAll(nativeNode);
105     return panda::JSValueRef::Undefined(vm);
106 }
SetCheckboxGroupWidth(ArkUIRuntimeCallInfo * runtimeCallInfo)107 ArkUINativeModuleValue CheckboxGroupBridge::SetCheckboxGroupWidth(ArkUIRuntimeCallInfo* runtimeCallInfo)
108 {
109     EcmaVM* vm = runtimeCallInfo->GetVM();
110     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
111     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
112     Local<JSValueRef> widthArg = runtimeCallInfo->GetCallArgRef(1);
113     auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
114     CalcDimension width;
115     if (!ArkTSUtils::ParseJsDimensionVpNG(vm, widthArg, width)) {
116         GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupWidth(nativeNode);
117         return panda::JSValueRef::Undefined(vm);
118     }
119     if (LessNotEqual(width.Value(), 0.0)) {
120         width.SetValue(0.0);
121     }
122     std::string widthCalc = width.CalcValue();
123     GetArkUINodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupWidth(
124         nativeNode, width.Value(), static_cast<int32_t>(width.Unit()), widthCalc.c_str());
125     return panda::JSValueRef::Undefined(vm);
126 }
ResetCheckboxGroupWidth(ArkUIRuntimeCallInfo * runtimeCallInfo)127 ArkUINativeModuleValue CheckboxGroupBridge::ResetCheckboxGroupWidth(ArkUIRuntimeCallInfo* runtimeCallInfo)
128 {
129     EcmaVM* vm = runtimeCallInfo->GetVM();
130     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
131     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
132     auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
133     GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupWidth(nativeNode);
134     return panda::JSValueRef::Undefined(vm);
135 }
SetCheckboxGroupHeight(ArkUIRuntimeCallInfo * runtimeCallInfo)136 ArkUINativeModuleValue CheckboxGroupBridge::SetCheckboxGroupHeight(ArkUIRuntimeCallInfo* runtimeCallInfo)
137 {
138     EcmaVM* vm = runtimeCallInfo->GetVM();
139     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
140     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
141     Local<JSValueRef> heightArg = runtimeCallInfo->GetCallArgRef(1);
142     auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
143     CalcDimension height;
144     if (!ArkTSUtils::ParseJsDimensionVpNG(vm, heightArg, height)) {
145         GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupHeight(nativeNode);
146         return panda::JSValueRef::Undefined(vm);
147     }
148     if (LessNotEqual(height.Value(), 0.0)) {
149         height.SetValue(0.0);
150     }
151     std::string heightCalc = height.CalcValue();
152     GetArkUINodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupHeight(
153         nativeNode, height.Value(), static_cast<int32_t>(height.Unit()), heightCalc.c_str());
154     return panda::JSValueRef::Undefined(vm);
155 }
ResetCheckboxGroupHeight(ArkUIRuntimeCallInfo * runtimeCallInfo)156 ArkUINativeModuleValue CheckboxGroupBridge::ResetCheckboxGroupHeight(ArkUIRuntimeCallInfo* runtimeCallInfo)
157 {
158     EcmaVM* vm = runtimeCallInfo->GetVM();
159     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
160     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
161     auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
162     GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupHeight(nativeNode);
163     return panda::JSValueRef::Undefined(vm);
164 }
SetCheckboxGroupMark(ArkUIRuntimeCallInfo * runtimeCallInfo)165 ArkUINativeModuleValue CheckboxGroupBridge::SetCheckboxGroupMark(ArkUIRuntimeCallInfo* runtimeCallInfo)
166 {
167     EcmaVM* vm = runtimeCallInfo->GetVM();
168     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
169     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
170     Local<JSValueRef> colorArg = runtimeCallInfo->GetCallArgRef(NUM_1);
171     Local<JSValueRef> sizeArg = runtimeCallInfo->GetCallArgRef(NUM_2);
172     Local<JSValueRef> widthArg = runtimeCallInfo->GetCallArgRef(NUM_3);
173     auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
174 
175     auto pipeline = PipelineBase::GetCurrentContext();
176     CHECK_NULL_RETURN(pipeline, panda::NativePointerRef::New(vm, nullptr));
177     auto theme = pipeline->GetTheme<CheckboxTheme>();
178     CHECK_NULL_RETURN(theme, panda::NativePointerRef::New(vm, nullptr));
179 
180     Color strokeColor;
181     if (!ArkTSUtils::ParseJsColorAlpha(vm, colorArg, strokeColor)) {
182         strokeColor = theme->GetPointColor();
183     }
184 
185     CalcDimension size;
186     if (!(ArkTSUtils::ParseJsDimensionVp(vm, sizeArg, size, false)) || (size.Unit() == DimensionUnit::PERCENT) ||
187         (size.ConvertToVp() < 0)) {
188         size = Dimension(DEFAULT_SIZE_VALUE);
189     }
190 
191     CalcDimension strokeWidth;
192     if (!(ArkTSUtils::ParseJsDimensionVp(vm, widthArg, strokeWidth, false)) ||
193         (strokeWidth.Unit() == DimensionUnit::PERCENT) || (strokeWidth.ConvertToVp() < 0)) {
194         strokeWidth = theme->GetCheckStroke();
195     }
196 
197     GetArkUINodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupMark(
198         nativeNode, strokeColor.GetValue(), size.Value(), strokeWidth.Value());
199 
200     return panda::JSValueRef::Undefined(vm);
201 }
ResetCheckboxGroupMark(ArkUIRuntimeCallInfo * runtimeCallInfo)202 ArkUINativeModuleValue CheckboxGroupBridge::ResetCheckboxGroupMark(ArkUIRuntimeCallInfo* runtimeCallInfo)
203 {
204     EcmaVM* vm = runtimeCallInfo->GetVM();
205     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
206     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
207     auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
208     GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupMark(nativeNode);
209     return panda::JSValueRef::Undefined(vm);
210 }
211 
SetCheckboxGroupSize(ArkUIRuntimeCallInfo * runtimeCallInfo)212 ArkUINativeModuleValue CheckboxGroupBridge::SetCheckboxGroupSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
213 {
214     EcmaVM* vm = runtimeCallInfo->GetVM();
215     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
216     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
217     Local<JSValueRef> widthArg = runtimeCallInfo->GetCallArgRef(1);
218     Local<JSValueRef> heightArg = runtimeCallInfo->GetCallArgRef(2); // 2: index of parameter CheckboxGroup height
219     auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
220     CalcDimension width;
221     CalcDimension height;
222     if (!ArkTSUtils::ParseJsDimensionVpNG(vm, widthArg, width)) {
223         GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupWidth(nativeNode);
224     } else {
225         std::string widthCalc = width.CalcValue();
226         if (LessNotEqual(width.Value(), 0.0)) {
227             width.SetValue(0.0);
228         }
229         GetArkUINodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupWidth(
230             nativeNode, width.Value(), static_cast<int32_t>(width.Unit()), widthCalc.c_str());
231     }
232     if (!ArkTSUtils::ParseJsDimensionVpNG(vm, heightArg, height)) {
233         GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupHeight(nativeNode);
234     } else {
235         std::string heightCalc = height.CalcValue();
236         if (LessNotEqual(height.Value(), 0.0)) {
237             height.SetValue(0.0);
238         }
239         GetArkUINodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupHeight(
240             nativeNode, height.Value(), static_cast<int32_t>(height.Unit()), heightCalc.c_str());
241     }
242     return panda::JSValueRef::Undefined(vm);
243 }
244 
ResetCheckboxGroupSize(ArkUIRuntimeCallInfo * runtimeCallInfo)245 ArkUINativeModuleValue CheckboxGroupBridge::ResetCheckboxGroupSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
246 {
247     EcmaVM* vm = runtimeCallInfo->GetVM();
248     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
249     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
250     auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
251 
252     GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupWidth(nativeNode);
253     GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupHeight(nativeNode);
254     return panda::JSValueRef::Undefined(vm);
255 }
256 
SetCheckboxGroupStyle(ArkUIRuntimeCallInfo * runtimeCallInfo)257 ArkUINativeModuleValue CheckboxGroupBridge::SetCheckboxGroupStyle(ArkUIRuntimeCallInfo* runtimeCallInfo)
258 {
259     EcmaVM* vm = runtimeCallInfo->GetVM();
260     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
261     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
262     Local<JSValueRef> styleArg = runtimeCallInfo->GetCallArgRef(1);
263     auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
264     if (styleArg->IsNull() || styleArg->IsUndefined()) {
265         GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupStyle(nativeNode);
266     } else {
267         int32_t style = styleArg->Int32Value(vm);
268         GetArkUINodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupStyle(nativeNode, style);
269     }
270 
271     return panda::JSValueRef::Undefined(vm);
272 }
ResetCheckboxGroupStyle(ArkUIRuntimeCallInfo * runtimeCallInfo)273 ArkUINativeModuleValue CheckboxGroupBridge::ResetCheckboxGroupStyle(ArkUIRuntimeCallInfo* runtimeCallInfo)
274 {
275     EcmaVM* vm = runtimeCallInfo->GetVM();
276     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
277     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
278     auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
279 
280     GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupStyle(nativeNode);
281     return panda::JSValueRef::Undefined(vm);
282 }
283 
SetCheckboxGroupOptions(ArkUIRuntimeCallInfo * runtimeCallInfo)284 ArkUINativeModuleValue CheckboxGroupBridge::SetCheckboxGroupOptions(ArkUIRuntimeCallInfo* runtimeCallInfo)
285 {
286     EcmaVM* vm = runtimeCallInfo->GetVM();
287     CHECK_NULL_RETURN(vm, panda::JSValueRef::Undefined(vm));
288     CHECK_EQUAL_RETURN(runtimeCallInfo->GetArgsNumber() != NUM_2, true, panda::JSValueRef::Undefined(vm));
289     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(NUM_0);
290     Local<JSValueRef> groupArg = runtimeCallInfo->GetCallArgRef(NUM_1);
291     auto pointer = nodeArg->ToNativePointer(vm);
292     CHECK_EQUAL_RETURN(pointer.IsEmpty(), true, panda::JSValueRef::Undefined(vm));
293     auto nativeNode = nodePtr(pointer->Value());
294     CHECK_NULL_RETURN(nativeNode, panda::JSValueRef::Undefined(vm));
295     std::string group;
296     if (!groupArg.IsNull() && groupArg->IsString(vm)) {
297         group = groupArg->ToString(vm)->ToString(vm);
298     }
299     auto modifier = GetArkUINodeModifiers()->getCheckboxGroupModifier();
300     CHECK_NULL_RETURN(modifier, panda::JSValueRef::Undefined(vm));
301     modifier->setCheckboxGroupName(nativeNode, group.c_str());
302     return panda::JSValueRef::Undefined(vm);
303 }
304 
305 template<typename T>
String2StringValueWithVM(const EcmaVM * vm,T val)306 panda::Local<panda::JSValueRef> String2StringValueWithVM(const EcmaVM* vm, T val)
307 {
308     if constexpr (std::is_same_v<T, std::string>) {
309         return panda::StringRef::NewFromUtf8(vm, val.c_str());
310     } else if constexpr (std::is_same_v<T, const char*>) {
311         return panda::StringRef::NewFromUtf8(vm, val);
312     } else if constexpr (std::is_same_v<T, std::u16string>) {
313         return panda::StringRef::NewFromUtf16(vm, val.c_str());
314     }
315     return panda::JSValueRef::Undefined(vm);
316 }
317 
SetCheckboxGroupOnChange(ArkUIRuntimeCallInfo * runtimeCallInfo)318 ArkUINativeModuleValue CheckboxGroupBridge::SetCheckboxGroupOnChange(ArkUIRuntimeCallInfo* runtimeCallInfo)
319 {
320     EcmaVM* vm = runtimeCallInfo->GetVM();
321     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
322     int32_t argsNumber = runtimeCallInfo->GetArgsNumber();
323     if (argsNumber != NUM_2) {
324         return panda::JSValueRef::Undefined(vm);
325     }
326     Local<JSValueRef> nativeNodeArg = runtimeCallInfo->GetCallArgRef(NUM_0);
327     Local<JSValueRef> callbackArg = runtimeCallInfo->GetCallArgRef(NUM_1);
328     auto nativeNode = nodePtr(nativeNodeArg->ToNativePointer(vm)->Value());
329     auto frameNode = reinterpret_cast<FrameNode*>(nativeNode);
330     CHECK_NULL_RETURN(frameNode, panda::NativePointerRef::New(vm, nullptr));
331     if (callbackArg->IsUndefined() || callbackArg->IsNull() || !callbackArg->IsFunction(vm)) {
332         GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupOnChange(nativeNode);
333         return panda::JSValueRef::Undefined(vm);
334     }
335     panda::Local<panda::FunctionRef> func = callbackArg->ToObject(vm);
336     std::function<void(const BaseEventInfo*)> callback = [vm, frameNode, func = panda::CopyableGlobal(vm, func)](
337                                                              const BaseEventInfo* info) {
338         panda::LocalScope pandaScope(vm);
339         panda::TryCatch trycatch(vm);
340         PipelineContext::SetCallBackNode(AceType::WeakClaim(frameNode));
341         const auto* eventInfo = TypeInfoHelper::DynamicCast<CheckboxGroupResult>(info);
342         panda::Local<panda::NumberRef> statusParam = panda::NumberRef::New(vm, eventInfo->GetStatus());
343         int32_t i = 0;
344         auto valueArray = panda::ArrayRef::New(vm);
345         for (std::string str : eventInfo->GetNameList()) {
346             panda::Local<panda::StringRef> item = String2StringValueWithVM(vm, str.c_str());
347             panda::ArrayRef::SetValueAt(vm, valueArray, i++, item);
348         }
349         auto resultObj = panda::ObjectRef::New(vm);
350         resultObj->Set(vm, panda::StringRef::NewFromUtf8(vm, "name"), valueArray);
351         resultObj->Set(vm, panda::StringRef::NewFromUtf8(vm, "status"), statusParam);
352         panda::Local<panda::JSValueRef> params[PARAM_ARR_LENGTH_1] = { resultObj };
353         func->Call(vm, func.ToLocal(), params, PARAM_ARR_LENGTH_1);
354     };
355     GetArkUINodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupOnChange(
356         nativeNode, reinterpret_cast<void*>(&callback));
357     return panda::JSValueRef::Undefined(vm);
358 }
359 
ResetCheckboxGroupOnChange(ArkUIRuntimeCallInfo * runtimeCallInfo)360 ArkUINativeModuleValue CheckboxGroupBridge::ResetCheckboxGroupOnChange(ArkUIRuntimeCallInfo* runtimeCallInfo)
361 {
362     EcmaVM* vm = runtimeCallInfo->GetVM();
363     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
364     Local<JSValueRef> nativeNodeArg = runtimeCallInfo->GetCallArgRef(NUM_0);
365     auto nativeNode = nodePtr(nativeNodeArg->ToNativePointer(vm)->Value());
366 
367     GetArkUINodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupOnChange(nativeNode);
368     return panda::JSValueRef::Undefined(vm);
369 }
370 } // namespace OHOS::Ace::NG
371