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 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_slider_bridge.h"
16
17 #include "core/interfaces/native/node/api.h"
18 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_utils.h"
19 #include "bridge/declarative_frontend/jsview/js_shape_abstract.h"
20 #include "core/components_ng/pattern/slider/slider_model_ng.h"
21 #include "frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_utils.h"
22
23 namespace OHOS::Ace::NG {
24 constexpr int NUM_0 = 0;
25 constexpr int NUM_1 = 1;
26 constexpr int NUM_2 = 2;
SetShowTips(ArkUIRuntimeCallInfo * runtimeCallInfo)27 ArkUINativeModuleValue SliderBridge::SetShowTips(ArkUIRuntimeCallInfo* runtimeCallInfo)
28 {
29 EcmaVM* vm = runtimeCallInfo->GetVM();
30 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
31 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
32 Local<JSValueRef> showTipArg = runtimeCallInfo->GetCallArgRef(NUM_1);
33 Local<JSValueRef> contentArg = runtimeCallInfo->GetCallArgRef(NUM_2);
34 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
35
36 bool showTips = false;
37 if (showTipArg->IsBoolean()) {
38 showTips = showTipArg->ToBoolean(vm)->Value();
39 }
40
41 std::string content;
42 if (ArkTSUtils::ParseJsString(vm, contentArg, content)) {
43 GetArkUIInternalNodeAPI()->GetSliderModifier().SetShowTips(nativeNode, showTips, content.c_str());
44 } else {
45 GetArkUIInternalNodeAPI()->GetSliderModifier().SetShowTips(nativeNode, showTips, nullptr);
46 }
47 return panda::JSValueRef::Undefined(vm);
48 }
49
ResetShowTips(ArkUIRuntimeCallInfo * runtimeCallInfo)50 ArkUINativeModuleValue SliderBridge::ResetShowTips(ArkUIRuntimeCallInfo* runtimeCallInfo)
51 {
52 EcmaVM* vm = runtimeCallInfo->GetVM();
53 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
54 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
55 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
56 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetShowTips(nativeNode);
57 return panda::JSValueRef::Undefined(vm);
58 }
59
SetSliderStepSize(ArkUIRuntimeCallInfo * runtimeCallInfo)60 ArkUINativeModuleValue SliderBridge::SetSliderStepSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
61 {
62 EcmaVM* vm = runtimeCallInfo->GetVM();
63 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
64 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
65 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
66 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
67 CalcDimension stepSize;
68 if (!ArkTSUtils::ParseJsDimensionVpNG(vm, secondArg, stepSize, false)) {
69 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetSliderStepSize(nativeNode);
70 return panda::JSValueRef::Undefined(vm);
71 } else {
72 if (LessNotEqual(stepSize.Value(), 0.0)) {
73 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetSliderStepSize(nativeNode);
74 return panda::JSValueRef::Undefined(vm);
75 }
76
77 GetArkUIInternalNodeAPI()->GetSliderModifier().SetSliderStepSize(
78 nativeNode, stepSize.Value(), static_cast<int>(stepSize.Unit()));
79 }
80
81 return panda::JSValueRef::Undefined(vm);
82 }
83
ResetSliderStepSize(ArkUIRuntimeCallInfo * runtimeCallInfo)84 ArkUINativeModuleValue SliderBridge::ResetSliderStepSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
85 {
86 EcmaVM* vm = runtimeCallInfo->GetVM();
87 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
88 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
89 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
90 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetSliderStepSize(nativeNode);
91 return panda::JSValueRef::Undefined(vm);
92 }
93
SetBlockSize(ArkUIRuntimeCallInfo * runtimeCallInfo)94 ArkUINativeModuleValue SliderBridge::SetBlockSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
95 {
96 EcmaVM* vm = runtimeCallInfo->GetVM();
97 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
98 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
99 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
100 Local<JSValueRef> thirdArg = runtimeCallInfo->GetCallArgRef(NUM_2);
101 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
102
103 CalcDimension blockWidth;
104 CalcDimension blockHeight;
105 bool hasBlockWidth = ArkTSUtils::ParseJsDimensionVp(vm, secondArg, blockWidth);
106 bool hasBlockHeight = ArkTSUtils::ParseJsDimensionVp(vm, thirdArg, blockHeight);
107 if (!hasBlockWidth && !hasBlockHeight) {
108 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockSize(nativeNode);
109 }
110
111 GetArkUIInternalNodeAPI()->GetSliderModifier().SetBlockSize(nativeNode,
112 blockWidth.Value(), static_cast<int>(blockWidth.Unit()),
113 blockHeight.Value(), static_cast<int>(blockHeight.Unit()));
114 return panda::JSValueRef::Undefined(vm);
115 }
116
ResetBlockSize(ArkUIRuntimeCallInfo * runtimeCallInfo)117 ArkUINativeModuleValue SliderBridge::ResetBlockSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
118 {
119 EcmaVM* vm = runtimeCallInfo->GetVM();
120 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
121 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
122 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
123 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockSize(nativeNode);
124 return panda::JSValueRef::Undefined(vm);
125 }
126
SetTrackBorderRadius(ArkUIRuntimeCallInfo * runtimeCallInfo)127 ArkUINativeModuleValue SliderBridge::SetTrackBorderRadius(ArkUIRuntimeCallInfo* runtimeCallInfo)
128 {
129 EcmaVM* vm = runtimeCallInfo->GetVM();
130 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
131 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
132 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
133 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
134
135 CalcDimension trackBorderRadius;
136 if (!ArkTSUtils::ParseJsDimensionVpNG(vm, secondArg, trackBorderRadius, true)) {
137 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetTrackBorderRadius(nativeNode);
138 return panda::JSValueRef::Undefined(vm);
139 }
140
141 if (LessNotEqual(trackBorderRadius.Value(), 0.0)) {
142 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetTrackBorderRadius(nativeNode);
143 return panda::JSValueRef::Undefined(vm);
144 }
145
146 GetArkUIInternalNodeAPI()->GetSliderModifier().SetTrackBorderRadius(nativeNode,
147 trackBorderRadius.Value(), static_cast<int>(trackBorderRadius.Unit()));
148 return panda::JSValueRef::Undefined(vm);
149 }
150
ResetTrackBorderRadius(ArkUIRuntimeCallInfo * runtimeCallInfo)151 ArkUINativeModuleValue SliderBridge::ResetTrackBorderRadius(ArkUIRuntimeCallInfo* runtimeCallInfo)
152 {
153 EcmaVM* vm = runtimeCallInfo->GetVM();
154 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
155 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
156 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
157 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetTrackBorderRadius(nativeNode);
158 return panda::JSValueRef::Undefined(vm);
159 }
160
SetStepColor(ArkUIRuntimeCallInfo * runtimeCallInfo)161 ArkUINativeModuleValue SliderBridge::SetStepColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
162 {
163 EcmaVM* vm = runtimeCallInfo->GetVM();
164 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
165 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
166 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
167 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
168 Color color;
169 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
170 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetStepColor(nativeNode);
171 } else {
172 GetArkUIInternalNodeAPI()->GetSliderModifier().SetStepColor(nativeNode, color.GetValue());
173 }
174
175 return panda::JSValueRef::Undefined(vm);
176 }
177
ResetStepColor(ArkUIRuntimeCallInfo * runtimeCallInfo)178 ArkUINativeModuleValue SliderBridge::ResetStepColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
179 {
180 EcmaVM* vm = runtimeCallInfo->GetVM();
181 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
182 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
183 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
184 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetStepColor(nativeNode);
185 return panda::JSValueRef::Undefined(vm);
186 }
187
SetBlockBorderColor(ArkUIRuntimeCallInfo * runtimeCallInfo)188 ArkUINativeModuleValue SliderBridge::SetBlockBorderColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
189 {
190 EcmaVM* vm = runtimeCallInfo->GetVM();
191 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
192 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
193 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
194 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
195 Color color;
196 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
197 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockBorderColor(nativeNode);
198 } else {
199 GetArkUIInternalNodeAPI()->GetSliderModifier().SetBlockBorderColor(nativeNode, color.GetValue());
200 }
201 return panda::JSValueRef::Undefined(vm);
202 }
203
ResetBlockBorderColor(ArkUIRuntimeCallInfo * runtimeCallInfo)204 ArkUINativeModuleValue SliderBridge::ResetBlockBorderColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
205 {
206 EcmaVM* vm = runtimeCallInfo->GetVM();
207 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
208 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
209 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
210 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockBorderColor(nativeNode);
211 return panda::JSValueRef::Undefined(vm);
212 }
213
SetBlockBorderWidth(ArkUIRuntimeCallInfo * runtimeCallInfo)214 ArkUINativeModuleValue SliderBridge::SetBlockBorderWidth(ArkUIRuntimeCallInfo* runtimeCallInfo)
215 {
216 EcmaVM* vm = runtimeCallInfo->GetVM();
217 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
218 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
219 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
220 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
221
222 CalcDimension blockBorderWidth;
223 if (!ArkTSUtils::ParseJsDimensionVp(vm, secondArg, blockBorderWidth)) {
224 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockBorderWidth(nativeNode);
225 return panda::JSValueRef::Undefined(vm);
226 }
227
228 if (LessNotEqual(blockBorderWidth.Value(), 0.0)) {
229 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockBorderWidth(nativeNode);
230 return panda::JSValueRef::Undefined(vm);
231 }
232
233 GetArkUIInternalNodeAPI()->GetSliderModifier().SetBlockBorderWidth(nativeNode,
234 blockBorderWidth.Value(), static_cast<int>(blockBorderWidth.Unit()));
235 return panda::JSValueRef::Undefined(vm);
236 }
237
ResetBlockBorderWidth(ArkUIRuntimeCallInfo * runtimeCallInfo)238 ArkUINativeModuleValue SliderBridge::ResetBlockBorderWidth(ArkUIRuntimeCallInfo* runtimeCallInfo)
239 {
240 EcmaVM* vm = runtimeCallInfo->GetVM();
241 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
242 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
243 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
244 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockBorderWidth(nativeNode);
245 return panda::JSValueRef::Undefined(vm);
246 }
247
SetBlockColor(ArkUIRuntimeCallInfo * runtimeCallInfo)248 ArkUINativeModuleValue SliderBridge::SetBlockColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
249 {
250 EcmaVM* vm = runtimeCallInfo->GetVM();
251 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
252 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
253 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
254 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
255 Color color;
256 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
257 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockColor(nativeNode);
258 } else {
259 GetArkUIInternalNodeAPI()->GetSliderModifier().SetBlockColor(nativeNode, color.GetValue());
260 }
261 return panda::JSValueRef::Undefined(vm);
262 }
263
ResetBlockColor(ArkUIRuntimeCallInfo * runtimeCallInfo)264 ArkUINativeModuleValue SliderBridge::ResetBlockColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
265 {
266 EcmaVM* vm = runtimeCallInfo->GetVM();
267 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
268 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
269 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
270 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockColor(nativeNode);
271 return panda::JSValueRef::Undefined(vm);
272 }
273
SetTrackBackgroundColor(ArkUIRuntimeCallInfo * runtimeCallInfo)274 ArkUINativeModuleValue SliderBridge::SetTrackBackgroundColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
275 {
276 EcmaVM* vm = runtimeCallInfo->GetVM();
277 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
278 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
279 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
280 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
281 Color color;
282 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
283 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetTrackBackgroundColor(nativeNode);
284 } else {
285 GetArkUIInternalNodeAPI()->GetSliderModifier().SetTrackBackgroundColor(nativeNode, color.GetValue());
286 }
287 return panda::JSValueRef::Undefined(vm);
288 }
289
ResetTrackBackgroundColor(ArkUIRuntimeCallInfo * runtimeCallInfo)290 ArkUINativeModuleValue SliderBridge::ResetTrackBackgroundColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
291 {
292 EcmaVM* vm = runtimeCallInfo->GetVM();
293 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
294 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
295 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
296 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetTrackBackgroundColor(nativeNode);
297 return panda::JSValueRef::Undefined(vm);
298 }
299
SetSelectColor(ArkUIRuntimeCallInfo * runtimeCallInfo)300 ArkUINativeModuleValue SliderBridge::SetSelectColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
301 {
302 EcmaVM* vm = runtimeCallInfo->GetVM();
303 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
304 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
305 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
306 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
307 Color color;
308 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
309 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetSelectColor(nativeNode);
310 } else {
311 GetArkUIInternalNodeAPI()->GetSliderModifier().SetSelectColor(nativeNode, color.GetValue());
312 }
313 return panda::JSValueRef::Undefined(vm);
314 }
315
ResetSelectColor(ArkUIRuntimeCallInfo * runtimeCallInfo)316 ArkUINativeModuleValue SliderBridge::ResetSelectColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
317 {
318 EcmaVM* vm = runtimeCallInfo->GetVM();
319 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
320 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
321 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
322 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetSelectColor(nativeNode);
323 return panda::JSValueRef::Undefined(vm);
324 }
325
SetShowSteps(ArkUIRuntimeCallInfo * runtimeCallInfo)326 ArkUINativeModuleValue SliderBridge::SetShowSteps(ArkUIRuntimeCallInfo* runtimeCallInfo)
327 {
328 EcmaVM* vm = runtimeCallInfo->GetVM();
329 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
330 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
331 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
332 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
333 bool flag = secondArg->ToBoolean(vm)->Value();
334 GetArkUIInternalNodeAPI()->GetSliderModifier().SetShowSteps(nativeNode, flag);
335 return panda::JSValueRef::Undefined(vm);
336 }
337
ResetShowSteps(ArkUIRuntimeCallInfo * runtimeCallInfo)338 ArkUINativeModuleValue SliderBridge::ResetShowSteps(ArkUIRuntimeCallInfo* runtimeCallInfo)
339 {
340 EcmaVM* vm = runtimeCallInfo->GetVM();
341 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
342 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
343 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
344 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetShowSteps(nativeNode);
345 return panda::JSValueRef::Undefined(vm);
346 }
347
SetThickness(ArkUIRuntimeCallInfo * runtimeCallInfo)348 ArkUINativeModuleValue SliderBridge::SetThickness(ArkUIRuntimeCallInfo* runtimeCallInfo)
349 {
350 EcmaVM* vm = runtimeCallInfo->GetVM();
351 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
352 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
353 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
354 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
355
356 CalcDimension thickness;
357 if (!ArkTSUtils::ParseJsDimensionVpNG(vm, secondArg, thickness, true)) {
358 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetThickness(nativeNode);
359 return panda::JSValueRef::Undefined(vm);
360 }
361
362 GetArkUIInternalNodeAPI()->GetSliderModifier().SetThickness(nativeNode,
363 thickness.Value(), static_cast<int>(thickness.Unit()));
364 return panda::JSValueRef::Undefined(vm);
365 }
366
ResetThickness(ArkUIRuntimeCallInfo * runtimeCallInfo)367 ArkUINativeModuleValue SliderBridge::ResetThickness(ArkUIRuntimeCallInfo* runtimeCallInfo)
368 {
369 EcmaVM* vm = runtimeCallInfo->GetVM();
370 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
371 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
372 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
373 GetArkUIInternalNodeAPI()->GetSliderModifier().ResetThickness(nativeNode);
374 return panda::JSValueRef::Undefined(vm);
375 }
376
SetBlockStyle(ArkUIRuntimeCallInfo * runtimeCallInfo)377 ArkUINativeModuleValue SliderBridge::SetBlockStyle(ArkUIRuntimeCallInfo* runtimeCallInfo)
378 {
379 EcmaVM* vm = runtimeCallInfo->GetVM();
380 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
381 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
382 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
383 auto* frameNode = reinterpret_cast<FrameNode*>(nativeNode);
384 Framework::JsiCallbackInfo info = Framework::JsiCallbackInfo(runtimeCallInfo);
385 if (!info[1]->IsObject()) {
386 SliderBridge::ResetBlockStyle(runtimeCallInfo);
387 return panda::JSValueRef::Undefined(vm);
388 }
389 auto jsObj = Framework::JSRef<Framework::JSObject>::Cast(info[1]);
390 auto getType = jsObj->GetProperty("type");
391 if (getType->IsNull() || !getType->IsNumber()) {
392 SliderBridge::ResetBlockStyle(runtimeCallInfo);
393 return panda::JSValueRef::Undefined(vm);
394 }
395 auto type = static_cast<SliderModel::BlockStyleType>(getType->ToNumber<int32_t>());
396 if (type == SliderModel::BlockStyleType::IMAGE) {
397 std::string src;
398 auto image = jsObj->GetProperty("image");
399 if (!Framework::JSShapeAbstract::ParseJsMedia(image, src)) {
400 SliderBridge::ResetBlockStyle(runtimeCallInfo);
401 return panda::JSValueRef::Undefined(vm);
402 }
403 std::string bundleName;
404 std::string moduleName;
405 Framework::JSViewAbstract::GetJsMediaBundleInfo(image, bundleName, moduleName);
406 SliderModelNG::SetBlockImage(frameNode, src, bundleName, moduleName);
407 } else if (type == SliderModel::BlockStyleType::SHAPE) {
408 auto shape = jsObj->GetProperty("shape");
409 if (!shape->IsObject()) {
410 SliderBridge::ResetBlockStyle(runtimeCallInfo);
411 return panda::JSValueRef::Undefined(vm);
412 }
413 Framework::JSShapeAbstract* shapeAbstract =
414 Framework::JSRef<Framework::JSObject>::Cast(shape)->Unwrap<Framework::JSShapeAbstract>();
415 if (shapeAbstract == nullptr) {
416 SliderBridge::ResetBlockStyle(runtimeCallInfo);
417 return panda::JSValueRef::Undefined(vm);
418 }
419 SliderModelNG::SetBlockShape(frameNode, shapeAbstract->GetBasicShape());
420 }
421 SliderModelNG::SetBlockType(frameNode, type);
422 return panda::JSValueRef::Undefined(vm);
423 }
424
ResetBlockStyle(ArkUIRuntimeCallInfo * runtimeCallInfo)425 ArkUINativeModuleValue SliderBridge::ResetBlockStyle(ArkUIRuntimeCallInfo* runtimeCallInfo)
426 {
427 EcmaVM* vm = runtimeCallInfo->GetVM();
428 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
429 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
430 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
431 auto* frameNode = reinterpret_cast<FrameNode*>(nativeNode);
432 SliderModelNG::ResetBlockType(frameNode);
433 SliderModelNG::ResetBlockImage(frameNode);
434 SliderModelNG::ResetBlockShape(frameNode);
435 return panda::JSValueRef::Undefined(vm);
436 }
437 } // namespace OHOS::Ace::NG
438