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