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_alphabet_indexer_bridge.h"
16
17 #include "core/interfaces/native/node/node_api.h"
18 #include "bridge/declarative_frontend/jsview/models/indexer_model_impl.h"
19 #include "frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_utils.h"
20 #include "frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_common_bridge.h"
21 namespace OHOS::Ace::NG {
22 namespace {
23 constexpr int NUM_0 = 0;
24 constexpr int NUM_1 = 1;
25 constexpr int NUM_2 = 2;
26 constexpr int NUM_3 = 3;
27 constexpr int NUM_4 = 4;
28 const std::string FORMAT_FONT = "%s|%s|%s";
29 const std::string DEFAULT_FAMILY = "HarmonyOS Sans";
30 constexpr double DEFAULT_POPUP_ITEM_FONT_SIZE = 24.0;
31 constexpr Dimension DEFAULT_FONT_SIZE_VAL = 12.0_fp;
32 const std::string DEFAULT_POPUP_ITEM_FONT_WEIGHT = "medium";
33 constexpr Dimension DEFAULT_POPUP_POSITION_X = 60.0_vp;
34 constexpr Dimension DEFAULT_POPUP_POSITION_Y = 48.0_vp;
35 constexpr double RADIUS_OFFSET = 4.0;
36 } // namespace
37
SetPopupItemFont(ArkUIRuntimeCallInfo * runtimeCallInfo)38 ArkUINativeModuleValue AlphabetIndexerBridge::SetPopupItemFont(ArkUIRuntimeCallInfo* runtimeCallInfo)
39 {
40 EcmaVM* vm = runtimeCallInfo->GetVM();
41 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
42 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(NUM_0);
43 Local<JSValueRef> fontSizeArg = runtimeCallInfo->GetCallArgRef(NUM_1);
44 Local<JSValueRef> weightArg = runtimeCallInfo->GetCallArgRef(NUM_2);
45 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
46 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
47 CalcDimension fontSize;
48 if (!fontSizeArg->IsNull()) {
49 CalcDimension fontSizeData;
50 if (ArkTSUtils::ParseJsDimensionFp(vm, fontSizeArg, fontSizeData) && !fontSizeData.IsNegative() &&
51 fontSizeData.Unit() != DimensionUnit::PERCENT) {
52 fontSize = fontSizeData;
53 }
54 }
55 std::string weight = DEFAULT_POPUP_ITEM_FONT_WEIGHT;
56 if (!weightArg->IsNull() && !weightArg->IsUndefined()) {
57 if (weightArg->IsNumber()) {
58 weight = std::to_string(weightArg->Int32Value(vm));
59 } else {
60 if (!ArkTSUtils::ParseJsString(vm, weightArg, weight) || weight.empty()) {
61 weight = DEFAULT_POPUP_ITEM_FONT_WEIGHT;
62 }
63 }
64 }
65
66 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setPopupItemFont(
67 nativeNode, fontSize.Value(), static_cast<int>(fontSize.Unit()), weight.c_str());
68 return panda::JSValueRef::Undefined(vm);
69 }
70
ResetPopupItemFont(ArkUIRuntimeCallInfo * runtimeCallInfo)71 ArkUINativeModuleValue AlphabetIndexerBridge::ResetPopupItemFont(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 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
77 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
78 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupItemFont(nativeNode);
79 return panda::JSValueRef::Undefined(vm);
80 }
81
SetSelectedFont(ArkUIRuntimeCallInfo * runtimeCallInfo)82 ArkUINativeModuleValue AlphabetIndexerBridge::SetSelectedFont(ArkUIRuntimeCallInfo* runtimeCallInfo)
83 {
84 EcmaVM* vm = runtimeCallInfo->GetVM();
85 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
86 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(NUM_0);
87 Local<JSValueRef> fontSizeArg = runtimeCallInfo->GetCallArgRef(NUM_1);
88 Local<JSValueRef> weightArg = runtimeCallInfo->GetCallArgRef(NUM_2);
89 Local<JSValueRef> fontFamilyArg = runtimeCallInfo->GetCallArgRef(NUM_3);
90 Local<JSValueRef> styleValArg = runtimeCallInfo->GetCallArgRef(NUM_4);
91 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
92 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
93 bool isUndefinedValue = (fontSizeArg->IsNull() || fontSizeArg->IsUndefined()) &&
94 (weightArg->IsNull() || weightArg->IsUndefined()) &&
95 (fontFamilyArg->IsNull() || fontFamilyArg->IsUndefined()) &&
96 (styleValArg->IsNull() || styleValArg->IsUndefined());
97 if (isUndefinedValue) {
98 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetSelectedFont(nativeNode);
99 }
100 CalcDimension fontSizeData(DEFAULT_FONT_SIZE_VAL);
101 std::string fontSize = fontSizeData.ToString();
102 if (!fontSizeArg->IsNull() && !fontSizeArg->IsUndefined() &&
103 ArkTSUtils::ParseJsDimensionFp(vm, fontSizeArg, fontSizeData) && !fontSizeData.IsNegative() &&
104 fontSizeData.Unit() != DimensionUnit::PERCENT) {
105 fontSize = fontSizeData.ToString();
106 }
107 std::string weight = "normal";
108 if (!weightArg->IsNull() && !weightArg->IsUndefined() && (weightArg->IsString(vm) || weightArg->IsNumber())) {
109 weight = weightArg->ToString(vm)->ToString(vm);
110 }
111 std::string fontFamily;
112 if (!ArkTSUtils::ParseJsFontFamiliesToString(vm, fontFamilyArg, fontFamily) || fontFamily.empty()) {
113 fontFamily = DEFAULT_FAMILY;
114 }
115 int32_t styleVal = 0;
116 if (!styleValArg->IsNull() && !styleValArg->IsUndefined() && styleValArg->IsNumber()) {
117 styleVal = styleValArg->Int32Value(vm);
118 }
119 std::string fontInfo =
120 StringUtils::FormatString(FORMAT_FONT.c_str(), fontSize.c_str(), weight.c_str(), fontFamily.c_str());
121 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setSelectedFont(nativeNode, fontInfo.c_str(), styleVal);
122 return panda::JSValueRef::Undefined(vm);
123 }
124
ResetSelectedFont(ArkUIRuntimeCallInfo * runtimeCallInfo)125 ArkUINativeModuleValue AlphabetIndexerBridge::ResetSelectedFont(ArkUIRuntimeCallInfo* runtimeCallInfo)
126 {
127 EcmaVM* vm = runtimeCallInfo->GetVM();
128 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
129 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
130 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
131 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
132 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetSelectedFont(nativeNode);
133 return panda::JSValueRef::Undefined(vm);
134 }
135
SetPopupFont(ArkUIRuntimeCallInfo * runtimeCallInfo)136 ArkUINativeModuleValue AlphabetIndexerBridge::SetPopupFont(ArkUIRuntimeCallInfo* runtimeCallInfo)
137 {
138 EcmaVM* vm = runtimeCallInfo->GetVM();
139 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
140 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(NUM_0);
141 Local<JSValueRef> fontSizeArg = runtimeCallInfo->GetCallArgRef(NUM_1);
142 Local<JSValueRef> weightArg = runtimeCallInfo->GetCallArgRef(NUM_2);
143 Local<JSValueRef> fontFamilyArg = runtimeCallInfo->GetCallArgRef(NUM_3);
144 Local<JSValueRef> styleValArg = runtimeCallInfo->GetCallArgRef(NUM_4);
145 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
146 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
147 bool isUndefinedValue = (fontSizeArg->IsNull() || fontSizeArg->IsUndefined()) &&
148 (weightArg->IsNull() || weightArg->IsUndefined()) &&
149 (fontFamilyArg->IsNull() || fontFamilyArg->IsUndefined()) &&
150 (styleValArg->IsNull() || styleValArg->IsUndefined());
151 if (isUndefinedValue) {
152 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupFont(nativeNode);
153 }
154 CalcDimension fontSizeData(Dimension(DEFAULT_POPUP_ITEM_FONT_SIZE, DimensionUnit::FP));
155 std::string fontSize = fontSizeData.ToString();
156 if (!fontSizeArg->IsNull() && !fontSizeArg->IsUndefined() &&
157 ArkTSUtils::ParseJsDimensionFp(vm, fontSizeArg, fontSizeData) && !fontSizeData.IsNegative() &&
158 fontSizeData.Unit() != DimensionUnit::PERCENT) {
159 fontSize = fontSizeData.ToString();
160 }
161 std::string weight = "normal";
162 if (!weightArg->IsNull() && !weightArg->IsUndefined() && (weightArg->IsString(vm) || weightArg->IsNumber())) {
163 weight = weightArg->ToString(vm)->ToString(vm);
164 }
165 std::string fontFamily;
166 if (!ArkTSUtils::ParseJsFontFamiliesToString(vm, fontFamilyArg, fontFamily) || fontFamily.empty()) {
167 fontFamily = DEFAULT_FAMILY;
168 }
169 int32_t styleVal = 0;
170 if (!styleValArg->IsNull() && !styleValArg->IsUndefined() && styleValArg->IsNumber()) {
171 styleVal = styleValArg->Int32Value(vm);
172 }
173 std::string fontInfo =
174 StringUtils::FormatString(FORMAT_FONT.c_str(), fontSize.c_str(), weight.c_str(), fontFamily.c_str());
175 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setPopupFont(nativeNode, fontInfo.c_str(), styleVal);
176 return panda::JSValueRef::Undefined(vm);
177 }
178
ResetPopupFont(ArkUIRuntimeCallInfo * runtimeCallInfo)179 ArkUINativeModuleValue AlphabetIndexerBridge::ResetPopupFont(ArkUIRuntimeCallInfo* runtimeCallInfo)
180 {
181 EcmaVM* vm = runtimeCallInfo->GetVM();
182 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
183 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
184 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
185 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
186 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupFont(nativeNode);
187 return panda::JSValueRef::Undefined(vm);
188 }
189
SetFont(ArkUIRuntimeCallInfo * runtimeCallInfo)190 ArkUINativeModuleValue AlphabetIndexerBridge::SetFont(ArkUIRuntimeCallInfo* runtimeCallInfo)
191 {
192 EcmaVM* vm = runtimeCallInfo->GetVM();
193 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
194 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(NUM_0);
195 Local<JSValueRef> fontSizeArg = runtimeCallInfo->GetCallArgRef(NUM_1);
196 Local<JSValueRef> weightArg = runtimeCallInfo->GetCallArgRef(NUM_2);
197 Local<JSValueRef> fontFamilyArg = runtimeCallInfo->GetCallArgRef(NUM_3);
198 Local<JSValueRef> styleValArg = runtimeCallInfo->GetCallArgRef(NUM_4);
199 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
200 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
201 bool isUndefinedValue = (fontSizeArg->IsNull() || fontSizeArg->IsUndefined()) &&
202 (weightArg->IsNull() || weightArg->IsUndefined()) &&
203 (fontFamilyArg->IsNull() || fontFamilyArg->IsUndefined()) &&
204 (styleValArg->IsNull() || styleValArg->IsUndefined());
205 if (isUndefinedValue) {
206 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetAlphabetIndexerFont(nativeNode);
207 }
208 CalcDimension fontSizeData(DEFAULT_FONT_SIZE_VAL);
209 std::string fontSize = fontSizeData.ToString();
210 if (!fontSizeArg->IsNull() && !fontSizeArg->IsUndefined() &&
211 ArkTSUtils::ParseJsDimensionFp(vm, fontSizeArg, fontSizeData) && !fontSizeData.IsNegative() &&
212 fontSizeData.Unit() != DimensionUnit::PERCENT) {
213 fontSize = fontSizeData.ToString();
214 }
215 std::string weight = "normal";
216 if (!weightArg->IsNull() && !weightArg->IsUndefined() && (weightArg->IsString(vm) || weightArg->IsNumber())) {
217 weight = weightArg->ToString(vm)->ToString(vm);
218 }
219 std::string fontFamily;
220 if (!ArkTSUtils::ParseJsFontFamiliesToString(vm, fontFamilyArg, fontFamily) || fontFamily.empty()) {
221 fontFamily = DEFAULT_FAMILY;
222 }
223 int32_t styleVal = 0;
224 if (!styleValArg->IsNull() && !styleValArg->IsUndefined() && styleValArg->IsNumber()) {
225 styleVal = styleValArg->Int32Value(vm);
226 }
227 std::string fontInfo =
228 StringUtils::FormatString(FORMAT_FONT.c_str(), fontSize.c_str(), weight.c_str(), fontFamily.c_str());
229 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setAlphabetIndexerFont(
230 nativeNode, fontInfo.c_str(), styleVal);
231 return panda::JSValueRef::Undefined(vm);
232 }
233
ResetFont(ArkUIRuntimeCallInfo * runtimeCallInfo)234 ArkUINativeModuleValue AlphabetIndexerBridge::ResetFont(ArkUIRuntimeCallInfo* runtimeCallInfo)
235 {
236 EcmaVM* vm = runtimeCallInfo->GetVM();
237 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
238 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
239 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
240 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
241 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetAlphabetIndexerFont(nativeNode);
242 return panda::JSValueRef::Undefined(vm);
243 }
244
SetPopupItemBackgroundColor(ArkUIRuntimeCallInfo * runtimeCallInfo)245 ArkUINativeModuleValue AlphabetIndexerBridge::SetPopupItemBackgroundColor(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 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
251 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
252 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
253 Color color;
254 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
255 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupItemBackgroundColor(nativeNode);
256 } else {
257 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setPopupItemBackgroundColor(
258 nativeNode, color.GetValue());
259 }
260 return panda::JSValueRef::Undefined(vm);
261 }
262
ResetPopupItemBackgroundColor(ArkUIRuntimeCallInfo * runtimeCallInfo)263 ArkUINativeModuleValue AlphabetIndexerBridge::ResetPopupItemBackgroundColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
264 {
265 EcmaVM* vm = runtimeCallInfo->GetVM();
266 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
267 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
268 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
269 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
270 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupItemBackgroundColor(nativeNode);
271 return panda::JSValueRef::Undefined(vm);
272 }
273
SetColor(ArkUIRuntimeCallInfo * runtimeCallInfo)274 ArkUINativeModuleValue AlphabetIndexerBridge::SetColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
275 {
276 EcmaVM* vm = runtimeCallInfo->GetVM();
277 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
278 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
279 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
280 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
281 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
282 Color color;
283 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
284 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetAlphabetIndexerColor(nativeNode);
285 } else {
286 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setAlphabetIndexerColor(nativeNode, color.GetValue());
287 }
288 return panda::JSValueRef::Undefined(vm);
289 }
290
ResetColor(ArkUIRuntimeCallInfo * runtimeCallInfo)291 ArkUINativeModuleValue AlphabetIndexerBridge::ResetColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
292 {
293 EcmaVM* vm = runtimeCallInfo->GetVM();
294 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
295 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
296 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
297 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
298 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetAlphabetIndexerColor(nativeNode);
299 return panda::JSValueRef::Undefined(vm);
300 }
301
SetPopupColor(ArkUIRuntimeCallInfo * runtimeCallInfo)302 ArkUINativeModuleValue AlphabetIndexerBridge::SetPopupColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
303 {
304 EcmaVM* vm = runtimeCallInfo->GetVM();
305 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
306 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
307 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
308 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
309 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
310 Color color;
311 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
312 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupColor(nativeNode);
313 } else {
314 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setPopupColor(nativeNode, color.GetValue());
315 }
316 return panda::JSValueRef::Undefined(vm);
317 }
318
ResetPopupColor(ArkUIRuntimeCallInfo * runtimeCallInfo)319 ArkUINativeModuleValue AlphabetIndexerBridge::ResetPopupColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
320 {
321 EcmaVM* vm = runtimeCallInfo->GetVM();
322 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
323 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
324 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
325 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
326 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupColor(nativeNode);
327 return panda::JSValueRef::Undefined(vm);
328 }
329
SetSelectedColor(ArkUIRuntimeCallInfo * runtimeCallInfo)330 ArkUINativeModuleValue AlphabetIndexerBridge::SetSelectedColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
331 {
332 EcmaVM* vm = runtimeCallInfo->GetVM();
333 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
334 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
335 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
336 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
337 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
338 Color color;
339 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
340 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetAlphabetIndexerSelectedColor(nativeNode);
341 } else {
342 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setAlphabetIndexerSelectedColor(
343 nativeNode, color.GetValue());
344 }
345 return panda::JSValueRef::Undefined(vm);
346 }
347
ResetSelectedColor(ArkUIRuntimeCallInfo * runtimeCallInfo)348 ArkUINativeModuleValue AlphabetIndexerBridge::ResetSelectedColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
349 {
350 EcmaVM* vm = runtimeCallInfo->GetVM();
351 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
352 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
353 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
354 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
355 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetAlphabetIndexerSelectedColor(nativeNode);
356 return panda::JSValueRef::Undefined(vm);
357 }
358
SetPopupBackground(ArkUIRuntimeCallInfo * runtimeCallInfo)359 ArkUINativeModuleValue AlphabetIndexerBridge::SetPopupBackground(ArkUIRuntimeCallInfo* runtimeCallInfo)
360 {
361 EcmaVM* vm = runtimeCallInfo->GetVM();
362 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
363 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
364 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
365 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
366 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
367 Color color;
368 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
369 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupBackground(nativeNode);
370 } else {
371 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setPopupBackground(nativeNode, color.GetValue());
372 }
373 return panda::JSValueRef::Undefined(vm);
374 }
375
ResetPopupBackground(ArkUIRuntimeCallInfo * runtimeCallInfo)376 ArkUINativeModuleValue AlphabetIndexerBridge::ResetPopupBackground(ArkUIRuntimeCallInfo* runtimeCallInfo)
377 {
378 EcmaVM* vm = runtimeCallInfo->GetVM();
379 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
380 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
381 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
382 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
383 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupBackground(nativeNode);
384 return panda::JSValueRef::Undefined(vm);
385 }
386
SetSelectedBackgroundColor(ArkUIRuntimeCallInfo * runtimeCallInfo)387 ArkUINativeModuleValue AlphabetIndexerBridge::SetSelectedBackgroundColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
388 {
389 EcmaVM* vm = runtimeCallInfo->GetVM();
390 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
391 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
392 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
393 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
394 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
395 Color color;
396 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
397 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetSelectedBackgroundColor(nativeNode);
398 } else {
399 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setSelectedBackgroundColor(
400 nativeNode, color.GetValue());
401 }
402 return panda::JSValueRef::Undefined(vm);
403 }
404
ResetSelectedBackgroundColor(ArkUIRuntimeCallInfo * runtimeCallInfo)405 ArkUINativeModuleValue AlphabetIndexerBridge::ResetSelectedBackgroundColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
406 {
407 EcmaVM* vm = runtimeCallInfo->GetVM();
408 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
409 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
410 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
411 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
412 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetSelectedBackgroundColor(nativeNode);
413 return panda::JSValueRef::Undefined(vm);
414 }
415
SetPopupUnselectedColor(ArkUIRuntimeCallInfo * runtimeCallInfo)416 ArkUINativeModuleValue AlphabetIndexerBridge::SetPopupUnselectedColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
417 {
418 EcmaVM* vm = runtimeCallInfo->GetVM();
419 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
420 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
421 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
422 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
423 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
424 Color color;
425 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
426 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupUnselectedColor(nativeNode);
427 } else {
428 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setPopupUnselectedColor(nativeNode, color.GetValue());
429 }
430 return panda::JSValueRef::Undefined(vm);
431 }
432
ResetPopupUnselectedColor(ArkUIRuntimeCallInfo * runtimeCallInfo)433 ArkUINativeModuleValue AlphabetIndexerBridge::ResetPopupUnselectedColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
434 {
435 EcmaVM* vm = runtimeCallInfo->GetVM();
436 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
437 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
438 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
439 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
440 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupUnselectedColor(nativeNode);
441 return panda::JSValueRef::Undefined(vm);
442 }
443
SetAlignStyle(ArkUIRuntimeCallInfo * runtimeCallInfo)444 ArkUINativeModuleValue AlphabetIndexerBridge::SetAlignStyle(ArkUIRuntimeCallInfo* runtimeCallInfo)
445 {
446 EcmaVM* vm = runtimeCallInfo->GetVM();
447 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
448 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
449 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
450 Local<JSValueRef> thirdArg = runtimeCallInfo->GetCallArgRef(NUM_2);
451 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
452 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
453 if (!secondArg->IsNumber()) {
454 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetAlignStyle(nativeNode);
455 } else {
456 int32_t alignValue = secondArg->Int32Value(vm);
457 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setAlignStyle(nativeNode, alignValue);
458 }
459 CalcDimension popupHorizontalSpace;
460 if (!thirdArg->IsNull() && !thirdArg->IsUndefined() &&
461 ArkTSUtils::ParseJsDimensionVp(vm, thirdArg, popupHorizontalSpace)) {
462 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setPopupHorizontalSpace(
463 nativeNode, popupHorizontalSpace.Value(), static_cast<int>(popupHorizontalSpace.Unit()));
464 } else {
465 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupHorizontalSpace(nativeNode);
466 }
467 return panda::JSValueRef::Undefined(vm);
468 }
469
ResetAlignStyle(ArkUIRuntimeCallInfo * runtimeCallInfo)470 ArkUINativeModuleValue AlphabetIndexerBridge::ResetAlignStyle(ArkUIRuntimeCallInfo* runtimeCallInfo)
471 {
472 EcmaVM* vm = runtimeCallInfo->GetVM();
473 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
474 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
475 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
476 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
477 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetAlignStyle(nativeNode);
478 return panda::JSValueRef::Undefined(vm);
479 }
480
SetPopupSelectedColor(ArkUIRuntimeCallInfo * runtimeCallInfo)481 ArkUINativeModuleValue AlphabetIndexerBridge::SetPopupSelectedColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
482 {
483 EcmaVM* vm = runtimeCallInfo->GetVM();
484 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
485 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
486 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
487 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
488 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
489 Color color;
490 if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
491 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupSelectedColor(nativeNode);
492 } else {
493 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setPopupSelectedColor(nativeNode, color.GetValue());
494 }
495 return panda::JSValueRef::Undefined(vm);
496 }
497
ResetPopupSelectedColor(ArkUIRuntimeCallInfo * runtimeCallInfo)498 ArkUINativeModuleValue AlphabetIndexerBridge::ResetPopupSelectedColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
499 {
500 EcmaVM* vm = runtimeCallInfo->GetVM();
501 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
502 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
503 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
504 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
505 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupSelectedColor(nativeNode);
506 return panda::JSValueRef::Undefined(vm);
507 }
508
SetUsingPopup(ArkUIRuntimeCallInfo * runtimeCallInfo)509 ArkUINativeModuleValue AlphabetIndexerBridge::SetUsingPopup(ArkUIRuntimeCallInfo* runtimeCallInfo)
510 {
511 EcmaVM* vm = runtimeCallInfo->GetVM();
512 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
513 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
514 Local<JSValueRef> usingPopupArg = runtimeCallInfo->GetCallArgRef(1);
515 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
516 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
517 if (usingPopupArg->IsNull() || usingPopupArg->IsUndefined()) {
518 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetUsingPopup(nativeNode);
519 } else {
520 bool usingPopup = usingPopupArg->ToBoolean(vm)->Value();
521 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setUsingPopup(nativeNode, usingPopup);
522 }
523 return panda::JSValueRef::Undefined(vm);
524 }
525
ResetUsingPopup(ArkUIRuntimeCallInfo * runtimeCallInfo)526 ArkUINativeModuleValue AlphabetIndexerBridge::ResetUsingPopup(ArkUIRuntimeCallInfo* runtimeCallInfo)
527 {
528 EcmaVM* vm = runtimeCallInfo->GetVM();
529 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
530 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
531 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
532 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
533 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetUsingPopup(nativeNode);
534 return panda::JSValueRef::Undefined(vm);
535 }
536
SetSelected(ArkUIRuntimeCallInfo * runtimeCallInfo)537 ArkUINativeModuleValue AlphabetIndexerBridge::SetSelected(ArkUIRuntimeCallInfo* runtimeCallInfo)
538 {
539 EcmaVM* vm = runtimeCallInfo->GetVM();
540 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
541 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
542 Local<JSValueRef> selectedArg = runtimeCallInfo->GetCallArgRef(1);
543 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
544 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
545 int32_t selected = 0;
546 if (selectedArg->IsNull() || selectedArg->IsUndefined() || !ArkTSUtils::ParseJsInteger(vm, selectedArg, selected)) {
547 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetAlphabetIndexerSelected(nativeNode);
548 } else {
549 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setAlphabetIndexerSelected(nativeNode, selected);
550 }
551 return panda::JSValueRef::Undefined(vm);
552 }
553
ResetSelected(ArkUIRuntimeCallInfo * runtimeCallInfo)554 ArkUINativeModuleValue AlphabetIndexerBridge::ResetSelected(ArkUIRuntimeCallInfo* runtimeCallInfo)
555 {
556 EcmaVM* vm = runtimeCallInfo->GetVM();
557 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
558 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
559 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
560 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
561 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetAlphabetIndexerSelected(nativeNode);
562 return panda::JSValueRef::Undefined(vm);
563 }
564
SetItemSize(ArkUIRuntimeCallInfo * runtimeCallInfo)565 ArkUINativeModuleValue AlphabetIndexerBridge::SetItemSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
566 {
567 EcmaVM* vm = runtimeCallInfo->GetVM();
568 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
569 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
570 Local<JSValueRef> itemSizeArg = runtimeCallInfo->GetCallArgRef(1);
571 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
572 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
573 CalcDimension itemSize;
574
575 if (itemSizeArg->IsNull() || itemSizeArg->IsUndefined()) {
576 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetItemSize(nativeNode);
577 }
578
579 if (ArkTSUtils::ParseJsDimensionVp(vm, itemSizeArg, itemSize) && GreatNotEqual(itemSize.Value(), 0.0) &&
580 itemSize.Unit() != DimensionUnit::PERCENT) {
581 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setItemSize(
582 nativeNode, itemSize.Value(), static_cast<int>(itemSize.Unit()));
583 } else {
584 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetItemSize(nativeNode);
585 }
586 return panda::JSValueRef::Undefined(vm);
587 }
588
ResetItemSize(ArkUIRuntimeCallInfo * runtimeCallInfo)589 ArkUINativeModuleValue AlphabetIndexerBridge::ResetItemSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
590 {
591 EcmaVM* vm = runtimeCallInfo->GetVM();
592 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
593 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
594 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
595 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
596 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetItemSize(nativeNode);
597 return panda::JSValueRef::Undefined(vm);
598 }
599
SetPopupPosition(ArkUIRuntimeCallInfo * runtimeCallInfo)600 ArkUINativeModuleValue AlphabetIndexerBridge::SetPopupPosition(ArkUIRuntimeCallInfo* runtimeCallInfo)
601 {
602 EcmaVM* vm = runtimeCallInfo->GetVM();
603 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
604 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(NUM_0);
605 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
606 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
607 Local<JSValueRef> sizeX = runtimeCallInfo->GetCallArgRef(NUM_1);
608 Local<JSValueRef> sizeY = runtimeCallInfo->GetCallArgRef(NUM_2);
609 CalcDimension x;
610 CalcDimension y;
611 if (sizeX->IsNull() || sizeX->IsUndefined() || !ArkTSUtils::ParseJsDimensionVp(vm, sizeX, x)) {
612 x = DEFAULT_POPUP_POSITION_X;
613 }
614 if (sizeY->IsNull() || sizeY->IsUndefined() || !ArkTSUtils::ParseJsDimensionVp(vm, sizeY, y)) {
615 y = DEFAULT_POPUP_POSITION_Y;
616 }
617 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setPopupPosition(
618 nativeNode, x.Value(), static_cast<int>(x.Unit()), y.Value(), static_cast<int>(y.Unit()));
619 return panda::JSValueRef::Undefined(vm);
620 }
621
ResetPopupPosition(ArkUIRuntimeCallInfo * runtimeCallInfo)622 ArkUINativeModuleValue AlphabetIndexerBridge::ResetPopupPosition(ArkUIRuntimeCallInfo* runtimeCallInfo)
623 {
624 EcmaVM* vm = runtimeCallInfo->GetVM();
625 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
626 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
627 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
628 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
629 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupPosition(nativeNode);
630 return panda::JSValueRef::Undefined(vm);
631 }
632
SetPopupItemBorderRadius(ArkUIRuntimeCallInfo * runtimeCallInfo)633 ArkUINativeModuleValue AlphabetIndexerBridge::SetPopupItemBorderRadius(ArkUIRuntimeCallInfo* runtimeCallInfo)
634 {
635 EcmaVM* vm = runtimeCallInfo->GetVM();
636 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
637 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(NUM_0);
638 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
639 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
640 Local<JSValueRef> radiusArg = runtimeCallInfo->GetCallArgRef(NUM_1);
641
642 CalcDimension radius;
643 CalcDimension popupRadius;
644 if (radiusArg->IsNull() || radiusArg->IsUndefined() || !radiusArg->IsNumber()) {
645 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupItemBorderRadius(nativeNode);
646 } else {
647 ArkTSUtils::ParseJsDimensionVp(vm, radiusArg, radius);
648 popupRadius.SetValue(radius.Value() + RADIUS_OFFSET);
649 popupRadius.SetUnit(DimensionUnit::VP);
650 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setPopupItemBorderRadius(nativeNode, radius.Value(),
651 static_cast<int>(radius.Unit()), popupRadius.Value(), static_cast<int>(popupRadius.Unit()));
652 }
653 return panda::JSValueRef::Undefined(vm);
654 }
655
ResetPopupItemBorderRadius(ArkUIRuntimeCallInfo * runtimeCallInfo)656 ArkUINativeModuleValue AlphabetIndexerBridge::ResetPopupItemBorderRadius(ArkUIRuntimeCallInfo* runtimeCallInfo)
657 {
658 EcmaVM* vm = runtimeCallInfo->GetVM();
659 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
660 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
661 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
662 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
663 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupItemBorderRadius(nativeNode);
664 return panda::JSValueRef::Undefined(vm);
665 }
666
SetItemBorderRadius(ArkUIRuntimeCallInfo * runtimeCallInfo)667 ArkUINativeModuleValue AlphabetIndexerBridge::SetItemBorderRadius(ArkUIRuntimeCallInfo* runtimeCallInfo)
668 {
669 EcmaVM* vm = runtimeCallInfo->GetVM();
670 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
671 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
672 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
673 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
674 Local<JSValueRef> radiusArg = runtimeCallInfo->GetCallArgRef(NUM_1);
675 auto radius = CalcDimension(ZERO_RADIUS, DimensionUnit::VP);
676 auto indexerRadius = Dimension(ZERO_RADIUS, DimensionUnit::VP);
677 if (radiusArg->IsNull() || radiusArg->IsUndefined() || !radiusArg->IsNumber()) {
678 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetItemBorderRadius(nativeNode);
679 } else {
680 ArkTSUtils::ParseJsDimensionVp(vm, radiusArg, radius);
681 indexerRadius.SetValue(radius.Value() + RADIUS_OFFSET);
682 indexerRadius.SetUnit(DimensionUnit::VP);
683 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setItemBorderRadius(nativeNode, radius.Value(),
684 static_cast<int>(radius.Unit()), indexerRadius.Value(), static_cast<int>(indexerRadius.Unit()));
685 }
686 return panda::JSValueRef::Undefined(vm);
687 }
688
ResetItemBorderRadius(ArkUIRuntimeCallInfo * runtimeCallInfo)689 ArkUINativeModuleValue AlphabetIndexerBridge::ResetItemBorderRadius(ArkUIRuntimeCallInfo* runtimeCallInfo)
690 {
691 EcmaVM* vm = runtimeCallInfo->GetVM();
692 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
693 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
694 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
695 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
696 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetItemBorderRadius(nativeNode);
697 return panda::JSValueRef::Undefined(vm);
698 }
699
SetPopupBackgroundBlurStyle(ArkUIRuntimeCallInfo * runtimeCallInfo)700 ArkUINativeModuleValue AlphabetIndexerBridge::SetPopupBackgroundBlurStyle(ArkUIRuntimeCallInfo* runtimeCallInfo)
701 {
702 EcmaVM* vm = runtimeCallInfo->GetVM();
703 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
704 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
705 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
706 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
707 Local<JSValueRef> blurStyleArg = runtimeCallInfo->GetCallArgRef(NUM_1);
708 int32_t blurStyle = blurStyleArg->Int32Value(vm);
709 if (!ArkTSUtils::ParseJsInteger(vm, blurStyleArg, blurStyle)) {
710 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupBackgroundBlurStyle(nativeNode);
711 } else {
712 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setPopupBackgroundBlurStyle(nativeNode, blurStyle);
713 }
714 return panda::JSValueRef::Undefined(vm);
715 }
716
ResetPopupBackgroundBlurStyle(ArkUIRuntimeCallInfo * runtimeCallInfo)717 ArkUINativeModuleValue AlphabetIndexerBridge::ResetPopupBackgroundBlurStyle(ArkUIRuntimeCallInfo* runtimeCallInfo)
718 {
719 EcmaVM* vm = runtimeCallInfo->GetVM();
720 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
721 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
722 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
723 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
724 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupBackgroundBlurStyle(nativeNode);
725 return panda::JSValueRef::Undefined(vm);
726 }
SetPopupTitleBackground(ArkUIRuntimeCallInfo * runtimeCallInfo)727 ArkUINativeModuleValue AlphabetIndexerBridge::SetPopupTitleBackground(ArkUIRuntimeCallInfo* runtimeCallInfo)
728 {
729 EcmaVM* vm = runtimeCallInfo->GetVM();
730 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
731 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
732 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
733 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
734 Local<JSValueRef> colorArg = runtimeCallInfo->GetCallArgRef(NUM_1);
735 Color color;
736 if (!ArkTSUtils::ParseJsColorAlpha(vm, colorArg, color)) {
737 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupTitleBackground(nativeNode);
738 } else {
739 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setPopupTitleBackground(nativeNode, color.GetValue());
740 }
741 return panda::JSValueRef::Undefined(vm);
742 }
ResetPopupTitleBackground(ArkUIRuntimeCallInfo * runtimeCallInfo)743 ArkUINativeModuleValue AlphabetIndexerBridge::ResetPopupTitleBackground(ArkUIRuntimeCallInfo* runtimeCallInfo)
744 {
745 EcmaVM* vm = runtimeCallInfo->GetVM();
746 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
747 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
748 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
749 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
750 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetPopupTitleBackground(nativeNode);
751 return panda::JSValueRef::Undefined(vm);
752 }
753
SetAdaptiveWidth(ArkUIRuntimeCallInfo * runtimeCallInfo)754 ArkUINativeModuleValue AlphabetIndexerBridge::SetAdaptiveWidth(ArkUIRuntimeCallInfo* runtimeCallInfo)
755 {
756 EcmaVM* vm = runtimeCallInfo->GetVM();
757 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
758 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
759 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
760 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
761 Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(1);
762
763 CalcDimension width;
764 ArkTSUtils::ParseJsDimensionVpNG(vm, secondArg, width);
765 if (width.Unit() == DimensionUnit::AUTO) {
766 CommonBridge::SetWidth(runtimeCallInfo);
767 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setAdaptiveWidth(nativeNode);
768 return panda::JSValueRef::Undefined(vm);
769 } else {
770 CommonBridge::SetWidth(runtimeCallInfo);
771 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetAdaptiveWidth(nativeNode);
772 }
773 CommonBridge::SetWidth(runtimeCallInfo);
774 return panda::JSValueRef::Undefined(vm);
775 }
776
ResetAdaptiveWidth(ArkUIRuntimeCallInfo * runtimeCallInfo)777 ArkUINativeModuleValue AlphabetIndexerBridge::ResetAdaptiveWidth(ArkUIRuntimeCallInfo* runtimeCallInfo)
778 {
779 CommonBridge::ResetWidth(runtimeCallInfo);
780 EcmaVM* vm = runtimeCallInfo->GetVM();
781 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
782 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
783 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
784 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
785 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetAdaptiveWidth(nativeNode);
786 return panda::JSValueRef::Undefined(vm);
787 }
788
SetAutoCollapse(ArkUIRuntimeCallInfo * runtimeCallInfo)789 ArkUINativeModuleValue AlphabetIndexerBridge::SetAutoCollapse(ArkUIRuntimeCallInfo* runtimeCallInfo)
790 {
791 EcmaVM* vm = runtimeCallInfo->GetVM();
792 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
793 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
794 Local<JSValueRef> autoCollapseArg = runtimeCallInfo->GetCallArgRef(1);
795 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
796 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
797 bool autoCollapse = true;
798 if (autoCollapseArg->IsBoolean()) {
799 autoCollapse = autoCollapseArg->ToBoolean(vm)->Value();
800 }
801 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setAutoCollapse(nativeNode, autoCollapse);
802 return panda::JSValueRef::Undefined(vm);
803 }
804
ResetAutoCollapse(ArkUIRuntimeCallInfo * runtimeCallInfo)805 ArkUINativeModuleValue AlphabetIndexerBridge::ResetAutoCollapse(ArkUIRuntimeCallInfo* runtimeCallInfo)
806 {
807 EcmaVM* vm = runtimeCallInfo->GetVM();
808 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
809 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
810 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
811 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
812 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetAutoCollapse(nativeNode);
813 return panda::JSValueRef::Undefined(vm);
814 }
815
SetEnableHapticFeedback(ArkUIRuntimeCallInfo * runtimeCallInfo)816 ArkUINativeModuleValue AlphabetIndexerBridge::SetEnableHapticFeedback(ArkUIRuntimeCallInfo* runtimeCallInfo)
817 {
818 EcmaVM* vm = runtimeCallInfo->GetVM();
819 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
820 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
821 Local<JSValueRef> hapticFeedbackArg = runtimeCallInfo->GetCallArgRef(1);
822 CHECK_NULL_RETURN(nodeArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
823 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
824 bool isHapticEnable = true;
825 if (hapticFeedbackArg->IsBoolean()) {
826 isHapticEnable = hapticFeedbackArg->ToBoolean(vm)->Value();
827 }
828 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->setEnableHapticFeedback(nativeNode, isHapticEnable);
829 return panda::JSValueRef::Undefined(vm);
830 }
831
ResetEnableHapticFeedback(ArkUIRuntimeCallInfo * runtimeCallInfo)832 ArkUINativeModuleValue AlphabetIndexerBridge::ResetEnableHapticFeedback(ArkUIRuntimeCallInfo* runtimeCallInfo)
833 {
834 EcmaVM* vm = runtimeCallInfo->GetVM();
835 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
836 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
837 CHECK_NULL_RETURN(firstArg->IsNativePointer(vm), panda::JSValueRef::Undefined(vm));
838 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
839 GetArkUINodeModifiers()->getAlphabetIndexerModifier()->resetEnableHapticFeedback(nativeNode);
840 return panda::JSValueRef::Undefined(vm);
841 }
842 } // namespace OHOS::Ace::NG
843