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_swiper_bridge.h"
16
17 #include <string>
18
19 #include "base/geometry/calc_dimension.h"
20 #include "base/geometry/dimension.h"
21 #include "base/log/log_wrapper.h"
22 #include "base/utils/utils.h"
23 #include "core/interfaces/native/node/api.h"
24 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_utils.h"
25 #include "bridge/declarative_frontend/jsview/models/swiper_model_impl.h"
26 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_common_bridge.h"
27
28 namespace OHOS::Ace::NG {
29 namespace {
30 constexpr int32_t CALL_ARG_NODE_INDEX = 0;
31 constexpr int32_t CALL_ARG_VALUE_INDEX = 1;
32 constexpr int32_t CALL_ARG_TYPE_INDEX = 2;
33 constexpr int32_t DISPLAY_ARROW_VALUE = 1;
34 constexpr int32_t ARROW_IS_SHOW_BACKGROUND = 2;
35 constexpr int32_t ARROW_IS_SIDE_BAR_MIDDLE = 3;
36 constexpr int32_t ARROW_BACKGROUND_SIZE = 4;
37 constexpr int32_t ARROW_BACKGROUND_COLOR = 5;
38 constexpr int32_t ARROW_SIZE = 6;
39 constexpr int32_t ARROW_COLOR = 7;
40 constexpr int32_t DISPLAY_ARROW_IS_HOVER_SHOW_INDEX = 8;
41 constexpr int32_t INDICATOR_VALUE_INDEX = 2;
42 constexpr int32_t DIGIT_INDICATOR_FONT_COLOR = 2;
43 constexpr int32_t DIGIT_INDICATOR_SELECTED_FONT_COLOR = 3;
44 constexpr int32_t DIGIT_INDICATOR_DIGIT_FONT_SIZE = 4;
45 constexpr int32_t DIGIT_INDICATOR_DIGIT_FONT_WEIGHT = 5;
46 constexpr int32_t DIGIT_INDICATOR_SELECTED_DIGIT_FONT_SIZE = 6;
47 constexpr int32_t DIGIT_INDICATOR_SELECTED_DIGIT_FONT_WEIGHT = 7;
48 constexpr int32_t DIGIT_INDICATOR_LEFT = 8;
49 constexpr int32_t DIGIT_INDICATOR_TOP = 9;
50 constexpr int32_t DIGIT_INDICATOR_RIGHT = 10;
51 constexpr int32_t DIGIT_INDICATOR_BOTTOM = 11;
52 constexpr int32_t DOT_INDICATOR_ITEM_WIDTH = 2;
53 constexpr int32_t DOT_INDICATOR_ITEM_HEIGHT = 3;
54 constexpr int32_t DOT_INDICATOR_SELECTED_ITEM_WIDTH = 4;
55 constexpr int32_t DOT_INDICATOR_SELECTED_ITEM_HEIGHT = 5;
56 constexpr int32_t DOT_INDICATOR_MASK = 6;
57 constexpr int32_t DOT_INDICATOR_COLOR = 7;
58 constexpr int32_t DOT_INDICATOR_SELECTED_COLOR = 8;
59 constexpr int32_t DOT_INDICATOR_LEFT = 9;
60 constexpr int32_t DOT_INDICATOR_TOP = 10;
61 constexpr int32_t DOT_INDICATOR_RIGHT = 11;
62 constexpr int32_t DOT_INDICATOR_BOTTOM = 12;
63 constexpr double DEFAULT_PERCENT_VALUE = 100.0;
64 } // namespace
65
SetSwiperNextMargin(ArkUIRuntimeCallInfo * runtimeCallInfo)66 ArkUINativeModuleValue SwiperBridge::SetSwiperNextMargin(ArkUIRuntimeCallInfo* runtimeCallInfo)
67 {
68 EcmaVM* vm = runtimeCallInfo->GetVM();
69 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
70 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
71 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
72 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
73 Ace::CalcDimension nextMargin;
74 if (valueArg->IsUndefined() || valueArg->IsNull() ||
75 !ArkTSUtils::ParseJsDimension(vm, valueArg, nextMargin, DimensionUnit::VP) ||
76 LessNotEqual(nextMargin.Value(), 0.0)) {
77 nextMargin.SetValue(0.0);
78 }
79 int32_t nextMarginUnit = static_cast<int32_t>(nextMargin.Unit());
80 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperNextMargin(nativeNode, nextMargin.Value(), nextMarginUnit);
81 return panda::JSValueRef::Undefined(vm);
82 }
ResetSwiperNextMargin(ArkUIRuntimeCallInfo * runtimeCallInfo)83 ArkUINativeModuleValue SwiperBridge::ResetSwiperNextMargin(ArkUIRuntimeCallInfo* runtimeCallInfo)
84 {
85 EcmaVM* vm = runtimeCallInfo->GetVM();
86 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
87 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
88 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
89 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperNextMargin(nativeNode);
90 return panda::JSValueRef::Undefined(vm);
91 }
SetSwiperPrevMargin(ArkUIRuntimeCallInfo * runtimeCallInfo)92 ArkUINativeModuleValue SwiperBridge::SetSwiperPrevMargin(ArkUIRuntimeCallInfo* runtimeCallInfo)
93 {
94 EcmaVM* vm = runtimeCallInfo->GetVM();
95 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
96 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
97 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
98 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
99 Ace::CalcDimension prevMargin;
100 if (valueArg->IsUndefined() || valueArg->IsNull() ||
101 !ArkTSUtils::ParseJsDimension(vm, valueArg, prevMargin, DimensionUnit::VP) ||
102 LessNotEqual(prevMargin.Value(), 0.0)) {
103 prevMargin.SetValue(0.0);
104 }
105 int32_t prevMarginUnit = static_cast<int32_t>(prevMargin.Unit());
106 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperPrevMargin(nativeNode, prevMargin.Value(), prevMarginUnit);
107 return panda::JSValueRef::Undefined(vm);
108 }
ResetSwiperPrevMargin(ArkUIRuntimeCallInfo * runtimeCallInfo)109 ArkUINativeModuleValue SwiperBridge::ResetSwiperPrevMargin(ArkUIRuntimeCallInfo* runtimeCallInfo)
110 {
111 EcmaVM* vm = runtimeCallInfo->GetVM();
112 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
113 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
114 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
115 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperPrevMargin(nativeNode);
116 return panda::JSValueRef::Undefined(vm);
117 }
SetSwiperDisplayCount(ArkUIRuntimeCallInfo * runtimeCallInfo)118 ArkUINativeModuleValue SwiperBridge::SetSwiperDisplayCount(ArkUIRuntimeCallInfo* runtimeCallInfo)
119 {
120 EcmaVM* vm = runtimeCallInfo->GetVM();
121 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
122 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
123 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
124 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
125 if (valueArg->IsNumber() || valueArg->IsString()) {
126 Local<JSValueRef> typeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_TYPE_INDEX);
127 std::string displayCountValue;
128 std::string type = typeArg->ToString(vm)->ToString();
129 if (type == "number") {
130 displayCountValue = std::to_string(valueArg->Int32Value(vm));
131 } else {
132 displayCountValue = valueArg->ToString(vm)->ToString();
133 }
134 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperDisplayCount(
135 nativeNode, displayCountValue.c_str(), type.c_str());
136 } else {
137 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisplayCount(nativeNode);
138 }
139 return panda::JSValueRef::Undefined(vm);
140 }
ResetSwiperDisplayCount(ArkUIRuntimeCallInfo * runtimeCallInfo)141 ArkUINativeModuleValue SwiperBridge::ResetSwiperDisplayCount(ArkUIRuntimeCallInfo* runtimeCallInfo)
142 {
143 EcmaVM* vm = runtimeCallInfo->GetVM();
144 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
145 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
146 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
147 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisplayCount(nativeNode);
148 return panda::JSValueRef::Undefined(vm);
149 }
SetSwiperDisplayArrow(ArkUIRuntimeCallInfo * runtimeCallInfo)150 ArkUINativeModuleValue SwiperBridge::SetSwiperDisplayArrow(ArkUIRuntimeCallInfo* runtimeCallInfo)
151 {
152 EcmaVM* vm = runtimeCallInfo->GetVM();
153 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
154 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
155 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
156 Local<JSValueRef> displayArrowValue = runtimeCallInfo->GetCallArgRef(DISPLAY_ARROW_VALUE);
157 Local<JSValueRef> showBackground = runtimeCallInfo->GetCallArgRef(ARROW_IS_SHOW_BACKGROUND);
158 Local<JSValueRef> isSidebarMiddle = runtimeCallInfo->GetCallArgRef(ARROW_IS_SIDE_BAR_MIDDLE);
159 Local<JSValueRef> backgroundSize = runtimeCallInfo->GetCallArgRef(ARROW_BACKGROUND_SIZE);
160 Local<JSValueRef> backgroundColor = runtimeCallInfo->GetCallArgRef(ARROW_BACKGROUND_COLOR);
161 Local<JSValueRef> arrowSize = runtimeCallInfo->GetCallArgRef(ARROW_SIZE);
162 Local<JSValueRef> arrowColor = runtimeCallInfo->GetCallArgRef(ARROW_COLOR);
163 Local<JSValueRef> isHoverShow = runtimeCallInfo->GetCallArgRef(DISPLAY_ARROW_IS_HOVER_SHOW_INDEX);
164 std::string displayArrowValueStr = std::to_string(displayArrowValue->Int32Value(vm));
165 std::string showBackgroundStr = "2";
166 if (!showBackground->IsUndefined()) {
167 showBackgroundStr = showBackground->ToBoolean(vm)->Value() ? "1" : "0";
168 }
169 std::string isSidebarMiddleStr = "2";
170 if (!isSidebarMiddle->IsUndefined()) {
171 isSidebarMiddleStr = isSidebarMiddle->ToBoolean(vm)->Value() ? "1" : "0";
172 }
173 CalcDimension lengthValue;
174 Color color;
175 std::string backgroundSizeStr =
176 ArkTSUtils::ParseJsDimension(vm, backgroundSize, lengthValue, DimensionUnit::VP, false)
177 ? std::to_string(lengthValue.Value()) + "vp" : "-";
178 std::string backgroundColorStr =
179 ArkTSUtils::ParseJsColorAlpha(vm, backgroundColor, color) ? std::to_string(color.GetValue()) : "-";
180 std::string arrowSizeStr = ArkTSUtils::ParseJsDimension(vm, arrowSize, lengthValue, DimensionUnit::VP, false)
181 ? std::to_string(lengthValue.Value()) + "vp" : "-";
182 std::string arrowColorStr =
183 ArkTSUtils::ParseJsColorAlpha(vm, arrowColor, color) ? std::to_string(color.GetValue()) : "-";
184 std::string isHoverShowStr = "2";
185 if (!isHoverShow->IsUndefined()) {
186 isHoverShowStr = isHoverShow->ToBoolean(vm)->Value() ? "1" : "0";
187 }
188 std::string displayArrowStr = displayArrowValueStr + "|" + showBackgroundStr + "|" + isSidebarMiddleStr + "|" +
189 backgroundSizeStr + "|" + backgroundColorStr + "|" + arrowSizeStr + "|" +
190 arrowColorStr + "|" + isHoverShowStr + "|";
191 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperDisplayArrow(nativeNode, displayArrowStr.c_str());
192 return panda::JSValueRef::Undefined(vm);
193 }
ResetSwiperDisplayArrow(ArkUIRuntimeCallInfo * runtimeCallInfo)194 ArkUINativeModuleValue SwiperBridge::ResetSwiperDisplayArrow(ArkUIRuntimeCallInfo* runtimeCallInfo)
195 {
196 EcmaVM* vm = runtimeCallInfo->GetVM();
197 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
198 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
199 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
200 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisplayArrow(nativeNode);
201 return panda::JSValueRef::Undefined(vm);
202 }
SetSwiperCurve(ArkUIRuntimeCallInfo * runtimeCallInfo)203 ArkUINativeModuleValue SwiperBridge::SetSwiperCurve(ArkUIRuntimeCallInfo* runtimeCallInfo)
204 {
205 EcmaVM* vm = runtimeCallInfo->GetVM();
206 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
207 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
208 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
209 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
210 if (valueArg->IsString()) {
211 std::string curve = valueArg->ToString(vm)->ToString();
212 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperCurve(nativeNode, curve.c_str());
213 } else {
214 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperCurve(nativeNode);
215 }
216 return panda::JSValueRef::Undefined(vm);
217 }
ResetSwiperCurve(ArkUIRuntimeCallInfo * runtimeCallInfo)218 ArkUINativeModuleValue SwiperBridge::ResetSwiperCurve(ArkUIRuntimeCallInfo* runtimeCallInfo)
219 {
220 EcmaVM* vm = runtimeCallInfo->GetVM();
221 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
222 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
223 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
224 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperCurve(nativeNode);
225 return panda::JSValueRef::Undefined(vm);
226 }
SetSwiperDisableSwipe(ArkUIRuntimeCallInfo * runtimeCallInfo)227 ArkUINativeModuleValue SwiperBridge::SetSwiperDisableSwipe(ArkUIRuntimeCallInfo* runtimeCallInfo)
228 {
229 EcmaVM* vm = runtimeCallInfo->GetVM();
230 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
231 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
232 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
233 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
234 if (valueArg->IsBoolean()) {
235 bool disableswipe = valueArg->ToBoolean(vm)->Value();
236 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperDisableSwipe(nativeNode, disableswipe);
237 } else {
238 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisableSwipe(nativeNode);
239 }
240 return panda::JSValueRef::Undefined(vm);
241 }
ResetSwiperDisableSwipe(ArkUIRuntimeCallInfo * runtimeCallInfo)242 ArkUINativeModuleValue SwiperBridge::ResetSwiperDisableSwipe(ArkUIRuntimeCallInfo* runtimeCallInfo)
243 {
244 EcmaVM* vm = runtimeCallInfo->GetVM();
245 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
246 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
247 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
248 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisableSwipe(nativeNode);
249 return panda::JSValueRef::Undefined(vm);
250 }
SetSwiperEffectMode(ArkUIRuntimeCallInfo * runtimeCallInfo)251 ArkUINativeModuleValue SwiperBridge::SetSwiperEffectMode(ArkUIRuntimeCallInfo* runtimeCallInfo)
252 {
253 EcmaVM* vm = runtimeCallInfo->GetVM();
254 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
255 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
256 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
257 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
258 if (valueArg->IsNumber()) {
259 auto edgeEffect = valueArg->Int32Value(vm);
260 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperEffectMode(nativeNode, edgeEffect);
261 } else {
262 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperEffectMode(nativeNode);
263 }
264 return panda::JSValueRef::Undefined(vm);
265 }
ResetSwiperEffectMode(ArkUIRuntimeCallInfo * runtimeCallInfo)266 ArkUINativeModuleValue SwiperBridge::ResetSwiperEffectMode(ArkUIRuntimeCallInfo* runtimeCallInfo)
267 {
268 EcmaVM* vm = runtimeCallInfo->GetVM();
269 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
270 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
271 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
272 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperEffectMode(nativeNode);
273 return panda::JSValueRef::Undefined(vm);
274 }
SetSwiperCachedCount(ArkUIRuntimeCallInfo * runtimeCallInfo)275 ArkUINativeModuleValue SwiperBridge::SetSwiperCachedCount(ArkUIRuntimeCallInfo* runtimeCallInfo)
276 {
277 EcmaVM* vm = runtimeCallInfo->GetVM();
278 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
279 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
280 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
281 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
282 if (valueArg->IsNumber()) {
283 int32_t cachedCount = valueArg->Int32Value(vm);
284 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperCachedCount(nativeNode, cachedCount);
285 } else {
286 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperCachedCount(nativeNode);
287 }
288 return panda::JSValueRef::Undefined(vm);
289 }
ResetSwiperCachedCount(ArkUIRuntimeCallInfo * runtimeCallInfo)290 ArkUINativeModuleValue SwiperBridge::ResetSwiperCachedCount(ArkUIRuntimeCallInfo* runtimeCallInfo)
291 {
292 EcmaVM* vm = runtimeCallInfo->GetVM();
293 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
294 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
295 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
296 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperCachedCount(nativeNode);
297 return panda::JSValueRef::Undefined(vm);
298 }
SetSwiperDisplayMode(ArkUIRuntimeCallInfo * runtimeCallInfo)299 ArkUINativeModuleValue SwiperBridge::SetSwiperDisplayMode(ArkUIRuntimeCallInfo* runtimeCallInfo)
300 {
301 EcmaVM* vm = runtimeCallInfo->GetVM();
302 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
303 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
304 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
305 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
306 if (valueArg->IsNumber()) {
307 int32_t index = valueArg->Int32Value(vm);
308 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperDisplayMode(nativeNode, index);
309 } else {
310 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisplayMode(nativeNode);
311 }
312 return panda::JSValueRef::Undefined(vm);
313 }
ResetSwiperDisplayMode(ArkUIRuntimeCallInfo * runtimeCallInfo)314 ArkUINativeModuleValue SwiperBridge::ResetSwiperDisplayMode(ArkUIRuntimeCallInfo* runtimeCallInfo)
315 {
316 EcmaVM* vm = runtimeCallInfo->GetVM();
317 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
318 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
319 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
320 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisplayMode(nativeNode);
321 return panda::JSValueRef::Undefined(vm);
322 }
SetSwiperItemSpace(ArkUIRuntimeCallInfo * runtimeCallInfo)323 ArkUINativeModuleValue SwiperBridge::SetSwiperItemSpace(ArkUIRuntimeCallInfo* runtimeCallInfo)
324 {
325 EcmaVM* vm = runtimeCallInfo->GetVM();
326 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
327 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
328 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
329 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
330 Ace::CalcDimension itemSpace;
331 if (!ArkTSUtils::ParseJsDimensionVpNG(vm, valueArg, itemSpace) || LessNotEqual(itemSpace.Value(), 0.0)) {
332 itemSpace.SetValue(0.0);
333 }
334 int32_t itemSpaceUnit = static_cast<int32_t>(itemSpace.Unit());
335 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperItemSpace(nativeNode, itemSpace.Value(), itemSpaceUnit);
336 return panda::JSValueRef::Undefined(vm);
337 }
ResetSwiperItemSpace(ArkUIRuntimeCallInfo * runtimeCallInfo)338 ArkUINativeModuleValue SwiperBridge::ResetSwiperItemSpace(ArkUIRuntimeCallInfo* runtimeCallInfo)
339 {
340 EcmaVM* vm = runtimeCallInfo->GetVM();
341 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
342 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
343 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
344 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperItemSpace(nativeNode);
345 return panda::JSValueRef::Undefined(vm);
346 }
SetSwiperVertical(ArkUIRuntimeCallInfo * runtimeCallInfo)347 ArkUINativeModuleValue SwiperBridge::SetSwiperVertical(ArkUIRuntimeCallInfo* runtimeCallInfo)
348 {
349 EcmaVM* vm = runtimeCallInfo->GetVM();
350 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
351 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
352 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
353 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
354 if (valueArg->IsBoolean()) {
355 bool isVertical = valueArg->ToBoolean(vm)->Value();
356 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperVertical(nativeNode, isVertical);
357 } else {
358 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperVertical(nativeNode);
359 }
360 return panda::JSValueRef::Undefined(vm);
361 }
ResetSwiperVertical(ArkUIRuntimeCallInfo * runtimeCallInfo)362 ArkUINativeModuleValue SwiperBridge::ResetSwiperVertical(ArkUIRuntimeCallInfo* runtimeCallInfo)
363 {
364 EcmaVM* vm = runtimeCallInfo->GetVM();
365 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
366 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
367 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
368 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperVertical(nativeNode);
369 return panda::JSValueRef::Undefined(vm);
370 }
SetSwiperLoop(ArkUIRuntimeCallInfo * runtimeCallInfo)371 ArkUINativeModuleValue SwiperBridge::SetSwiperLoop(ArkUIRuntimeCallInfo* runtimeCallInfo)
372 {
373 EcmaVM* vm = runtimeCallInfo->GetVM();
374 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
375 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
376 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
377 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
378 if (valueArg->IsBoolean()) {
379 bool loop = valueArg->ToBoolean(vm)->Value();
380 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperLoop(nativeNode, loop);
381 } else {
382 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperLoop(nativeNode);
383 }
384 return panda::JSValueRef::Undefined(vm);
385 }
ResetSwiperLoop(ArkUIRuntimeCallInfo * runtimeCallInfo)386 ArkUINativeModuleValue SwiperBridge::ResetSwiperLoop(ArkUIRuntimeCallInfo* runtimeCallInfo)
387 {
388 EcmaVM* vm = runtimeCallInfo->GetVM();
389 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
390 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
391 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
392 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperLoop(nativeNode);
393 return panda::JSValueRef::Undefined(vm);
394 }
SetSwiperInterval(ArkUIRuntimeCallInfo * runtimeCallInfo)395 ArkUINativeModuleValue SwiperBridge::SetSwiperInterval(ArkUIRuntimeCallInfo* runtimeCallInfo)
396 {
397 EcmaVM* vm = runtimeCallInfo->GetVM();
398 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
399 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
400 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
401 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
402 if (valueArg->IsNumber()) {
403 int32_t interval = valueArg->Int32Value(vm);
404 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperInterval(nativeNode, interval);
405 } else {
406 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperInterval(nativeNode);
407 }
408 return panda::JSValueRef::Undefined(vm);
409 }
ResetSwiperInterval(ArkUIRuntimeCallInfo * runtimeCallInfo)410 ArkUINativeModuleValue SwiperBridge::ResetSwiperInterval(ArkUIRuntimeCallInfo* runtimeCallInfo)
411 {
412 EcmaVM* vm = runtimeCallInfo->GetVM();
413 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
414 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
415 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
416 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperInterval(nativeNode);
417 return panda::JSValueRef::Undefined(vm);
418 }
SetSwiperAutoPlay(ArkUIRuntimeCallInfo * runtimeCallInfo)419 ArkUINativeModuleValue SwiperBridge::SetSwiperAutoPlay(ArkUIRuntimeCallInfo* runtimeCallInfo)
420 {
421 EcmaVM* vm = runtimeCallInfo->GetVM();
422 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
423 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
424 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
425 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
426 if (valueArg->IsBoolean()) {
427 bool autoPlay = valueArg->ToBoolean(vm)->Value();
428 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperAutoPlay(nativeNode, autoPlay);
429 } else {
430 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperAutoPlay(nativeNode);
431 }
432 return panda::JSValueRef::Undefined(vm);
433 }
ResetSwiperAutoPlay(ArkUIRuntimeCallInfo * runtimeCallInfo)434 ArkUINativeModuleValue SwiperBridge::ResetSwiperAutoPlay(ArkUIRuntimeCallInfo* runtimeCallInfo)
435 {
436 EcmaVM* vm = runtimeCallInfo->GetVM();
437 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
438 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
439 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
440 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperAutoPlay(nativeNode);
441 return panda::JSValueRef::Undefined(vm);
442 }
SetSwiperIndex(ArkUIRuntimeCallInfo * runtimeCallInfo)443 ArkUINativeModuleValue SwiperBridge::SetSwiperIndex(ArkUIRuntimeCallInfo* runtimeCallInfo)
444 {
445 EcmaVM* vm = runtimeCallInfo->GetVM();
446 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
447 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
448 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
449 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
450 if (valueArg->IsNumber()) {
451 int32_t index = valueArg->Int32Value(vm);
452 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperIndex(nativeNode, index);
453 } else {
454 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperIndex(nativeNode);
455 }
456 return panda::JSValueRef::Undefined(vm);
457 }
ResetSwiperIndex(ArkUIRuntimeCallInfo * runtimeCallInfo)458 ArkUINativeModuleValue SwiperBridge::ResetSwiperIndex(ArkUIRuntimeCallInfo* runtimeCallInfo)
459 {
460 EcmaVM* vm = runtimeCallInfo->GetVM();
461 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
462 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
463 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
464 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperIndex(nativeNode);
465 return panda::JSValueRef::Undefined(vm);
466 }
GetStringByValueRef(const EcmaVM * vm,const Local<JSValueRef> & jsValue)467 std::string GetStringByValueRef(const EcmaVM* vm, const Local<JSValueRef>& jsValue)
468 {
469 std::string result = "-";
470 if (jsValue->IsUndefined()) {
471 return result;
472 }
473 CalcDimension calc;
474 result = ArkTSUtils::ParseJsDimension(vm, jsValue, calc, DimensionUnit::VP, true)
475 ? (calc.Unit() == DimensionUnit::PERCENT ? (std::to_string(calc.Value() * DEFAULT_PERCENT_VALUE) + "%")
476 : (std::to_string(calc.Value()) + "vp")) : "0.0_vp";
477 return result;
478 }
GetSwiperDotIndicator(ArkUIRuntimeCallInfo * runtimeCallInfo,EcmaVM * vm)479 std::string GetSwiperDotIndicator(ArkUIRuntimeCallInfo* runtimeCallInfo, EcmaVM* vm)
480 {
481 Local<JSValueRef> itemWidthArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_ITEM_WIDTH);
482 Local<JSValueRef> itemHeightArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_ITEM_HEIGHT);
483 Local<JSValueRef> selectedItemWidthArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_SELECTED_ITEM_WIDTH);
484 Local<JSValueRef> selectedItemHeightArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_SELECTED_ITEM_HEIGHT);
485 Local<JSValueRef> maskArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_MASK);
486 Local<JSValueRef> colorArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_COLOR);
487 Local<JSValueRef> selectedColorArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_SELECTED_COLOR);
488 Local<JSValueRef> leftArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_LEFT);
489 Local<JSValueRef> topArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_TOP);
490 Local<JSValueRef> rightArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_RIGHT);
491 Local<JSValueRef> bottomArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_BOTTOM);
492 CalcDimension calc;
493 std::string itemWidth = ArkTSUtils::ParseJsDimension(vm, itemWidthArg, calc, DimensionUnit::VP, false)
494 ? std::to_string(calc.Value()) + "vp" : "-";
495 std::string itemHeight = ArkTSUtils::ParseJsDimension(vm, itemHeightArg, calc, DimensionUnit::VP, false)
496 ? std::to_string(calc.Value()) + "vp" : "-";
497 std::string selectedItemWidth =
498 ArkTSUtils::ParseJsDimension(vm, selectedItemWidthArg, calc, DimensionUnit::VP, false)
499 ? std::to_string(calc.Value()) + "vp" : "-";
500 std::string selectedItemHeight =
501 ArkTSUtils::ParseJsDimension(vm, selectedItemHeightArg, calc, DimensionUnit::VP, false)
502 ? std::to_string(calc.Value()) + "vp" : "-";
503 std::string mask = "2";
504 if (!maskArg->IsUndefined()) {
505 mask = maskArg->ToBoolean(vm)->Value() ? "1" : "0";
506 }
507 Color color;
508 std::string colorStr = ArkTSUtils::ParseJsColorAlpha(vm, colorArg, color) ? std::to_string(color.GetValue()) : "-";
509 std::string selectedColor =
510 ArkTSUtils::ParseJsColorAlpha(vm, selectedColorArg, color) ? std::to_string(color.GetValue()) : "-";
511 std::string left = GetStringByValueRef(vm, leftArg);
512 std::string top = GetStringByValueRef(vm, topArg);
513 std::string right = GetStringByValueRef(vm, rightArg);
514 std::string bottom = GetStringByValueRef(vm, bottomArg);
515 std::string indicatorStr = itemWidth + "|" + itemHeight + "|" + selectedItemWidth + "|" +
516 selectedItemHeight + "|" + mask + "|" + colorStr + "|" + selectedColor + "|" + left +
517 "|" + top + "|" + right + "|" + bottom;
518 return indicatorStr;
519 }
GetSwiperDigitIndicator(ArkUIRuntimeCallInfo * runtimeCallInfo,EcmaVM * vm)520 std::string GetSwiperDigitIndicator(ArkUIRuntimeCallInfo* runtimeCallInfo, EcmaVM* vm)
521 {
522 Local<JSValueRef> fontColorArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_FONT_COLOR);
523 Local<JSValueRef> selectedFontColorArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_SELECTED_FONT_COLOR);
524 Local<JSValueRef> digitFontSizeArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_DIGIT_FONT_SIZE);
525 Local<JSValueRef> digitFontWeightArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_DIGIT_FONT_WEIGHT);
526 Local<JSValueRef> selectedDigitFontSizeArg =
527 runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_SELECTED_DIGIT_FONT_SIZE);
528 Local<JSValueRef> selectedDigitFontWeightArg =
529 runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_SELECTED_DIGIT_FONT_WEIGHT);
530 Local<JSValueRef> leftArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_LEFT);
531 Local<JSValueRef> topArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_TOP);
532 Local<JSValueRef> rightArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_RIGHT);
533 Local<JSValueRef> bottomArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_BOTTOM);
534 Color color;
535 CalcDimension calc;
536 std::string fontColor =
537 ArkTSUtils::ParseJsColorAlpha(vm, fontColorArg, color) ? std::to_string(color.GetValue()) : "-";
538 std::string selectedFontColor =
539 ArkTSUtils::ParseJsColorAlpha(vm, selectedFontColorArg, color) ? std::to_string(color.GetValue()) : "-";
540 std::string digitFontSize = ArkTSUtils::ParseJsDimension(vm, digitFontSizeArg, calc, DimensionUnit::VP, false)
541 ? std::to_string(calc.Value()) + "vp" : "-";
542 std::string digitFontWeight = digitFontWeightArg->ToString(vm)->ToString();
543 std::string selectedDigitFontSize =
544 ArkTSUtils::ParseJsDimension(vm, selectedDigitFontSizeArg, calc, DimensionUnit::VP, false)
545 ? std::to_string(calc.Value()) + "vp" : "-";
546 std::string selectedDigitFontWeight = selectedDigitFontWeightArg->ToString(vm)->ToString();
547 std::string left = GetStringByValueRef(vm, leftArg);
548 std::string top = GetStringByValueRef(vm, topArg);
549 std::string right = GetStringByValueRef(vm, rightArg);
550 std::string bottom = GetStringByValueRef(vm, bottomArg);
551 std::string indicatorStr = fontColor + "|" + selectedFontColor + "|" + digitFontSize + "|" + digitFontWeight +
552 "|" + selectedDigitFontSize + "|" + selectedDigitFontWeight + "|" + left + "|" + top + "|" + right +
553 "|" + bottom;
554 return indicatorStr;
555 }
SetSwiperIndicator(ArkUIRuntimeCallInfo * runtimeCallInfo)556 ArkUINativeModuleValue SwiperBridge::SetSwiperIndicator(ArkUIRuntimeCallInfo* runtimeCallInfo)
557 {
558 EcmaVM* vm = runtimeCallInfo->GetVM();
559 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
560 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
561 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
562 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
563
564 std::string type = valueArg->ToString(vm)->ToString();
565 std::string indicatorStr = "";
566 if (type == "boolean") {
567 Local<JSValueRef> indicatorArg = runtimeCallInfo->GetCallArgRef(INDICATOR_VALUE_INDEX);
568 std::string indicator = indicatorArg->ToBoolean(vm)->Value() ? "1" : "0";
569 indicatorStr = type + "|" + indicator;
570 } else if (type == "ArkDotIndicator") {
571 indicatorStr = type + "|" + GetSwiperDotIndicator(runtimeCallInfo, vm);
572 } else {
573 indicatorStr = type + "|" + GetSwiperDigitIndicator(runtimeCallInfo, vm);
574 }
575 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperIndicator(nativeNode, indicatorStr.c_str());
576 return panda::JSValueRef::Undefined(vm);
577 }
ResetSwiperIndicator(ArkUIRuntimeCallInfo * runtimeCallInfo)578 ArkUINativeModuleValue SwiperBridge::ResetSwiperIndicator(ArkUIRuntimeCallInfo* runtimeCallInfo)
579 {
580 EcmaVM* vm = runtimeCallInfo->GetVM();
581 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
582 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
583 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
584 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperIndicator(nativeNode);
585 return panda::JSValueRef::Undefined(vm);
586 }
SetSwiperDuration(ArkUIRuntimeCallInfo * runtimeCallInfo)587 ArkUINativeModuleValue SwiperBridge::SetSwiperDuration(ArkUIRuntimeCallInfo* runtimeCallInfo)
588 {
589 EcmaVM* vm = runtimeCallInfo->GetVM();
590 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
591 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
592 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
593 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
594 if (valueArg->IsNumber()) {
595 int32_t duration = valueArg->Int32Value(vm);
596 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperDuration(nativeNode, duration);
597 } else {
598 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDuration(nativeNode);
599 }
600 return panda::JSValueRef::Undefined(vm);
601 }
602
ResetSwiperDuration(ArkUIRuntimeCallInfo * runtimeCallInfo)603 ArkUINativeModuleValue SwiperBridge::ResetSwiperDuration(ArkUIRuntimeCallInfo* runtimeCallInfo)
604 {
605 EcmaVM* vm = runtimeCallInfo->GetVM();
606 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
607 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
608 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
609 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDuration(nativeNode);
610 return panda::JSValueRef::Undefined(vm);
611 }
612
SetSwiperEnabled(ArkUIRuntimeCallInfo * runtimeCallInfo)613 ArkUINativeModuleValue SwiperBridge::SetSwiperEnabled(ArkUIRuntimeCallInfo* runtimeCallInfo)
614 {
615 EcmaVM* vm = runtimeCallInfo->GetVM();
616 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
617 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
618 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
619 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
620 if (valueArg->IsBoolean()) {
621 bool enabled = valueArg->ToBoolean(vm)->Value();
622 GetArkUIInternalNodeAPI()->GetCommonModifier().SetEnabled(nativeNode, enabled);
623 GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperEnabled(nativeNode, enabled);
624 } else {
625 GetArkUIInternalNodeAPI()->GetCommonModifier().ResetEnabled(nativeNode);
626 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperEnabled(nativeNode);
627 }
628 return panda::JSValueRef::Undefined(vm);
629 }
630
ResetSwiperEnabled(ArkUIRuntimeCallInfo * runtimeCallInfo)631 ArkUINativeModuleValue SwiperBridge::ResetSwiperEnabled(ArkUIRuntimeCallInfo* runtimeCallInfo)
632 {
633 EcmaVM* vm = runtimeCallInfo->GetVM();
634 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
635 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
636 void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
637 GetArkUIInternalNodeAPI()->GetCommonModifier().ResetEnabled(nativeNode);
638 GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperEnabled(nativeNode);
639 return panda::JSValueRef::Undefined(vm);
640 }
641 } // namespace OHOS::Ace::NG